本人想从数据库中读取一组数据的部分字段内容,然后对其修改,修改后进行保存;如下:
字段1 字段2 字段3 字段4 字段5 字段6 字段7 ......
1 1 1 1 1 0 0
1 0 0 0 0 0 0
2 0 0 0 1 1 1
... ... ... ... ... ... ...
将这组数据进行修改后,从新保存;
说明:1、我只从数据库里提取部分数据字段内容;
2、用delphi7.0自带控件,不想用第三方控件;
用delphi什么控件进行调用,用程序怎么实现?
字段1 字段2 字段3 字段4 字段5 字段6 字段7 ......
1 1 1 1 1 0 0
1 0 0 0 0 0 0
2 0 0 0 1 1 1
... ... ... ... ... ... ...
将这组数据进行修改后,从新保存;
说明:1、我只从数据库里提取部分数据字段内容;
2、用delphi7.0自带控件,不想用第三方控件;
用delphi什么控件进行调用,用程序怎么实现?
雨晖玩.net了吧?
ADOQuery1.LockType:=ltBatchOptimistic;
ADOQuery1用来SELECT你说的部份字段
DataSource1连此ADOQuery1
DBGrid1连接此DataSource1
保存就
ADOQuery1.UpdateBatch(arAll);
这个没有数据感知功能啊
保存:可以循环一条条保存(先判断添加、修改、删除);
也可以虚拟表一起保存;
const
cSQL ='select 部门01,部门02,部门03,部门04,部门05,部门06,部门07,部门08,部门09,部门10,部门11,部门12,'
+' 部门13,部门14,部门15,部门16,部门17,总分 from xn_bmdb where 考评年份=''%S'' and 考评季度=''%S'' and 考评要素=''%S'' and 考评人=''%S''';
var
strSQL : string;
i : integer;
begin
strSQL := Format(cSQL,[Edit1.Text,ComBoBox1.Text,ComBoBox2.Text,'潘保林']); //varUserInfo.UserName
with DM_Main.DS do
begin
OpenDS(DM_Main.DS,strSQL);
for i:=0 to SGrid.RowCount-1 do
begin
Edit;
DM_Main.DS.FieldByName('部门01').AsString:= SGrid.Cells[0,i];
DM_Main.DS.FieldByName('部门02').AsString:= SGrid.Cells[1,i];
DM_Main.DS.FieldByName('部门03').AsString:= SGrid.Cells[2,i];
DM_Main.DS.FieldByName('部门04').AsString:= SGrid.Cells[3,i];
DM_Main.DS.FieldByName('部门05').AsString:= SGrid.Cells[4,i];
DM_Main.DS.FieldByName('部门06').AsString:= SGrid.Cells[5,i];
DM_Main.DS.FieldByName('部门07').AsString:= SGrid.Cells[6,i];
DM_Main.DS.FieldByName('部门08').AsString:= SGrid.Cells[7,i];
DM_Main.DS.FieldByName('部门09').AsString:= SGrid.Cells[8,i];
DM_Main.DS.FieldByName('部门10').AsString:= SGrid.Cells[9,i];
DM_Main.DS.FieldByName('部门11').AsString:= SGrid.Cells[10,i];
DM_Main.DS.FieldByName('部门12').AsString:= SGrid.Cells[11,i];
DM_Main.DS.FieldByName('部门13').AsString:= SGrid.Cells[12,i];
DM_Main.DS.FieldByName('部门14').AsString:= SGrid.Cells[13,i];
DM_Main.DS.FieldByName('部门15').AsString:= SGrid.Cells[14,i];
DM_Main.DS.FieldByName('部门16').AsString:= SGrid.Cells[15,i];
DM_Main.DS.FieldByName('部门17').AsString:= SGrid.Cells[16,i];
DM_Main.DS.FieldByName('总分').AsString:= SGrid.Cells[17,i]; PostDS(DM_Main.DS); Next;
end;
Close;
end;提示错误如下:
update affected more than 1 record;
这条语句我应该怎样修改?