有一个部门表: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;
beginadodataset1.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里相应的语句来完成相同的操作,哪个好?为什么?
在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;
beginadodataset1.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里相应的语句来完成相同的操作,哪个好?为什么?
如果ID>0则修改,否则新插入一条记录