我有一个DBGrid耦合到ADOQuery使用SELECT语句。更新所有记录的一个字段?
我想为所有记录更新一个字段。例如,当我在文本框中输入一些数据时,所有记录的字段“名称”(只是一个例子)将会改变。
我有一个DBGrid耦合到ADOQuery使用SELECT语句。更新所有记录的一个字段?
我想为所有记录更新一个字段。例如,当我在文本框中输入一些数据时,所有记录的字段“名称”(只是一个例子)将会改变。
为此,您可以启动查询。
“UPDATE table SET name = textBox.text”; 按照你的语法。只需更改该字段,而不用任何where子句就会改变你的所有输入。
亲爱的,我说我的Adoquery是select命令,并且dbgrid向我显示该表,并且此选择可能是某些表的联接(不只是一个表) – micheal 2010-11-23 05:57:34
@micheal,您没有说select是多个表的联接,但是Assha,Isha是正确的。之后您可以执行更新并刷新网格。 – 2010-11-23 07:27:57
您可以使用SQL UPDATE语句一次更新所有这些记录。
如果你不想(或不能)使用SQL UPDATE以任何理由,并想用ADO记录集做了更新,你可以写这样的代码:
var
AField : TField;
begin
Assert(AdoQuery1.Active, 'Dataset is not active!');
try
AdoQuery1.DisableControls;
AField := AdoQuery1.FieldByName('MyFieldName');
AdoQuery1.First;
while not AdoQuery1.Eof do
begin
AdoQuery1.Edit;
AField.Value := Edit1.Text;
AdoQuery1.Post;
AdoQuery1.Next;
end;
finally
AdoQuery1.EnableControls;
end;
end;
我劝你是要详细说明你的问题。希望你更好地描述你的情况,包括所有对特定问题有重要意义的事情。在这种情况下,像select的性质(某些选择结果集仅在数据库级别读取)以及是否希望在数据库中执行此操作或使用相同的ADOQuery组件。如果你希望人们投入(或浪费)一段时间来帮助你,那么如果你投入一些时间试图让这些人首先了解你的情况,那就更好了。 – jachguate 2010-11-23 17:18:24