全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3070
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

SQL客&#25143;端&#36719;件的&#35774;定&#38382;&#39064;

答題得分者是:malanlk
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#32 引用回覆 回覆 發表時間:2005-09-01 22:02:31 IP:61.219.xxx.xxx 未訂閱
...
  if bConnectOk then
  begin
    Application.Run;
  end;
DATAMODULE中的ADOCONNECTION 在設計時不要連數據庫 所有 OnCreate中 要連到數據庫的運算, 都搬到 OnShow 內
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#33 引用回覆 回覆 發表時間:2005-09-02 07:29:39 IP:222.184.xxx.xxx 未訂閱
Hint] SJMZSF.DPR(51): Value assigned to 'bConnectOk' never used 这个错误提示有没有关系的?我现在正在把所有的ONCREAT中要用到数据库连接的代码全部在向ONSHOW中移动,工作量还很大和烦琐,在慢慢调试。
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#34 引用回覆 回覆 發表時間:2005-09-02 08:02:26 IP:203.69.xxx.xxx 未訂閱
Value assigned to 'bConnectOk' never used    表示 這個變數有指定值, 卻沒用到, 但是 Delphi 的判斷未必準, 所以我才懷疑你是不是    
  if bConnectOk then 沒改到
  begin
    Application.Run;
  end;
您慢慢改....
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#35 引用回覆 回覆 發表時間:2005-09-02 15:15:11 IP:222.184.xxx.xxx 未訂閱
try    if not sqlsetupform.CheckSetupDataOk then     begin     sqlsetupform.ShowModal;      bConnectOk := sqlsetupform.ConnectionTestOk;     end      else begin bconnectok:=true; end; finally 加了一句后那个 Value assigned to 'bConnectOk' never used错误没了。 其它的ONCREAT要用到数据库的操作都搬到ONSHOW中去了。现在最大的问题就在于数据库测试联接上 现在是怎么测都连不成功,我现在用最简单的办法也连不成, begin with datamoduleform.ADOConnection1 do begin ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mzsfwlb;Data Source=ntsj1'; if connected then showmessage('1'); if not connected then showmessage('2'); 我在DATAMODULE中直接在设计时连接是能成功的,我就是把连成功后的代码复 制下来的,(如上) 用您给我的procedure Tsqlsetupform.ConnectTestBtnClick(Sender: TObject); 测试代码也是怎么连都连不成功。
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#36 引用回覆 回覆 發表時間:2005-09-02 16:22:55 IP:222.184.xxx.xxx 未訂閱
malanlk前辈,不知道您能否就这些要求做一个可以正常运行的实例供小弟借鉴一下?
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#37 引用回覆 回覆 發表時間:2005-09-02 19:14:54 IP:203.69.xxx.xxx 未訂閱
ntjrr 兄......... ADOConnection1 的 Connected 只是ㄧ個值, 必須要對值做設定才會進行連接. 也就是你必須 下ㄧ行指令 try ADOConnection1.Connected := True; except end; ADOConnection1 才會開始連線..... 當ADOConnection1 連線成功 Connected 就會維持 True 若失敗(就會有錯誤提示, 所以我用except 把它藏起來)就會變回 False... 這樣說你了解了嗎....? 你在 17 格的程式碼就是對的....
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#38 引用回覆 回覆 發表時間:2005-09-02 20:38:57 IP:222.184.xxx.xxx 未訂閱
测试连接的代码被我试来试去勉强成功了,但我知道这里面还有错误,第一就是try finally的搭配问题,第二就是ELSE的问题,估计层次上不是太清晰的,烦前辈再给我理一理。还有就是写入注册表的代码被加入了引号,不知道会不会影响到取值的准确性?例如我写的是ntsj1取出的值就是'ntsj1'有时候还是''ntsj1''(现在填好后下次启动时还会提示要填的,估计另一处的代码还有一点问题,先不谈那,先把这一段搞定,呵呵)
var
  reg: TRegistry;
