請問有關動態建立ADOQuery的方法 |
尚未結案
|
DoubleFish2004
一般會員 發表:6 回覆:12 積分:3 註冊:2004-05-25 發送簡訊給我 |
各位大大好:
小弟現正要寫一個沒有Form的DLL檔
其中的有一連串的PROCEDURE負責存取資料庫的資料
因此想用在PROCEDURE裡動態建立ADOQuery的方式來存取
然後在PROCEDURE結束前Free掉該ADOQuery
請問該注意哪些地方呢?
小弟之前寫了一個測試的PROCEDURE
結果都會在設定ADOQuery的ConnectionString的地方出現錯誤
小弟用的是Access本地資料庫(普通用FORM建立ADO存取正常)
並使用Jet OLEDB 4.0存取 感謝各位大大幫忙>
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
DoubleFish2004
一般會員 發表:6 回覆:12 積分:3 註冊:2004-05-25 發送簡訊給我 |
|
DoubleFish2004
一般會員 發表:6 回覆:12 積分:3 註冊:2004-05-25 發送簡訊給我 |
剛剛研究了一下DataModule後
照著版主大大Micky的方法在DLL檔中加入一個DataModule
然後把ADOQuery加入其中並設定好ConnectionString和SQL
然後寫入下列的外部呼叫FUNCTION
可是一直都無法正確呼叫><會出現Access Violation問題
麻煩大大們幫我看一下我哪裡觀念錯誤了~謝謝~ FUNCTION DB_QUERY( TABLE : STRING ; KEY : STRING ; VALUE : STRING ; DATA : STRING )
: INTEGER ; STDCALL;
begin
result := 0;
TRY
DMODULE.DoCreate;
WITH DMODULE.ADOQuery DO
begin
SQL.Clear;
SQL.Add( 'SELECT * FROM ' TABLE );
SQL.Add( 'WHERE ' KEY ' = ' VALUE );
Close;
Open;
result := FieldByName( DATA ).AsInteger;
end;
FINALLY
DMODULE.Free;
end;
end;
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
試了一下, 好像沒有問題, Code 如下, 參考看看:
library TestDll; uses Forms, SysUtils, Classes, ADODB; FUNCTION DB_QUERY( TABLE : STRING ; KEY : STRING ; VALUE : STRING ; DATA : STRING ): INTEGER ; STDCALL; var DMODULE:TDATAMODULE; ADOQ: TADOQuery; begin DMODULE := TDATAMODULE.Create(Application); ADOQ := TADOQuery.Create(DMODULE); ADOQ.ConnectionString := '...'; // 請自行更改 Connect String TRY WITH ADOQ DO begin SQL.Clear; SQL.Add( 'SELECT ' DATA ' FROM ' TABLE ); SQL.Add( 'WHERE ' KEY ' = ' VALUE ); Close; Open; result := FieldByName( DATA ).AsInteger; end; FINALLY DMODULE.Free; end; end; exports DB_QUERY; end. |
DoubleFish2004
一般會員 發表:6 回覆:12 積分:3 註冊:2004-05-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |