線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1498
推到 Plurk!
推到 Facebook!

權限設定與booleantostr函式的問題

 
Target.ccie
一般會員


發表:6
回覆:2
積分:1
註冊:2006-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-10-02 13:07:48 IP:61.223.xxx.xxx 未訂閱

以下是我參考書上面的程式用的是DELPHI "7"
下面是將資料庫中的會員權限"讀"出來
BNENO是會員編號、PMSFUN是權限的名稱PMSPMS是權限的TRUE/FLASE的設定
而我RUN的時後BOOLEANTOSTR這個會出現在錯誤,然後我USE了SysUtils『論壇中找到的』
結果還是有錯誤identifier redeclared : 'SysUtils' 請問如何解決

這程式在一個頁面時,能打勾,選擇會員能否使用哪一項功能
他這個寫法是將功能跟會員編號連在一起
所以整個程式將會出現很多次"功能"的程式
是否有更簡潔的方式來寫
是否有高手能po個範例or說個大方向thx

function WRITE_BMAN_PMS(BNENO,PMSFUN:STRING;VALUE:BOOLEAN):BOOLEAN ;
VAR QDBCHECK : TQUERY;
begin
TRY
QDBCHECK.Close;
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('select * From SYSPMS');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO ''' ');
QDBCHECK.SQL.Add('AND PMSFUN = ''' PMSFUN ''' ');
QDBCHECK.Close ;
QDBCHECK.Open;
TRY
IF QDBCHECK.Eof = FALSE THEN
IF QDBCHECK.Eof = FALSE THEN
BEGIN //FOUND
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('UPDATE SYSPMS SET ');
QDBCHECK.SQL.Add('PMSPMS = ''' BOOLEANTOSTR(VALUE) '''');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO '''');
QDBCHECK.SQL.Add(' AND PMSFUN = ''' PMSFUN '''');
QDBCHECK.ExecSQL;
END ELSE BEGIN
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('INSERT INTO SYSMPS');
QDBCHECK.SQL.Add('(BNENO,PMSFUN,PMSPMS)');
QDBCHECK.SQL.Add('VALUES');
QDBCHECK.SQL.Add('(''' BNENO ''',');
QDBCHECK.SQL.Add(' ''' PMSFUN ''',');
QDBCHECK.SQL.Add(' ' BOOLEANTOSTR(VALUE) ')');
QDBCHECK.ExecSQL ;
END;
RESULT := TRUE ;
EXCEPT
RESULT := FALSE ;
END;
FINALLY
QDBCHECK.Free;
END;
end;

eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-10-02 17:27:54 IP:211.75.xxx.xxx 未訂閱

(1) identifier redeclared : 'SysUtils' 代表 在uses區塊重覆宣告 SysUtils
(2) QDBCHECK 是Local 變數 未Create 就要使用 應該會產生Exception才對
(3) QDBCHECK 還在OPEN狀態 又要執行SQL Command 也會產生Exception
function 修改如下:
function WRITE_BMAN_PMS(BNENO,PMSFUN:STRING;VALUE:BOOLEAN):BOOLEAN ;
VAR QDBCHECK : TQUERY;
begin
TRY
QDBCHECK := TQUERY.CREATE(SELF);
QDBCHECK .DATABASE := YourDatabase; // or QDBCHECK.DataBaseName := YourDataBaseName;
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('select * From SYSPMS');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO ''' ');
QDBCHECK.SQL.Add('AND PMSFUN = ''' PMSFUN ''' ');
QDBCHECK.Open;
TRY
IF QDBCHECK.Eof = FALSE THEN
BEGIN //FOUND
QDBCHECK.Close
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('UPDATE SYSPMS SET ');
QDBCHECK.SQL.Add('PMSPMS = ''' BOOLEANTOSTR(VALUE) '''');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO '''');
QDBCHECK.SQL.Add(' AND PMSFUN = ''' PMSFUN '''');
QDBCHECK.ExecSQL;
END ELSE BEGIN
QDBCHECK.Close
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('INSERT INTO SYSMPS');
QDBCHECK.SQL.Add('(BNENO,PMSFUN,PMSPMS)');
QDBCHECK.SQL.Add('VALUES');
QDBCHECK.SQL.Add('(''' BNENO ''',');
QDBCHECK.SQL.Add(' ''' PMSFUN ''',');
QDBCHECK.SQL.Add(' ' BOOLEANTOSTR(VALUE) ')');
QDBCHECK.ExecSQL ;
END;
RESULT := TRUE ;
EXCEPT
RESULT := FALSE ;
END;
FINALLY
QDBCHECK.Free;
END;
end;

===================引 用 文 章===================

以下是我參考書上面的程式用的是DELPHI "7"
下面是將資料庫中的會員權限"讀"出來
BNENO是會員編號、PMSFUN是權限的名稱PMSPMS是權限的TRUE/FLASE的設定
而我RUN的時後BOOLEANTOSTR這個會出現在錯誤,然後我USE了SysUtils『論壇中找到的』
結果還是有錯誤identifier redeclared : 'SysUtils' 請問如何解決

這程式在一個頁面時,能打勾,選擇會員能否使用哪一項功能
他這個寫法是將功能跟會員編號連在一起
所以整個程式將會出現很多次"功能"的程式
是否有更簡潔的方式來寫
是否有高手能po個範例or說個大方向thx

function WRITE_BMAN_PMS(BNENO,PMSFUN:STRING;VALUE:BOOLEAN):BOOLEAN ;
VAR QDBCHECK : TQUERY;
begin
TRY
QDBCHECK.Close;
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('select * From SYSPMS');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO ''' ');
QDBCHECK.SQL.Add('AND PMSFUN = ''' PMSFUN ''' ');
QDBCHECK.Close ;
QDBCHECK.Open;
TRY
IF QDBCHECK.Eof = FALSE THEN
IF QDBCHECK.Eof = FALSE THEN
BEGIN //FOUND
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('UPDATE SYSPMS SET ');
QDBCHECK.SQL.Add('PMSPMS = ''' BOOLEANTOSTR(VALUE) '''');
QDBCHECK.SQL.Add('WHERE BNENO = ''' BNENO '''');
QDBCHECK.SQL.Add(' AND PMSFUN = ''' PMSFUN '''');
QDBCHECK.ExecSQL;
END ELSE BEGIN
QDBCHECK.SQL.Clear;
QDBCHECK.SQL.Add('INSERT INTO SYSMPS');
QDBCHECK.SQL.Add('(BNENO,PMSFUN,PMSPMS)');
QDBCHECK.SQL.Add('VALUES');
QDBCHECK.SQL.Add('(''' BNENO ''',');
QDBCHECK.SQL.Add(' ''' PMSFUN ''',');
QDBCHECK.SQL.Add(' ' BOOLEANTOSTR(VALUE) ')');
QDBCHECK.ExecSQL ;
END;
RESULT := TRUE ;
EXCEPT
RESULT := FALSE ;
END;
FINALLY
QDBCHECK.Free;
END;
end;

------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
系統時間:2024-11-23 6:22:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!