给你一些我自己总结的东西,如果简单的使用,建议使用感知组件。
Ado使用说明
基本操作
//建立连接
1. 新建应用程序。
2. 放入TADOConnection1组件,双击ConnectionString属性,点击build按钮,连接access 2000数据库必须使用ms jet4.0 ole db provider驱动程序,点击下一步按钮,选择数据库文件,填写用户名和密码,测试连接。
3. 将TADOConnection1组件的LoginPrompt属性设置为False,避免显示登陆对话框。
4. 再设置Connected属性为True,开启数据源。
//查询数据
1. 放入TADODataSet1组件。
2. 设置TADODataSet1组件的connection属性为TADOConnection1组件。
3. 设置TADODataSet1组件的commandtext属性为一个SQL查询语句,如Selelet * From TableA。
4. 设置TADODataSet1组件的Active属性为true,使查询生效。
//关连数据感知组件
1. 放入TDataSource1组件。
2. 设置TDataSource1组件的DataSet属性为TADODataSet1。
3. 放入TDBNavigator1组件。
4. 设置TDBNavigator1组件的DataSource属性为TDataSource1。
//显示和编辑数据
1. 放入TDBCtrlGrid1组件。
2. 设置TDBCtrlGrid1组件的DataSource属性为TDataSource1。
3. 设置TDBCtrlGrid1组件的RowCount属性为1,方便放置数据显示编辑组件。
4. 打开TADODataSet1的Fields Editor,加入字段,将字段拖拽到TDBCtrlGrid1,数据编辑组件自动显示在TDBCtrlGrid1上。
5. 设置TDBCtrlGrid1组件的RowCount属性为3,同时显示三个记录。
//不使用感知控件添加记录
procedure TTJSR.TJClick(Sender: TObject);
begin
if srxm.Text ='' then
begin
showmessage('收入项目没有填写,不能添加记录!');
exit;
end;
if zcr.Text ='' then
begin
showmessage('收入人没有填写,不能添加记录!');
exit;
end;
try
DM1.ADS2.Insert;
DM1.ADS2['收入日期']:=srrq.Date;
DM1.ADS2['收入项目']:=srxm.Text;
DM1.ADS2['收入金额']:=srje.Value;
DM1.ADS2['收入人']:=zcr.Text;
DM1.ADS2['收入备注']:=srbz.Text;
DM1.ADS2.Post;
except
DM1.ADS2.Cancel;
end;
end;
使用感知数据库组件
//显示数据
procedure TForm1.FormShow(Sender: TObject);
begin
adodataset1.Active:=true;
adodataset2.Active:=true;
dbresize;
dbgrid1.Columns.Items[1].Width :=400;
toolbar1.Visible:=false;
c2.Visible:=false;
//显示今日提醒内容
form3.ShowModal;
end;
//动态显示数据
procedure TFMain.fcOutlookBar1fcShapeBtn1Click(Sender: TObject);
begin
//显示简要内容
dm1.ADODataSet1.Active:=false;
dm1.ADODataSet1.CommandText:='select 联系人id,姓名,单位电话,单位传真,移动电话,家庭电话,电子邮件 from 联系人';
dm1.ADODataSet1.Active:=true;
DBResize;
dbgrid1.Columns.Items[0].Width :=50;
dbgrid1.ReadOnly:=true;
//设置初始值
FindName:='';
Fname:='';
end;
//取消添加记录
procedure TForm2.Button2Click(Sender: TObject);
begin
//取消输入
form1.ADODataSet1.Cancel;
close;
end;
//开始添加记录
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
form1.ADODataSet1.Insert;
form2.DBComboBox1.ItemIndex:=0;
form2.ShowModal;
end;
//完成添加记录
procedure TForm2.Button1Click(Sender: TObject);
begin
//防止所有内容都是空,且名称一般不能是空
if dbedit1.Text ='' then
begin
ShowMessage('没有填写工作内容,不能建立提醒!');
exit;
end;
if dbdatetimeediteh1.Value=null then
begin
ShowMessage('没有选择工作日期,不能建立提醒!');
exit;
end;
if (form1.ADODataSet1.State=dsedit)
or(form1.ADODataSet1.State=dsInsert) then
form1.ADODataSet1.post;
close;
end;
//删除记录
procedure TForm1.ToolButton3Click(Sender: TObject);
var
msgstring:string;
begin
if form1.ADODataSet1.RecordCount>0 then
begin
msgstring:='确实要删除“'
+adodataset1.FieldValues['提醒内容']+'”提醒?';
// If MessageBox(msgstring, '确认删除',
// MB_OKCANCEL+MB_ICONQUESTION+MB_DEFBUTTON1+MB_APPLMODAL) = ID_OK Then
//提示确认
If MessageDlg(msgstring, mtConfirmation, mbOkCancel, 0) = ID_OK Then
form1.ADODataSet1.Delete;
end;
//If Application.MessageBox(pchar(msgstring), '确认删除', MB_OKCANCEL+MB_ICONQUESTION+MB_DEFBUTTON1+MB_APPLMODAL) = ID_OK Then
//close;
end;
//按条件删除记录
procedure TForm1.ToolButton18Click(Sender: TObject);
begin
form1.ADODataSet1.First;//第一个纪录
while not form1.ADODataSet1.Eof do
begin
if form1.ADODataSet1.FieldValues['工作日期']<=date then
begin
form1.adodataset1.Delete;
exit;
end;
form1.adodataset1.Next;
end;
end;
//查询记录
procedure TForm3.FormShow(Sender: TObject);
var
tempstr:string;
begin
richedit1.Clear;//清空
richedit1.Lines.Add('');
richedit1.Lines.Add('');
richedit1.Paragraph.Alignment:=tacenter;
richedit1.selattributes.Style := [fsBold];
richedit1.Lines.Add('今天提醒内容');
richedit1.Paragraph.Alignment:=taleftjustify;
richedit1.selattributes.Style := [];
richedit1.Lines.Add('');
richedit1.Lines.Add('');
form1.ADODataSet1.First;//第一个纪录
while not form1.ADODataSet1.Eof do
begin
if form1.ADODataSet1.FieldValues['工作日期']-date <
form1.ADODataSet1.FieldValues['提醒期间'] then
begin
tempstr:=datetostr(form1.ADODataSet1.FieldValues['工作日期'])+
' '+form1.ADODataSet1.FieldValues['提醒内容'];
richedit1.Lines.Add(tempstr);
richedit1.Lines.Add('');
end;
form1.adodataset1.Next;
end;
//没有提醒
if richedit1.Lines.Count<6 then richedit1.Lines.Add('今日没有提醒,不用紧张。');
//改变焦点以便使回车键和ESC键有效
button1.SetFocus;
end;
//在当前表中查找
procedure TFMain.fcOutlookBar1OutlookList1Items0Click(
OutlookList: TfcCustomOutlookList; Item: TfcOutlookListItem);
begin
//查找,电话
FindName:=inputbox('输入查找内容','输入全名或单个字:',Findname);
if FindName='' then exit;
dm1.ADODataSet1.First;
while not dm1.ADODataSet1.Eof do
begin
if pos(FindName,dm1.ADODataSet1.FieldValues['姓名'])>0 then exit;
dm1.ADODataSet1.Next;
end;
showmessage('没有找到相关联系人!');
end;
//新窗体中显示细表
procedure TFMain.fcOutlookBar1OutlookList1Items2Click(
OutlookList: TfcCustomOutlookList; Item: TfcOutlookListItem);
begin
//显示详细情况表
fview.ADODataSet1.Active:=true;
fview.id:=dm1.adodataset1.FieldValues['联系人id'];
fview.ShowModal;
end;
//过滤条件
procedure TFMain.fcOutlookBar1OutlookList1Items3Click(
OutlookList: TfcCustomOutlookList; Item: TfcOutlookListItem);
begin
//设置过滤函数
FName:=inputbox('输入过滤条件','输入全名或单个字:',Fname);
if FName='' then exit;
try
dm1.ADODataSet1.Filtered:=false;
dm1.ADODataSet1.OnFilterRecord:=filterroutine;
finally
dm1.ADODataSet1.Filtered:=true;
end;
end;
//取消过滤
procedure TFMain.fcOutlookBar1OutlookList1Items4Click(
OutlookList: TfcCustomOutlookList; Item: TfcOutlookListItem);
begin
//取消过滤函数
dm1.ADODataSet1.OnFilterRecord:=nil;
dm1.ADODataSet1.Filtered:=false;
end;
//过滤过程
procedure TFMain.filterroutine(dataset: Tdataset; var accept: boolean);
var
sname:string;
begin
//过滤函数
//要使用db单元
sname:=dataset.fieldbyname('姓名').asstring;
if pos(fname,sname)<>0 then
accept:=true
else
accept:=false;
end;
//压缩数据库
procedure TFMain.C1Click(Sender: TObject);
var
Engine
BEngine;
begin
dm1.ADOConnection1.Connected:=false;
dm1.ADOConnection1.Close;
Engine:=CoDBEngine.Create;
Engine.CompactDatabase('通讯簿.mdb','通讯簿备份.mdb','',0,'');
dm1.ADOConnection1.Connected:=true;
end;