delphi中的dbgrid数据操作

貌似很简单的问题,就是已经用ADOQuery和DataSource连接好DBGRID了,名字分别为AD_M和DS_M,我有5个按钮,我想让按钮实现添加,修改,保存,取消,... 貌似很简单的问题,就是已经用ADOQuery和DataSource连接好DBGRID了,名字分别为AD_M和DS_M,我有5个按钮,我想让按钮实现添加,修改,保存,取消,删除这5个操作,增加,修改与删除操作必须得点保存后才真正存到数据库里,哦,当点取消的时候有确认是否取消的操作,是单表操作的,就这么简单,希望能给我代码和注释,我新手学的,谢谢。
那样我知道,但是要的是写的代码而不是调用事件, 而且DbNavigator的添加是像上添加的,删除弹出的窗口语句也是英语,很不方便
展开
 我来答
handsomemank
推荐于2016-11-25 · TA获得超过130个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:181万
展开全部
其实不用那么复杂.
1.放一个 Adoconnection1到 表单上,设置好数据连接字符串 并 设置 connected 属性 为 true
2 设置 adoquery1的connection 属性为 adoconnection1
3 设置 adoquery1的 sql 属性为 select * from 表名
4 设置 adoquery1的 active =true
5 设置 datasource1的dataset 属性为 adoquery1
6.再放一个 DBNavigator1 设置 datasource=datasource1
7.设置 dbgrid1的 datasource=datasource1
保存 运行 即可.注 dbnavigator 控件 中有自带代码 ...可实现 添加,删除,修改..等
要用代码 如下:
一、ADOTable对数据表的操作:

增加、修改与删除:(以线路管理为例)
1、增加:
procedure TForm7.Button1Click(Sender: TObject);
begin
ADOTable1.TableName:='线路管理';
ADOTable1.Close;
ADOTable1.Open;
adotable1.Edit;
adotable1.Insert;
adotable1.Fields[1].AsString:=edit1.Text;
adotable1.Fields[2].AsString:=edit2.Text;
adotable1.Fields[3].AsString:=edit3.Text;
adotable1.Post;
end;

2、修改:
procedure TForm7.Button2Click(Sender: TObject);
begin
adotable1.Edit;
adotable1.FieldByName('线路编号').AsString:=trim(edit1.Text);
adotable1.FieldByName('线路名称').AsString:=trim(edit2.Text);
adotable1.FieldByName('备注').AsString:=trim(edit3.Text);
end;

3、删除:
procedure TForm7.Button3Click(Sender: TObject);
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
ADOTable1.Delete;
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

二、adoquery对数据库的增加,查询,编辑,删除:
1、增加:
procedure TForm8.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.Insert;
ADOQuery1.Fields[0].AsString:=edit1.Text;
ADOQuery1.Fields[1].AsString:=edit2.Text;
ADOQuery1.Fields[2].AsString:=edit3.Text;
ADOQuery1.Fields[3].AsString:=edit3.Text;
ADOQuery1.Fields[4].AsString:=edit3.Text;
ADOQuery1.Fields[5].AsString:=edit3.Text;
ADOQuery1.Fields[6].AsString:=edit3.Text;
ADOQuery1.Post;
end;

2、查询:
procedure TForm8.Button2Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from 班次管理 where 班次编号='''+edit1.text+'''or 班次名称='''+edit2.text+''' or 开始时间='''+edit3.text+''' or 结束时间='''+edit4.text+''' or 零点之前数据流向='''+edit5.text+''' or 零点之后数据流向='''+edit6.text+''' or 备注='''+edit7.text+''''); //书写SQL语句时的格式很重要
open;
if dbgrid1.DataSource.DataSet.IsEmpty then //判断查询结果是否为空
begin
showmessage('输入错误!');
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select * from 班次管理');
adoquery1.Open;
end;
end;

end;

3、更改:
procedure TForm8.Button3Click(Sender: TObject);
begin
adoquery1.Edit;
adoquery1.FieldByName('班次名称').AsString:=trim(edit2.Text);
adoquery1.FieldByName('开始时间').AsString:=trim(edit3.Text);
adoquery1.FieldByName('结束时间').AsString:=trim(edit4.Text);
adoquery1.FieldByName('零点之前数据流向').AsString:=trim(edit5.Text);
adoquery1.FieldByName('零点之后数据流向').AsString:=trim(edit6.Text);
adoquery1.FieldByName('备注').AsString:=trim(edit7.Text);
adoquery1.Append;
end;

4、删除:
procedure TForm8.Button4Click(Sender: TObject);
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
adoquery1.Delete;
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
adoquery1.SQL.Clear; //刷新DBGRID 中显示的内容
adoquery1.SQL.Add('select * from 班次管理');
adoquery1.Open;
end;
end;

5、显示全部:
procedure TForm8.Button5Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from 班次管理');
open;
end;
end;
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
子非鱼V子非我
2009-07-31 · 贡献了超过134个回答
知道答主
回答量:134
采纳率:0%
帮助的人:20.5万
展开全部
放一个 Adoconnection1到 表单上,设置好数据连接字符串 并 设置 connected 属性 为 true
2 设置 adoquery1的connection 属性为 adoconnection1
3 设置 adoquery1的 sql 属性为 select * from 表名
4 设置 adoquery1的 active =true
5 设置 datasource1的dataset 属性为 adoquery1
6.再放一个 DBNavigator1 设置 datasource=datasource1
7.设置 dbgrid1的 datasource=datasource1
保存 运行 即可.注 dbnavigator 控件 中有自带代码 ...可实现 添加,删除,修改..等
要用代码 如下:
一、ADOTable对数据表的操作:

增加、修改与删除:(以线路管理为例)
1、增加:
procedure TForm7.Button1Click(Sender: TObject);
begin
ADOTable1.TableName:='线路管理';
ADOTable1.Close;
ADOTable1.Open;
adotable1.Edit;
adotable1.Insert;
adotable1.Fields[1].AsString:=edit1.Text;
adotable1.Fields[2].AsString:=edit2.Text;
adotable1.Fields[3].AsString:=edit3.Text;
adotable1.Post;
end;

2、修改:
procedure TForm7.Button2Click(Sender: TObject);
begin
adotable1.Edit;
adotable1.FieldByName('线路编号').AsString:=trim(edit1.Text);
adotable1.FieldByName('线路名称').AsString:=trim(edit2.Text);
adotable1.FieldByName('备注').AsString:=trim(edit3.Text);
end;

3、删除:
procedure TForm7.Button3Click(Sender: TObject);
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
ADOTable1.Delete;
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

二、adoquery对数据库的增加,查询,编辑,删除:
1、增加:
procedure TForm8.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.Insert;
ADOQuery1.Fields[0].AsString:=edit1.Text;
ADOQuery1.Fields[1].AsString:=edit2.Text;
ADOQuery1.Fields[2].AsString:=edit3.Text;
ADOQuery1.Fields[3].AsString:=edit3.Text;
ADOQuery1.Fields[4].AsString:=edit3.Text;
ADOQuery1.Fields[5].AsString:=edit3.Text;
ADOQuery1.Fields[6].AsString:=edit3.Text;
ADOQuery1.Post;
end;

2、查询:
procedure TForm8.Button2Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from 班次管理 where 班次编号='''+edit1.text+'''or 班次名称='''+edit2.text+''' or 开始时间='''+edit3.text+''' or 结束时间='''+edit4.text+''' or 零点之前数据流向='''+edit5.text+''' or 零点之后数据流向='''+edit6.text+''' or 备注='''+edit7.text+''''); //书写SQL语句时的格式很重要
open;
if dbgrid1.DataSource.DataSet.IsEmpty then //判断查询结果是否为空
begin
showmessage('输入错误!');
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select * from 班次管理');
adoquery1.Open;
end;
end;

end;

3、更改:
procedure TForm8.Button3Click(Sender: TObject);
begin
adoquery1.Edit;
adoquery1.FieldByName('班次名称').AsString:=trim(edit2.Text);
adoquery1.FieldByName('开始时间').AsString:=trim(edit3.Text);
adoquery1.FieldByName('结束时间').AsString:=trim(edit4.Text);
adoquery1.FieldByName('零点之前数据流向').AsString:=trim(edit5.Text);
adoquery1.FieldByName('零点之后数据流向').AsString:=trim(edit6.Text);
adoquery1.FieldByName('备注').AsString:=trim(edit7.Text);
adoquery1.Append;
end;

4、删除:
procedure TForm8.Button4Click(Sender: TObject);
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
adoquery1.Delete;
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
adoquery1.SQL.Clear; //刷新DBGRID 中显示的内容
adoquery1.SQL.Add('select * from 班次管理');
adoquery1.Open;
end;
end;

5、显示全部:
procedure TForm8.Button5Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from 班次管理');
open;
end;
end;

回答者: handsomemank - 江湖新秀 四级 2009-7-29 10:39
添加的按钮我就不说了。代码如下:(对了,下面的dm是数据模块的名称,如果你不用到数据模块的话把它删了就可以了,不清楚可以再问)
procedure TForm2.Button1Click(Sender: TObject); //添加
begin
dm.ADOQuery1.Insert; //添加数据
end;

procedure TForm2.Button2Click(Sender: TObject); //修改
begin
dm.ADOQuery1.Edit; //修改数据
end;

procedure TForm2.Button4Click(Sender: TObject); //取消
begin
if Application.MessageBox('确实要取消吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Cancel; // 取消操作
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

procedure TForm2.Button5Click(Sender: TObject); // 删除
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Delete; //删除数据
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

procedure TForm2.Button3Click(Sender: TObject); //保存
begin
if Application.MessageBox('确实保存数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Append; //保存提交到数据库
Application.MessageBox('保存成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaiyanghao123
2009-07-29 · TA获得超过1615个赞
知道小有建树答主
回答量:1219
采纳率:66%
帮助的人:564万
展开全部
添加的按钮我就不说了。代码如下:(对了,下面的dm是数据模块的名称,如果你不用到数据模块的话把它删了就可以了,不清楚可以再问)
procedure TForm2.Button1Click(Sender: TObject); //添加
begin
dm.ADOQuery1.Insert; //添加数据
end;

procedure TForm2.Button2Click(Sender: TObject); //修改
begin
dm.ADOQuery1.Edit; //修改数据
end;

procedure TForm2.Button4Click(Sender: TObject); //取消
begin
if Application.MessageBox('确实要取消吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Cancel; // 取消操作
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

procedure TForm2.Button5Click(Sender: TObject); // 删除
begin
if Application.MessageBox('确实要删除当前数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Delete; //删除数据
Application.MessageBox('删除成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;

procedure TForm2.Button3Click(Sender: TObject); //保存
begin
if Application.MessageBox('确实保存数据吗?','提示',mb_YesNo)=ID_Yes then
begin
try
dm.ADOQuery1.Append; //保存提交到数据库
Application.MessageBox('保存成功','提示',64);
except
Application.MessageBox('系统出错','提示',64);
end;
end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式