![]() |
|
|
#1
|
|||
|
|||
![]() Имеется bd Access,adoquert,adoconnected,datasource,..
Зановить данные в таблицу получается,удалять тоже,только обновление происходит по странному... Создал просто обычную таблицу,так сказать для пробы.Первичный ключ стоит ,текстовое фио и ид числовое... значит пытаюсь обновить так Код:
ADOQuery1.SQL.Text := 'UPDATE table1 SET fio = ' + QuotedStr(Edit2.Text) + ' WHERE id='+Edit1.Text+ ''; ADOQuery1.ExecSQL; |
#2
|
||||
|
||||
![]() А нафига замыкающие кавычки в запросе? Помоему так правильнее:
Код:
ADOQuery1.SQL.Text := 'UPDATE table1 SET fio = ' + QuotedStr(Edit2.Text) + ' WHERE id='+Edit1.Text; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Та же самая проблема...Если обновляет то надо перезапускать ...а если не перезапустить и попробывать внести или удалить данные то та же ошибка ...Project Project1.exe raised exception class EDatabaseError with messasge 'ADOQuery1:Cannot perform this operation on a closed dataset'.Process stopped.Use Step or Run to continue.
|
#4
|
|||
|
|||
![]() Если datasource привязан к этому query, то, теоретически, возникает такая ситуация - Вы выполняете ExecSQL, что в свою очередь выполняет запрос и, если правильно помню, переводит позицию query.active в false. Наверное не очень ясно выражаюсь - попробуйте разделить функции отображения данных из базы и редактирование базы на 2 разных компонента. Один query работает на отображение информации (все запросы с SELECT), вторым query (или даже лучше command) вносите данные в БД (Запросы INPUT, UPDATE, DELETE).
Но могу и ошибаться. Проверить пока что негде. Последний раз редактировалось PiboDIE, 23.06.2009 в 16:12. |
#5
|
|||
|
|||
![]() Если делать как ты говоришь ,то получиться так что выбьет второй квери в пасивное положение..полбому обоим квери нужно в свойствах стандартный запрос делать на выделение данных из таблицы..если я конечно не ошибаюсь..поэтому не получается возможным разбить на два компонента так как обязательно обоим делать селект из базы..я так думаю..попробывать как ты говоришь, я просто создам полную копию первому квери..ведь что бы поставить второй квери в активную позицию выбивает ошибку ,что надо запрос в свойствах заполнить.
|
#6
|
|||
|
|||
![]() Зачем обоим выполнять выборку? Вроде как один квери справлялся до этого. Просто смысл в том, что отображение данных из базы должен выполнять один компонент, а внесение данных - другой. Можно, конечно, все реализовать на базе одного компонента, но в этом случае перед выполнением ExecSQL отключить датасорс, а после выполнения - заново отфильтровать данные из базы и включить датасорс.
Проблема скорее всего кроется в том, что один компонент не может не сбивая фильтр производить изменения в базе данных. |
#7
|
|||
|
|||
![]() Посмотри как это делает программа DA-GENERATOR
Программа автоматически создает DELPHI исходники для работы с таблицами САЙТ ПРОГРАММЫ : FDEVELOPER.COM DEMO ВЕРСИЯ - http://fdeveloper.com/index.php?name=Files&op=cat&id=2 HELP - http://fdeveloper.com/index.php?name...iew_file&lid=2 ВИДЕО УРОКИ - http://fdeveloper.com/index.php?name=Files&op=cat&id=4 ПРИМЕРЫ СГЕНЕРИРОВАННЫХ ПРОГРАММ - http://fdeveloper.com/index.php?name=Files&op=cat&id=5 |