由于对Stringgrid加载数据方法不清楚,只好自己动手写了一个简单的过程
大体如下
Uses
ComObj,ActiveX, Grids,ADODB;
Const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +
'Jet OLEDB:Database Password=%s;' ;
var
hConnection:TADOConnection;
hDataSet:TADOQuery;
DBPath:string;
//==============================================================================
//初始化数据库路径
//==============================================================================
procedure IniADO(pDBPath:string);
begin
DBPath:=pDBPath;
hConnection:=TADOConnection.Create(nil);
hConnection.LoginPrompt:=false;
hConnection.ConnectionString:= format(SConnectionString,[trim(DBPath),'']);
hDataset:=TADOQuery.Create(nil);
hDataset.Connection:=hConnection;
end;
//=============================================================================
//*****************由数据库路径,表名和控件绑定数据显示出来
//==============================================================================
procedure BindTable( pTableName:string;var pViewGrid:TStringGrid);
var i :shortint ;ts:Tstrings; j:shortint;
begin
ts:=Tstringlist.Create;
hdataset.Close;
j:=1;
hdataset.SQL.Clear;
hDataSet.SQL.Text:='select * from '+trim(pTableName);
hdataset.Open;
hdataset.GetFieldNames(ts);
pViewGrid.ColCount:=ts.Count+1;
pViewGrid.RowCount:=hdataset.Recordset.RecordCount+1;
pviewGrid.Cells[0,0]:='ID';
for i:=0 to ts.Count-1 do begin
pviewgrid.Cells[0,i+1]:=inttostr(i);
pViewGrid.Cells[i+1,0]:=ts.Strings[i];
end;
while not hdataset.Eof do begin
for i:=0 to ts.Count -1 do begin
pViewGrid.Cells[i+1,j]:=hdataset.FieldByName(ts.Strings[i]).AsString;
end;
hdataset.Next;
j:=j+1;
end;
end;
xp+delphi7下通过测试
还有记得在所在单元添加
initialization
activex.CoInitialize(nil);
finalization
activex.CoUninitialize;
FreeAndNil(hConnection);
FreeAndNil(Hdataset);