Форум: "Базы";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
ВнизADOQuery1.SQL.Add Update редактирование данных Найти похожие ветки
← →
Drakon © (2005-04-26 14:05) [0]По запросу в Edit1....Edit10 отборажаются данные из базы данных *mdb.
Хочу отредактировать данные данной записи в Edit1....Edit10.
По запросу:
Form4.ADOQuery1.SQL.Add("Update DB set FIO="""+Edit1.Text+""",...,TEL="""+Edit10.Text+""" where FIO=FIO");
Происходит редактирование всех записей в базе в поле FIO, а не именно этой.
Подскажите.
← →
Lexer © (2005-04-26 14:15) [1]> +""" where FIO=FIO");
естественно будут меняться ВСЕ записи, попробуй так:""" where FIO="+"""+oldFIO+""")
где oldFIO - значение поля ФАМИЛИЯ текущей записи
← →
sniknik © (2005-04-26 14:16) [2]WHERE ID={значение ключа для записи подлежащей обновлению}
если ключа нет, советую добавить.
либо при твоей записи
... where FIO=:FIO");
ADOQuery1.Parameters.ParamByName("FIO").Value:= Edit??.Text;
← →
Megabyte © (2005-04-26 14:20) [3]Что подсказать? Честно говоря, вопрос сформулирован через одно место...
Тебе надо отредактировать одну конкретную запись, а у тебя редактируются все записи с FIO = "FIO"?
Так ты сам же в условии "Where" так поставил. Добавь критерии.
з.ы. И вообще какое-то извращенное редактирование. Имхо проще через DBEdit делать.
← →
Drakon © (2005-04-26 14:23) [4]> Lexer ©
""" where FIO="+"""+oldFIO+""")
Не редактирует вообще.
← →
Lexer © (2005-04-26 14:24) [5]
> [3] Megabyte © (26.04.05 14:20)
> Тебе надо отредактировать одну конкретную запись, а у тебя
> редактируются все записи с FIO = "FIO"?
у него редактируются абсолютно ВСЕ записи
← →
Lexer © (2005-04-26 14:26) [6]
> Не редактирует вообще.
а чему у тебя oldFIO равен?
← →
Drakon © (2005-04-26 14:37) [7]Как именно отредактировать данные одной записи базы данных например в поле "FIO", "TEl"? У меня редактируются сразу ВСЕ записи.
Как добавить критерии?
← →
Lexer © (2005-04-26 14:45) [8]посмотри вот здесь
> [2] sniknik © (26.04.05 14:16)
> WHERE ID={значение ключа для записи подлежащей обновлению}
> если ключа нет, советую добавить.
поиск делается по ключевым (оригинальным во всей таблице) полям, тебе лучше добавить в таблицу поле ID
← →
Sergey13 © (2005-04-26 14:46) [9]2[7] Drakon © (26.04.05 14:37)
>Как добавить критерии?
В where FIO=FIO измени правую часть равенства на те условия которые нужны. Перед редактированием записи запомни текущее значение, а перед выполнением запроса подставь его вместо правой части.
ЗЫ: Отвратительный способ изменять по ФИО. Неужели никакого кода нет?
← →
Drakon © (2005-04-26 14:51) [10]> 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 для редактирования именно текущей записи?
← →
Lexer © (2005-04-26 15:05) [11]какие поля у тебя выводит запрос?
← →
Sergey13 © (2005-04-26 15:09) [12]2[10] Drakon © (26.04.05 14:51)
Ну и мешанина! 8-(
← →
Drakon © (2005-04-26 15:12) [13]Если ID это "идентификационный номер" записи в базе данных.
Нужно: where id=id текущей записи
Так вот и вопрос: как определить id текущей записи
← →
Lexer © (2005-04-26 15:14) [14]
> [13] Drakon © (26.04.05 15:12)
> Так вот и вопрос: как определить id текущей записи
)))))
не мы тебя все-таки расколим....
у тебя запрос должен получать ид записи!
← →
Drakon © (2005-04-26 15:16) [15]Короче добавил я 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 сослаться по другому?
← →
Drakon © (2005-04-26 15:20) [16]"Короче добавил я Edit11 где"
опечатка, следует читать: "Короче добавил я Edit12 где"
← →
Sergey13 © (2005-04-26 15:24) [17]2[15] Drakon © (26.04.05 15:16)
>Ну что сделаешь... Учимся.
Странное у тебя учебное пособие наверное.
>А можно как то на ID сослаться по другому?
Кроме Edit-ов есть например еще и DBEdit-ы.
ЗЫ: Не экономь на компонентах на форме. Использовать один кверик и на чтение и на запись как то не того, ИМХО. Запутаешься сам.
← →
Drakon © (2005-04-26 15:30) [18]Всем спасибо за внимание!
← →
Anatoly Podgoretsky © (2005-04-26 16:06) [19]Пожалуйста и тебе спасибо, скрасил наши серые будни.
← →
Соловьев © (2005-04-26 18:33) [20]
> Сам запрос
>
> 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;
>
> Теперь работает :)
А теперь внеси ДА"ртаньяна :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c