2010-11-23 2 views
0

У меня есть DBGrid, связанный с ADOQuery с помощью инструкции SELECT.Обновление одного поля для всех записей?

Я хочу обновить одно поле для всех записей. Например, когда я ввожу некоторые данные в текстовое поле, поле «Имя» (только пример) всех записей будет изменено.

+0

Мой вам советую заключается в разработке ваших вопросов. Желательно, чтобы вы приложили больше усилий, чтобы описать свою ситуацию, в том числе все, что имеет значение для конкретной проблемы. В этом случае такие вещи, как характер select (некоторые выборные наборы результатов считываются только на уровне базы данных), и если вы хотите сделать это в базе данных или используя этот же компонент ADOQuery. Если вы хотите, чтобы люди инвестировали (или тратили) некоторое время, пытаясь помочь вам, лучше, если вы потратите некоторое время, пытаясь заставить этих людей понять вашу ситуацию в первую очередь. – jachguate 2010-11-23 17:18:24

ответ

5

С этой целью вы можете запустить запрос.

"UPDATE table SET name = textBox.text"; Следуйте синтаксису согласно вам. просто измените это поле без какого-либо предложения where, которое изменит ваши все enteries.

+0

Уважаемый, я сказал, что моя Adoquery - это команда select, и dbgrid показывает мне, что таблица и этот select могут быть объединены в некоторые таблицы (а не только одну таблицу) – micheal 2010-11-23 05:57:34

+1

@micheal, вы не сказали, что select является объединением нескольких таблиц, но это Исх, верно, Иша. После этого вы можете выполнить обновление и обновить свою сетку. – 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; 
Смежные вопросы