原生ado如何连接dbgrid???(75分)

  • 主题发起人 主题发起人 绯红之王
  • 开始时间 开始时间

绯红之王

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormCreate(Sender: TObject);
var aconnect : variant;
ConnectionString : string;
ARecordSet : variant;

begin
aconnect := createoleobject('adodb.connection');
connectionstring := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:/单独测试.MDB;Persist Security Info=False';
AConnect.Open( ConnectionString );
showmessage('连接成功');

ARecordSet:=CreateOleObject('ADODB.RecordSet');
ARecordSet.Open('Select * from 单位信息',aconnect,3,3,1);
end;

arecordset是记录集
我现在想把其内容显示到dbgrid,怎么处理?

千万别告诉我是把fields的值依次放到dbgird里面的!!!
 
arecordset是TADOQuery:dbgrid.datasource:=arecordset
 
dbgrid1.datasource := datasource1;
datasource1.dataset := arecordset;
 
procedure TForm1.Button1Click(Sender: TObject);
var
aconnect : variant;
ConnectionString : string;
ARecordSet : _Recordset;
ds:TDataSet;
begin
aconnect := createoleobject('adodb.connection');
connectionstring := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/Javascript/News.MDB;Persist Security Info=False';
AConnect.Open( ConnectionString );
showmessage('连接成功');

ARecordSet:=CreateOleObject('ADODB.RecordSet') as _Recordset;//直接通过指针
ARecordSet.Open('Select * from type',aconnect,3,3,1);
ds:=TADODataSet.Create(self);
TCustomADODataSet(ds).Recordset:=ARecordSet;
DataSource1.DataSet:=ds;

end;

测试通过,如果创建的时候不使用接口,那么你就得直接使用OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IDispatch, Result));道理一样了。
 
還可以轉成XML來用。
 
问题清楚了
应该定义
ARecordSet : _Recordset;
然后ADODataSet1.Recordset:=ARecordSet;

那么ARecordSet : _Recordset;
_Recordset是什么定义??
 
这就叫“脱裤子放屁——多此一举”,实在看不出在这里为什么不用TADOQuery
 
_recordset是接口
recordset=interface(Iunkown)
...
接口是和应用程序和其他COM的指针。
 
我是在把vb的改写成delphi
现在只是在作比较
vb可没有TADOQuery 的控件哦
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
953
SUNSTONE的Delphi笔记
S
后退
顶部