請教如何動態設定ADOConnection.ConnectionString? |
答題得分者是:hagar
|
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
|||
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我剛學三層架構,現遇到一個問題,向各位請教! 服務器採用ADO連接數據庫,想能夠動態編輯ConnectionString連接字串,另外寫了一支程式去設定ConnectionString,存入註冊表中,在ADOConnection.BeforeConnect中先讀出連接字串,填入ADOConnection中,客戶端用SocketConnection連接服務器,不知道這樣做為何連接時會出錯,而且是'嚴重錯誤? 謝謝!試試改在RemoteDataModule的Create事件給ConnectionString。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
有何錯誤訊息?
請詳述 錯誤訊息是"Either BOF or EOF is true,or the current record has been deleted, Requested Operation requries a current record." 我服務器端的程式碼如下:
procedure Ttestsrv.ADOConnection1BeforeConnect(Sender: TObject);
var
reg:Tregistry;
begin
reg:=MyOpenKey;//打開註冊表
if reg.ValueExists('Adoconnectstring') then
ADOConnection1.Connectionstring:=reg.ReadString('Adoconnectstring');
ADOConnection1.DefaultDatabase:='OmiSQL01';
MyCloseKey(reg);//關閉註冊表
end; 發表人 - qshljg 於 2003/03/13 13:53:48
|
||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
|||
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
引言: 這是 Delphi 5 對 ADO2.6 的 Bug 參考: http://forum.vclxx.org/topic.php?TOPIC_ID=8675&FORUM_ID=5&CAT_ID=2&Topic_Title=%BD%D0%B0%DDado&Forum_Title=Database --- Have you ever wondered what it would be like?非常感謝您的回答! 現在的問題是,在程序服務器中設定固定的連接字串,可以取出資料,資料表格也有資料記錄,我現在想要的是,能夠在運行時可以動態改變ADO的連接字串,並且改變之后能夠儲存起來,這樣就可以變更資料庫和孤服務器. |
||
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 試試改在RemoteDataModule的Create事件給ConnectionString。 謝謝,我試了一下,這樣運行時,服務器沒有回應,成當機狀態,無法關閉程式,請問還有其他解決辦法嗎?喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
引言: 喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。謝謝!你的意思是說在應用程序服務器的增加一個接口,在增加一個方法,在客戶端調用,產生ConnectionString的值,然後在Create時再傳給ADOConnect.ConnectionString,我要再試一下!非常感謝! |
||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
引言: 1.用 PromptDataSource(Handle, ADOConnection1.ConnectionString); 2.非常感謝您!我按照您說的把ADOExpress進行了升級,果然可以取得資料了,原來真的是delphi本身的問題,現在運行一切正常,還有我在ADOConnection的BeforeConnect事件中填入Connectionstring它的值,是否造成其他負擔,多人使用時是否會有問題,還是應該在RemoteDataModule的create中填入參數?uses ADOConed; begin EditConnectionString(ADOConnection1); end;--- Have you ever wondered what it would be like? |
||
qshljg
一般會員 發表:1 回覆:6 積分:1 註冊:2003-03-13 發送簡訊給我 |
引言: 喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。我按照你的做法,試了一下,結果是在方法中填入ConnectionString可行,而存放到變數中,在Create 中傳給ConnectionString,會出現"login failed for users 'Administrator'"錯誤!不知是什麼問題? |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 謝謝!你的意思是說在應用程序服務器的增加一個接口,在增加一個方法,在客戶端調用,產生ConnectionString的值,然後在Create時再傳給ADOConnect.ConnectionString,我要再試一下!非常感謝!大概是這樣沒錯!
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 非常感謝您!我按照您說的把ADOExpress進行了升級,果然可以取得資料了,原來真的是delphi本身的問題,現在運行一切正常,還有我在ADOConnection的BeforeConnect事件中填入Connectionstring它的值,是否造成其他負擔,多人使用時是否會有問題,還是應該在RemoteDataModule的create中填入參數?負擔應該還好,只在每次連線前,多人使用要看RemoteDataModule的Instancing和Threading Model的設定,來設計程式。在哪裡給都可以,只要能Run。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我按照你的做法,試了一下,結果是在方法中填入ConnectionString可行,而存放到變數中,在Create 中傳給ConnectionString,會出現"login failed for users 'Administrator'"錯誤!不知是什麼問題?這我也不知道,不過你可Debug看看,是不是值沒有成功存入變數。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
cocodi
一般會員 發表:21 回覆:65 積分:17 註冊:2002-06-27 發送簡訊給我 |
請教各位高手,延續樓上同學的問題:
使用環境:DB-Server(NT2000 MS-SQL)
AP-Server(NT2000)
Client( Win98) 作成三階架構
AP-SERVER使用Component 為 ADOConnection ADOQuery DataSetProvider Client端 使用Component SocketConnection ClientDataSet DataSource 我的用途是希望Client執行的軟體可以依選擇的的分公司代號分別進入不同的資料庫中(因為某些原因,資料庫要分開放),假設有3間分公司,它們的DataBase
Name 分別為 STOR1,STOR2,STOR3,每個 DataBase 假設各有Custom,OrderMast,
OrderDetail等三個Table , 我的問題是,我該如何做才能使用同一組Client與Ap-Server的軟體,依不同的登入分公司代號去開啟不同的資料庫查詢,如果再將我的問題說的直接一點就是要如何用Client端的登入去改影響 AP-Application 中的ADOConnection.ConnectionString 來達成取得不同資料源的目地, 還請見諒,講了這麼一堆,P.S.我找了KTOP關於ADO的Topic還有李維先生的分散式多層應用(系統篇)好像沒講到這些 Cocodi
|
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 請教各位高手,延續樓上同學的問題: 使用環境:DB-Server(NT2000 MS-SQL) AP-Server(NT2000) Client( Win98) 作成三階架構 AP-SERVER使用Component 為 ADOConnection ADOQuery DataSetProvider Client端 使用Component SocketConnection ClientDataSet DataSource 我的用途是希望Client執行的軟體可以依選擇的的分公司代號分別進入不同的資料庫中(因為某些原因,資料庫要分開放),假設有3間分公司,它們的DataBase Name 分別為 STOR1,STOR2,STOR3,每個 DataBase 假設各有Custom,OrderMast, OrderDetail等三個Table , 我的問題是,我該如何做才能使用同一組Client與Ap-Server的軟體,依不同的登入分公司代號去開啟不同的資料庫查詢,如果再將我的問題說的直接一點就是要如何用Client端的登入去改影響 AP-Application 中的ADOConnection.ConnectionString 來達成取得不同資料源的目地, 還請見諒,講了這麼一堆,P.S.我找了KTOP關於ADO的Topic還有李維先生的分散式多層應用(系統篇)好像沒講到這些 Cocodi使用ClientDataSet ADO有無法Locate、Filter、參數使用中文問題。最近在寫三層式系統架構文章,寫到這裡就不曉得怎樣寫下去了,只想怎麼去解決! Delphi5和Delphi6都有這個問題,Delphi7沒測過。 言歸正傳: 1.讓使用者選擇登入的公司別 2.所有使用者只存到一個Database,再判斷使用者是要登入哪一個資料庫 在AppServer判斷後,改變ADO ConnectionString,前提是每一個連進的Client都要有一份對應的Server程式,這樣才不會相衝,怎樣判斷?在後端的Form上秀出登入者的RDM名稱即可。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
cocodi
一般會員 發表:21 回覆:65 積分:17 註冊:2002-06-27 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: Jieshu兄: 個人領誤不到,可否再說明清楚一點 cocodi不然你就先試看看,切過去有沒有問題,先傳參數給Server,Server依參數給ADOConnection1不同的ConnectionString
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
cocodi
一般會員 發表:21 回覆:65 積分:17 註冊:2002-06-27 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 謝謝jieshu兄,我照你說的方法,在AP-SERVER 寫一段 procedure togetpara(tpara:String); 在 commandtext 送出前,用tpara來接收 client-ap傳過來的 string, 再將string 代入ADOConnection 再open client端的 ClientDataSet.open即可 問提已經解決了 THANK'S記得開兩個Client同時連,但用不同公司代號登入,看會不會影響前一個登入的資料庫連接。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
cocodi
一般會員 發表:21 回覆:65 積分:17 註冊:2002-06-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |