![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery1.SQL.Add Update редактирование данных [D6, Access]
Drakon © (2005-04-26 14:05:00)По запросу в Edit1....Edit10 отборажаются данные из базы данных *mdb.
Хочу отредактировать данные данной записи в Edit1....Edit10.
По запросу:
Form4.ADOQuery1.SQL.Add('Update DB set FIO='''+Edit1.Text+''',...,TEL='''+Edit10.Text+''' where FIO=FIO');
Происходит редактирование всех записей в базе в поле FIO, а не именно этой.
Подскажите.
Соловьев (2005-04-26 18:33:00) [1]
> Сам запрос
>
> Form4.ADOQuery1.Close;
> Form4.ADOQuery1.SQL.Clear;
>
> Form4.ADOQuery1.SQL.Add('Update Сотрудники set FIO='''+
> Edit1.Text+''',...,TEL=''' + Edit10.Text + ''' where ID=+Form4.Edit12.Text+'');
> Form4.ADOQuery1.ExecSQL;
>
> Теперь работает :)
А теперь внеси ДА'ртаньяна :)
Anatoly Podgoretsky (2005-04-26 16:06:00) [2]Пожалуйста и тебе спасибо, скрасил наши серые будни.
Drakon (2005-04-26 15:30:00) [3]Всем спасибо за внимание!
Sergey13 (2005-04-26 15:24:00) [4]2[15] Drakon © (26.04.05 15:16)
>Ну что сделаешь... Учимся.
Странное у тебя учебное пособие наверное.
>А можно как то на ID сослаться по другому?
Кроме Edit-ов есть например еще и DBEdit-ы.
ЗЫ: Не экономь на компонентах на форме. Использовать один кверик и на чтение и на запись как то не того, ИМХО. Запутаешься сам.
Drakon (2005-04-26 15:20:00) [5]"Короче добавил я Edit11 где"
опечатка, следует читать: "Короче добавил я Edit12 где"
Drakon (2005-04-26 15:16:00) [6]Короче добавил я Edit11 где
Edit12.text:=ADOQuery1.Fields.FindField('ID').AsString;
Сам запрос
Form4.ADOQuery1.Close;
Form4.ADOQuery1.SQL.Clear;
Form4.ADOQuery1.SQL.Add('Update Сотрудники set FIO='''+ Edit1.Text+''',...,TEL=''' + Edit10.Text + ''' where ID=+Form4.Edit12.Text+'');
Form4.ADOQuery1.ExecSQL;
Теперь работает :)
>Sergey13 © (26.04.05 15:09) [12]
>2[10] Drakon © (26.04.05 14:51)
>Ну и мешанина! 8-(
Ну что сделаешь... Учимся.
А можно как то на ID сослаться по другому?
Lexer (2005-04-26 15:14:00) [7]
> [13] Drakon © (26.04.05 15:12)
> Так вот и вопрос: как определить id текущей записи
)))))
не мы тебя все-таки расколим....
у тебя запрос должен получать ид записи!
Drakon (2005-04-26 15:12:00) [8]Если ID это "идентификационный номер" записи в базе данных.
Нужно: where id=id текущей записи
Так вот и вопрос: как определить id текущей записи
Sergey13 (2005-04-26 15:09:00) [9]2[10] Drakon © (26.04.05 14:51)
Ну и мешанина! 8-(
Lexer (2005-04-26 15:05:00) [10]какие поля у тебя выводит запрос?
Drakon (2005-04-26 14:51:00) [11]> Megabyte © (26.04.05 14:20) [3]
Что подсказать? Честно говоря, вопрос сформулирован через одно место...
Постараюсь сформулировать по другому:
На форме лежит Edit1...Edit10, DBGrid, ADOConnection, ADOQuery, DataSourse.
При EditChange выполняется запрос, согласно критерию запроса в DBGrid выводятся записи.
При DBGridDblClick:
Edit1.text:=ADOQuery1.Fields.FindField('FIO').AsString;
.......
Edit10.text:=ADOQuery1.Fields.FindField('TEL').AsString;
Теперь я хочу отредактировать данные которые в Edit1...Edit10 для текущей записи.
При ButtonClick:
Form4.ADOQuery1.Close;
Form4.ADOQuery1.SQL.Clear;
Form4.ADOQuery1.SQL.Add('Update Сотрудники set FIO='''+ Edit1.Text+''',...,TEL=''' + Edit10.Text + ''' where FIO=FIO');
Form4.ADOQuery1.ExecSQL;
Как написать критерии для WHERE для редактирования именно текущей записи?
Sergey13 (2005-04-26 14:46:00) [12]2[7] Drakon © (26.04.05 14:37)
>Как добавить критерии?
В where FIO=FIO измени правую часть равенства на те условия которые нужны. Перед редактированием записи запомни текущее значение, а перед выполнением запроса подставь его вместо правой части.
ЗЫ: Отвратительный способ изменять по ФИО. Неужели никакого кода нет?
Lexer (2005-04-26 14:45:00) [13]посмотри вот здесь
> [2] sniknik © (26.04.05 14:16)
> WHERE ID={значение ключа для записи подлежащей обновлению}
> если ключа нет, советую добавить.
поиск делается по ключевым (оригинальным во всей таблице) полям, тебе лучше добавить в таблицу поле ID
Drakon (2005-04-26 14:37:00) [14]Как именно отредактировать данные одной записи базы данных например в поле "FIO", "TEl"? У меня редактируются сразу ВСЕ записи.
Как добавить критерии?
Lexer (2005-04-26 14:26:00) [15]
> Не редактирует вообще.
а чему у тебя oldFIO равен?
Lexer (2005-04-26 14:24:00) [16]
> [3] Megabyte © (26.04.05 14:20)
> Тебе надо отредактировать одну конкретную запись, а у тебя
> редактируются все записи с FIO = "FIO"?
у него редактируются абсолютно ВСЕ записи
Drakon (2005-04-26 14:23:00) [17]> Lexer ©
''' where FIO='+'''+oldFIO+''')
Не редактирует вообще.
Megabyte (2005-04-26 14:20:00) [18]Что подсказать? Честно говоря, вопрос сформулирован через одно место...
Тебе надо отредактировать одну конкретную запись, а у тебя редактируются все записи с FIO = "FIO"?
Так ты сам же в условии "Where" так поставил. Добавь критерии.
з.ы. И вообще какое-то извращенное редактирование. Имхо проще через DBEdit делать.
sniknik (2005-04-26 14:16:00) [19]WHERE ID={значение ключа для записи подлежащей обновлению}
если ключа нет, советую добавить.
либо при твоей записи
... where FIO=:FIO');
ADOQuery1.Parameters.ParamByName('FIO').Value:= Edit??.Text;
Lexer (2005-04-26 14:15:00) [20]> +''' where FIO=FIO');
естественно будут меняться ВСЕ записи, попробуй так:
''' where FIO='+'''+oldFIO+''')
где oldFIO - значение поля ФАМИЛИЯ текущей записи