2010-11-23 39 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; 
相關問題