我最近在用delphi写组件,具体是想在用组件对象生成数据集ADODataset,然后在客户程序中用datagrid显示,但是在创建组件对象并进行查询后将ADODataset赋值给datasource时却显示:Invalid Pointer operation
这是为什么?
组件中的部分代码:
function TDBLib.ExecuteSqlWithQuery(strSql:String):TADODataSet;stdcall;
//执行一个查询语句
var
ds:TADODataSet;
begin
     ds:=TADODataset.Create(Owner);//从application传过来的
     ds.Connection:=ADOConn;
     ds.CommandText:=strSql;
     ds.Open;
     Result:=ds;
end;function TDBLib.GetColsByName(TableName:String;Condition:String;const ColsName:array of String):TADODataSet;stdcall;
//通过列名获取表中某一列
var
ds:TADODataSet;
strSql:String;
i:integer;
Begin
     strSql:='select ';
     for i:=Low(ColsName) to High(ColsName)-1 do
     begin
          strSql:=strSql+ColsName[i]+',';
     end;
     strSql:=strSql+ColsName[i]+' from '+TableName+' where '+Condition;
     ds:=ExecuteSqlWithQuery(strSql);
     Result:=ds;
end;
程序中的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
ColsName:array [1..3] of String;
pChr:pChar;
str:String;
begin
  if ComInterface=nil then
  begin
       ComInterface := CreateComObject(Class_DBLib) as IDBInterface;//接口
       ComInterface.InitLib(ADOConnection1,Form1);
       ShowMessage('Dblib Created');
  end;
  ColsName[1]:='ID';
  ColsName[2]:='Name';
  ColsName[3]:='TNO';
  ds:=ComInterface.GetColsByName('TeacherBasicInfo','ID>1',ColsName);//ADOdataset
  DataSource1.DataSet:=ds;
end;