有關用DLL連結資料庫查詢 |
尚未結案
|
edwardweng
一般會員 ![]() ![]() 發表:29 回覆:5 積分:6 註冊:2003-04-16 發送簡訊給我 |
|
likush
高階會員 ![]() ![]() ![]() ![]() 發表:5 回覆:235 積分:103 註冊:2002-10-08 發送簡訊給我 |
個人小建議,有錯請指正。
不知道您所要傳的僅為單純訊息告知原程式或查詢結果?
function SendData:WideString;
Begin
AdoQuery1.Close;
AdoQuery1.Sql.Clear;
AdoQuery1.Sql.Add( SQL Command);
AdoQuery1.Open;
If Not AdoQuery1.Isempty Then
Result := 'Ok'
Else
Result := 'Not';
ENd; 記得exports SendData;
站上高手對該類問題均有相當多的建議,相信加以搜尋一下,對您幫助相當大。 =========================
讀萬卷書~不如來K.TOP走一遭
=========================
|
bigdogchina
版主 ![]() ![]() ![]() ![]() ![]() 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
不好意思,小弟插個花:
小弟是這樣實做的,請您參考參考:
//dll主程式 library erpsend; uses SysUtils, Classes, Forms, msgdata in 'msgdata.pas' {data: TDataModule}; {$R *.res} function msgsend(MsgNo:Integer;AccNo:String;sAccNo:String;sName:String;sDepNo: String;sDepName:String;SysName:String;msg:string):Integer;stdcall; begin try //根據參數更新SQL server with data.Tmsg do begin append; FieldByName('MsgNo').AsInteger:=MsgNo; FieldByName('AccNo').AsString:=AccNo; FieldByName('sAccNo').AsString:=sAccNo; FieldByName('sName').AsString:=sName; FieldByName('sDepNo').AsString:=sDepNo; FieldByName('sDepName').AsString:=sDepName; FieldByName('SysName').AsString:=SysName; FieldByName('sMsgTxt').AsString:=msg; FieldByName('sTime').AsString:=FormatDateTime('yyyy/mm/dd hh:mm',now); post; end; msgsend:=1;//成功返回1 except msgsend:=0;//失敗返回0 end; end; exports msgsend INDEX 1; begin Application.CreateForm(TData, Data);//dll調用時自動初始化資料ado連接 end. //資料模組DataModule單元 unit msgdata; interface uses SysUtils, Classes, DB, ADODB,Dialogs; type Tdata = class(TDataModule) ADOCon: TADOConnection; Tmsg: TADOTable; procedure DataModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var data: Tdata; implementation {$R *.dfm} procedure Tdata.DataModuleCreate(Sender: TObject); begin try with ADOCon do //動態建立與sql server 連接 begin ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=erpmsg;Data Source=bill'; {其中:erpmsg爲資料庫名,bill爲伺服器名} Open('erpuser','erp'); {其中:erpuser爲用戶名,erp這密碼} end; tmsg.TableName:='msgtxt'; tmsg.active:=true; {若此處讀取外部配置文件,如ini文件,可實現SQL主機、用戶、密碼等資訊的靈活修改 } except SHOWMESSAGE('連接資料伺服器失敗!'); end; end; end.這樣就可以在一些對ado支援不好的語言如vfp等中實際ado資料連接與更新,避免了用戶端odbc設置,不過在用戶電腦上要設一下sql用戶端,最簡單的辦法是寫入如下註冊表資訊: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo] "BILL"="DBMSSOCN,BILL,1433" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\TDS] "BILL"="7.0" PS:)以上爲Win2000註冊表格式
------
人生在勤,不索何获? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |