2010-11-23 37 views
0

我有一个DBGrid耦合到ADOQuery使用SELECT语句。更新所有记录的一个字段?

我想为所有记录更新一个字段。例如,当我在文本框中输入一些数据时,所有记录的字段“名称”(只是一个例子)将会改变。

+0

我劝你是要详细说明你的问题。希望你更好地描述你的情况,包括所有对特定问题有重要意义的事情。在这种情况下,像select的性质(某些选择结果集仅在数据库级别读取)以及是否希望在数据库中执行此操作或使用相同的ADOQuery组件。如果你希望人们投入(或浪费)一段时间来帮助你,那么如果你投入一些时间试图让这些人首先了解你的情况,那就更好了。 – jachguate 2010-11-23 17:18:24

回答

5

为此,您可以启动查询。

“UPDATE table SET name = textBox.text”; 按照你的语法。只需更改该字段,而不用任何where子句就会改变你的所有输入。

+0

亲爱的,我说我的Adoquery是select命令,并且dbgrid向我显示该表,并且此选择可能是某些表的联接(不只是一个表) – micheal 2010-11-23 05:57:34

+1

@micheal,您没有说select是多个表的联接,但是Assha,Isha是正确的。之后您可以执行更新并刷新网格。 – 2010-11-23 07:27:57

1

您可以使用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; 
相关问题