Консультация № 158443
22.01.2009, 16:05
0.00 руб.
0 14 1
Здравствуйте!
Как из компонента Edit добавить строковую информацию во все имеющиеся строки одного поля, при том что имеются другие, заполненные поля в этой же таблице?

Обсуждение

Неизвестный
22.01.2009, 16:13
общий
чета я не понял вопроса (((
давно
Мастер-Эксперт
425
4118
22.01.2009, 16:38
общий
KuchumHan
Какую конкретно таблицу Вы имели в виду? И что за поле? В каком виде там хранится информация?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
22.01.2009, 17:10
общий
23.01.2009, 10:23
это ответ
Здравствуйте, KuchumHan!

Исхожу из предположения, что вы используете какой-то датасет DataSet, датасурс DataSource и дбгрид DBGrid. Предложу два варианта.

1. Дубовый.
DBGrid1.DataSource.DataSet.First;
while not DBGrid1.DataSource.DataSet.Eof do begin
DBGrid1.DataSource.DataSet.Fields[НомерНужногоПоля].AsString := Edit1.Text;
DBGrid1.DataSource.DataSet.Next;
end;

2. Правильный.
Пишу пример для набора компонентов FIBPlus (остальные на память не помню, а Delphi включать лениво :)). В случае чего будет несложно перевести на нужный лад, я думаю.

FIBQuery1.SQL.Text := 'update TABLE_NAME set FIELD_NAME = :Param1'; // таким запросом мы редактируем значение поля FIELD_NAME для всех записей таблицы TABLE_NAME
FIBQuery1.ParamByName('Param1').AsString := Edit1.Text; // Устанавливаем значение, которое будем заносить в БД
FIBQuery1.Transaction.Active := True; // Готовим транзакцию к работе, возможно, что это специфично только для Interbase, но сомневаюсь
FIBQuery1.ExecQuery; // Выполняем запрос
FIBQuery1.Transaction.Commit; // Подтверждаем внесенные изменения

Будут вопросы - пишите в почту, попробую подсказать.

Удачи.
Неизвестный
23.01.2009, 10:00
общий
Как вот это сделать со всем полем таблицы по событию, например нажатие кнопки:

procedure TMainForm.BitBtn1Click(Sender: TObject);

begin
BiletData.ADOTable.FieldByName('faculty').ReadOnly := false;
mainform.DBEdit1.Text := BiletData.ADOTable.FieldByName('faculty').asString;
BiletData.ADOTable.Next;
end;
Неизвестный
23.01.2009, 10:04
общий
Кэр Лазда, необычное имя..............
давно
Мастер-Эксперт
425
4118
23.01.2009, 10:38
общий
KuchumHan
Вопрос Ваш понятнее отнюдь не стал. Вот в этой строке:
BiletData.ADOTable.FieldByName('faculty').asString:='Какое-то значение';
Вы и так вносите значение во всё поле. Т.е. просто в этом поле заменяете одно значение другим.
Попробуйте ещё раз пояснить, что Вам нужно?
- Вы хотите одно и тоже значение занести в поле всей таблицы?
- Вы хотите сделать так, чтобы когда Вы заносите значение в поле, старое значение там тоже сохранялось?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
23.01.2009, 10:54
общий
>- Вы хотите одно и тоже значение занести в поле всей таблицы?
да
>- Вы хотите сделать так, чтобы когда Вы заносите значение в поле, старое значение там тоже сохранялось?
нет, предидущее должно удалятся
давно
Мастер-Эксперт
425
4118
23.01.2009, 11:49
общий
Значение для всех записей этого поля должно быть одно и то же или для каждой записи разное?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
25.01.2009, 10:38
общий
Да , значение должно быть одно и тоже.
давно
Мастер-Эксперт
425
4118
25.01.2009, 12:03
общий
Тогда для подобных действий можно использовать дополнительный компонент - ADOCommand:
Код:
ADOCommand.CommandText:='UPDATE Название_Таблицы SET faculty= "Какое-то значение" ';
ADOCommand.Execute;

При этом, во все без исключения записи поля faculty будет занесено значение "Какое-то значение".
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
26.01.2009, 10:36
общий
А как мне в этот компонент передовать данные в виде строки?
давно
Мастер-Эксперт
425
4118
26.01.2009, 10:55
общий
Примерно так:
Код:
ADOCommand.CommandText:='UPDATE Название_Таблицы SET faculty=" '+'Данные в виде строки'+' " ';

Пробелы я ввёл специально, чтобы были видны двойные кавычки.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
26.01.2009, 14:05
общий
Всё получилось, но в TDBGrid изменения появляются только после перезапуска программы.
давно
Мастер-Эксперт
425
4118
26.01.2009, 14:32
общий
Делайте после изменения значений:
ADOTable.Requery;
для того чтобы обновить набор данных в ADOTable.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа