delphi添加,修改,删除,保存,取消的问题!急了

lqadfei 2010-06-12 01:50:29
有一个部门表:depart, 字段分别为:depart_id ,depart_name,upper_depart_id,分别表示部门代码,部门名称,上级部门代码.
在form1中分别有添加,修改,删除,保存,取消四个按钮.
在form1中还有edit1,combobox1,edit2三个控件.
还添加了一个dbgrid1以及adodataset1和datasource1控件.
该数据库其它表和部门表有关联,因不涉及,略过.

程序代码如下:

procedure Tbmsz.FormShow(Sender: TObject); //刚运行时按钮和编缉框不可用
begin
bmdbgrid1.Columns[2].Width:=50;
edit1.ReadOnly:=true;
edit2.ReadOnly:=true;

speedbutton1.Enabled:=false;
speedbutton2.Enabled:=false;
speedbutton3.Enabled:=false;
speedbutton4.Enabled:=false;
end;

procedure Tbmsz.bmDBGrid1CellClick(Column: TColumn);//点击dbgrid1后相应字段值显示在edit1,combobox1,edit2中
begin
speedbutton1.Enabled:=true;
speedbutton2.Enabled:=true;
speedbutton3.Enabled:=true;
edit1.Text:=dbgrid1.Fields[0].value;
combobox1.Text:=dbgrid1.Fields[1].value;
edit2.Text:=dbgrid1.Fields[2].value;
end;

procedure Tbmsz.SpeedButton1Click(Sender: TObject);//添加数据
var
i:integer;
begin
speedbutton1.Enabled:=false;
speedbutton2.Enabled:=false;
speedbutton3.Enabled:=false;
speedbutton4.Enabled:=true;
dbgrid1.ReadOnly:=false;
adodataset1.close;
adodataset1.Open;
adodataset1.Insert;

if adodataset1.RecordCount=0 then exit;//此段是想把 upper_depart_id字段添加到combobox1中,并且值不能重复.还有其它方法吗?
Combobox1.items.clear;
adodataset1.first;
for i:=0 to adodataset1.RecordCount-1 do
begin
Combobox1.items.add(adodataset1.fieldbyname('upper_depart_id').asstring);
adodataset1.next;
end
;

adodataset1.FieldByName( 'depart_id').AsString:= edit1.text;
adodataset1.FieldByName( 'upper_depart_id').AsString:= combobox1.Text;
adodataset1.FieldByName( 'depart_name').AsString:= edit2.Text;
Combobox1.items.clear;
end;


procedure Tbmsz.SpeedButton2Click(Sender: TObject);
var
i:integer;
begin

adodataset1.close;
adodataset1.Open;
if adodataset1.RecordCount=0 then exit;//此段是想把 upper_depart_id字段添加到combobox1中,并且值不能重复.还有其它方法吗?
Combobox1.items.clear;
adodataset1.first;
for i:=0 to adodataset1.RecordCount-1 do
begin
Combobox1.items.add(adodataset1.fieldbyname('upper_depart_id').asstring);
adodataset1.next;
end
;
adodataset1.edit;

adodataset1.FieldByName( 'depart_id').AsString:= edit1.text;
adodataset1.FieldByName( 'upper_depart_id').AsString:= combobox1.Text;
adodataset1.FieldByName( 'depart_name').AsString:= edit2.Text;
Combobox1.items.clear;


end;

procedure Tbmsz.SpeedButton3Click(Sender: TObject);
begin
bmdbgrid1.ReadOnly:=False;
adodataset1.delete;
bmdbgrid1.ReadOnly:=True;
end;

procedure Tbmsz.SpeedButton4Click(Sender: TObject);
begin
adodataset1.post;
speedbutton4.Enabled:=false;

end;


除了上面的问题,还想问问用adodataset1里面的 adodataset1.insert,edit,delete和sql2000里相应的语句来完成相同的操作,哪个好?为什么?


...全文
313 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengemail8 2010-07-02
  • 打赏
  • 举报
回复
还添加了一个dbgrid1以及adodataset1和datasource1控件.

不用这些东东,效率低下,

用存储过程,想添加或修改的数据通过参数传入就好了,
如果ID>0则修改,否则新插入一条记录
ahaqcjm 2010-06-13
  • 打赏
  • 举报
回复
用SQL语句既简单也方便,功能也一样实现
bylgood 2010-06-12
  • 打赏
  • 举报
回复
combobox1的选项应该在窗体显示时通过SQL查询不同的值初始化添加的吧,没必要每次都清除添加吧?
Amin_2009 2010-06-12
  • 打赏
  • 举报
回复
添加,修改,删除完全可以在adodataset1中完成,为什么要提到edit1,combobox1,edit2中,如果要提,就是你那个方式,只是你并没判断重复
lovelymelon 2010-06-12
  • 打赏
  • 举报
回复
不建议这样写,还是应该用sql语句

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