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

有關用DLL連結資料庫查詢

尚未結案
edwardweng
一般會員


發表:29
回覆:5
積分:6
註冊:2003-04-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-09 18:11:19 IP:211.21.xxx.xxx 未訂閱
請問要如何在DLL內寫一個用ADOQUERY元件來連結資料庫查詢資料,然後傳回訊息給呼叫DLL的程式。謝謝!!
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-10 03:00:48 IP:218.163.xxx.xxx 未訂閱
個人小建議,有錯請指正。 不知道您所要傳的僅為單純訊息告知原程式或查詢結果? 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-11 13:54:39 IP:211.162.xxx.xxx 未訂閱
不好意思,小弟插個花: 小弟是這樣實做的,請您參考參考:

//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註冊表格式 ================================= <>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
系統時間:2024-06-29 4:52:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!