我有一個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