begin
  with datamoduleform.ADOConnection1 do
  begin
   ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='  EditLoginName.Text   ';Initial Catalog=mzsfwlb;Data Source='  EditHost.Text ;
    try
    connected:=true;
   if connected=true then
   begin
    ShowMessage('Connection Success!');
    FConnectionTestOk := True;
    reg := TRegistry.Create;
    try
      reg.RootKey := HKEY_CURRENT_USER;
      if Reg.OpenKey('\Software\Cyberhood',True) then 
      begin
        reg.WriteString('LoginName',''''   EditLoginName.Text   '''');
        reg.WriteString('Host',''''   EditHost.Text   '''');
        reg.CloseKey;
      end;
    finally
      reg.Free;
      end;
      end
    else
      Application.MessageBox('测试连接失败,请重新测试或选用其他的服务器','信息提示',MB_OK MB_ICONINFORMATION)
  finally
   end;    end;
end;
  
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#39 引用回覆 回覆 發表時間:2005-09-02 21:22:20 IP:210.68.xxx.xxx 未訂閱
var
  reg: TRegistry;
begin
  FConnectionTestOk := False;
  with datamoduleform.ADOConnection1 do
  begin
    ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='  EditLoginName.Text   ';Initial Catalog=mzsfwlb;Data Source='  EditHost.Text ;
    try
      connected:=true;
      if connected=true then
      begin
        ShowMessage('Connection Success!');
        FConnectionTestOk := True;
        reg := TRegistry.Create;
        try
          reg.RootKey := HKEY_CURRENT_USER;
          if Reg.OpenKey('\Software\Cyberhood',True) then 
          begin
            reg.WriteString('LoginName',EditLoginName.Text);
            reg.WriteString('Host',EditHost.Text);
            reg.CloseKey;
          end;
        finally
          reg.Free;
        end;
      end
      else
        Application.MessageBox('測試連接失敗,請重新測試或選用其他的伺服器','資訊提示',MB_OK MB_ICONINFORMATION)
    finally
    end;
  end;
  if FConnectionTestOk then
    Self.Close; // 關閉 SetupForm
end;
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#40 引用回覆 回覆 發表時間:2005-09-03 07:19:59 IP:222.184.xxx.xxx 未訂閱
以上代码在填入正确的参数后运行基本正常了,在填入错误的参数后,比如服务器名故意填错后,发现执行的流程有错误,流程如下: try connected:=true; 如填错的,它就会跳到 bConnectOk := sqlsetupform.ConnectionTestOk; 然后跳回到dqlsetupform中,执行end;这个end是紧靠第二个finally下面的end; 然后会执行 Self.Close; 上面的错误之处在于:1。 Application.MessageBox('測試連接失敗,請重新測試或選用其他的伺服器','資訊提示',MB_OK MB_ICONINFORMATION)这一行代码不会执行到。2。Self.Close不管连接成功不成功都会执行到的。
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#41 引用回覆 回覆 發表時間:2005-09-03 11:06:10 IP:61.219.xxx.xxx 未訂閱
  FConnectionTestOk := False; //這行有加嗎?
  with datamoduleform.ADOConnection1 do
  begin
    ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='  EditLoginName.Text   ';Initial Catalog=mzsfwlb;Data Source='  EditHost.Text ;
    try
      // connected:=true; //這行改成下列
      try
        Open;
      except
        Application.MessageBox('測試連接失敗,請重新測試或選用其他的伺服器','資訊提示',MB_OK MB_ICONINFORMATION);
      end;
      if connected=true then
      begin
        ShowMessage('Connection Success!');
        FConnectionTestOk := True;
        reg := TRegistry.Create;
        ....
        ....
      end;
      // else  // 這兩行拿掉
      //   Application.MessageBox('測試連接失敗,請重新測試或選用其他的伺服器','資訊提示',MB_OK MB_ICONINFORMATION);
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#42 引用回覆 回覆 發表時間:2005-09-03 12:01:16 IP:222.184.xxx.xxx 未訂閱
前辈,实在不好意思,这个问题麻烦了您这么久,现在基本上都运行成功了,其中可能还会有一点小变化,也就是SQL中填不填密码、数据库名等,可能填有填的写法,不填有不填的写法,这个我自己再摸索去了,本次大的主题因已全部搞清,所以就此结案,再一次感谢malanlk前辈耐心仔细的指教!
------
我的编程起步于ktop,我将永远支持ktop
[<<] [1] [2] [>>]
系統時間:2024-06-02 1:58:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!