Вот фрагмент кода, все поля существуют в тблице, в одной, у всех текстовый тип, таблица сохранена и закрыта Но в 'client_phone' писать не хочет - выдаёт ошибку что поле не найдено. Что проверить, где может быть проблема?
Автор: Client 15.05.2010 13:48
сначала метод Edit, потом Insert... Вот и ошибка. И зачем сначала Close потом Open?
Form2.ADOQuery1.insert; ... Form2.ADOQuery1.Post;
Автор: volvo 15.05.2010 16:47
Цитата
где может быть проблема?
В попытке вносить изменения в базу данных через ADOQuery + прямую запись в поля (вместо того чтобы закрыть Query, заполнить ее поле SQL нужным INSERT-запросом, открыть Query и вызвать этот запрос через ExecSQL).
Не надо делать действия не предназначенными для этого средствами. Это приведет (сейчас или потом, но приведет обязательно) к проблемам, из-за которых ты в последний момент будешь вынужден переписывать либо весь код, либо значительную его часть. Если тебя это устраивает - пиши как тебе нравится. Если нет - пиши правильно. SQL - это слишком мощный язык, чтобы его недооценивать или реализовывать вручную то, что можно легко сделать с его помощью.
Автор: Feagor 30.05.2010 0:43
Вообще с методами post,insert,delete надо очень аккуратно работать. они приемлемы только в том случае, когда идет работа с одной таблицей. при работе с несколькими таблицами или связанными таблицами эти методы будут скорее всего выдавать ошибку. сейчас работая над одним проектом,на который выдали очень мало времени? все заполнения таблиц делаю используя dbedit'ы и вышеназванные методы adoquery. очень удобно, и довольно быстро получается, но опять же надо четко понимать с чем ты работаешь. Советую вместо edit'ов воткнуть dbedit'ы, после чего использовать
adoquery.open; adoquery.append; adoquery.insert;
естественно, пердварительно связав dbedit'ы с соответствующими таблицами и полями или же как сказал volvo юзай sql запросы, типа такого:
adoquery.sql.clear; adoquery.sql.add('insert into {название таблицы} (client_name,client_address,client_phone)' ); adoquery.sql.add('values ('''+edit1.Text+''','''+edit2.Text+''','''+edit3.Text+''');'); adoquery.execsql;