麻煩各位高手幫忙小弟解決以下問題:
窗體的一個函數調用datamodule的連接對像(connect_dbms)時就出現missing connection or connectionstring 的錯誤提示!!!請各位高手幫忙解決!!!謝謝!!!
下面是datamodule裡的程序:
unit u_dm;interfaceuses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  DB,
  ADODB,
  IniFiles,
  Registry,
  DateUtils, ComCtrls,Clipbrd, OleServer,unit1, Excel2000, Sockets;type
  TDM = class(TDataModule)
  function readinifiled:string;
  function testConnect(strconn:string):boolean;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    connect_dbms:tadoconnection;//一個公共連接對象
  end;var
  DM: TDM;implementation
uses
  Unit2;
var
  connect:Tinifile;
{$R *.dfm}
function TDM.readinifiled:string;
var                  //斐膘蟀諉趼睫揹
ps_temp:boolean;
filename,
ic_temp,
ds_temp,
ui_temp,
pw_temp,
strconn:string;
begin
 try
  filename:=ExtractFilePath(paramstr(0))+'connection.ini';
 // filename:=extractfilepath('h:\connection.ini');
  connect:=Tinifile.Create(filename);
  ps_temp:=connect.ReadBool('serverconn','Persist Security Info',false);
  ic_temp:=connect.ReadString('serverconn','Initial Catalog','');
  ds_temp:=connect.ReadString('serverconn','Data Source','');
  ui_temp:=connect.ReadString('serverconn','User ID','sa');
  pw_temp:=connect.ReadString('serverconn','Password','');
  if ps_temp=false then
    begin  //NT桄痐諳鍔
     strconn:='Provider=SQLOLEDB.1;Integrated Security=SSPI;';
     strconn:=strconn+'Persist Security Info=false;Initial Catalog='+trim(ic_temp)+';Data Source='+trim(ds_temp)+';';
   end
  else
    begin //SQL桄痐
     strconn:='Provider=SQLOLEDB.1;Password='+trim(pw_temp)+';';
     strconn:=strconn+'Persist Security Info=false;User ID='+trim(ui_temp)+';';
     strconn:=strconn+'Initial Catalog='+trim(ic_temp)+';Data Source='+trim(ds_temp)+'';
    end;
  connect.Destroy;
  result:=strconn;
 except
  //messagedlg('蠟羶衄蛁聊杅擂踱督昢',mterror,[mbok],0);
  strconn:='';
  result:=strconn;
  connect.Destroy;
  halt(0);
 end;end;
//****************************88
function TDM.testConnect(strconn:string):boolean;
var                        //聆彸蟀諉杅擂踱岆瘁傖髡
cnn:Tadoconnection;
begin
 cnn:=tadoconnection.create(application.owner);
 cnn.connectionstring:=strconn;
 cnn.LoginPrompt:=false;
 try
  cnn.open();
  cnn.close;
  cnn.free;
  result:=true;
 except
  result:=false;
  exit;
 end;
end;
//***************************88procedure TDM.DataModuleCreate(Sender: TObject);
var               //膘蕾蟀諉
 strconn:string;
begin
 strconn:=readinifiled();
 //rszl.Edit1.Text:=strconn;
 if (not testconnect(strconn)) then //測試是否能與數據庫連接。問題:但當我在ini文件把數據名//去掉依然沒提示錯誤,我不知道為什麼??????
    begin
      messagedlg('你還沒注冊服務器!',mterror,[mbok],0);
      halt(0);
    end;
 try
  connect_dbms:=tadoconnection.Create(application.owner);
  connect_dbms.LoginPrompt:=false;
  connect_dbms.Provider:='sqloledb.1';
  connect_dbms.ConnectionString:=strconn;
  connect_dbms.Connected:=true;
  connect_dbms.KeepConnection:=true;
 except
  messagedlg('連接數據庫出錯',mterror,[mbok],0);
  halt(0);
 end;
end;
end.而當我在其它窗口調用connect_dbms時就出現missing connection or connectionstring的錯誤提示!?
如以下的調用:
function Trszl.dbgridconnect(yourdbgrid:Tdbgrid;strsql:string;constring:tadoconnection):integer;
var
  adotemp:TAdoquery;
  datatemp:TDataSource;
  i:integer;
begin
  i:=-1;
  try
    adotemp:=tadoquery.Create(application.owner);
    datatemp:=TDataSource.Create(application.owner);
    adotemp.Connection:=dm.connect_dbms;
   // adotemp.Active:=true;
    adotemp.Close;//程序執行到這裡就出現以上錯誤提示!
    adotemp.SQL.Clear;
    adotemp.SQL.Add(strsql);
    adotemp.ExecSQL;
    adotemp.Active:=true;
    datatemp.DataSet:=adotemp;
    yourdbgrid.DataSource:=datatemp;
    i:=yourdbgrid.SelectedRows.Count;
  finally
    adotemp.Close;
    adotemp.Free;
    result:=i;
  end;
end;