Помощь - Поиск - Пользователи - Календарь
Полная версия: Ошибка при записи в Access
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
cooler
Код
begin
Form2.ADOQuery1.Close;
Form2.ADOQuery1.Open;
Form2.ADOQuery1.Edit;
Form2.ADOQuery1.insert;
Form2.ADOQuery1.FieldByName('client_name').Asstring := Edit1.Text;
Form2.ADOQuery1.FieldByName('client_address').Asstring := Edit2.Text;
Form2.ADOQuery1.FieldByName('client_phone').Asstring := Edit3.Text;
Form2.ADOQuery1.Post;
end;

Вот фрагмент кода, все поля существуют в тблице, в одной, у всех текстовый тип, таблица сохранена и закрыта
Но в 'client_phone' писать не хочет - выдаёт ошибку что поле не найдено.
Что проверить, где может быть проблема?
Client
сначала метод Edit, потом Insert... Вот и ошибка. И зачем сначала Close потом Open?
Form2.ADOQuery1.insert;
...
Form2.ADOQuery1.Post;
volvo
Цитата
где может быть проблема?
В попытке вносить изменения в базу данных через ADOQuery + прямую запись в поля (вместо того чтобы закрыть Query, заполнить ее поле SQL нужным INSERT-запросом, открыть Query и вызвать этот запрос через ExecSQL).

Не надо делать действия не предназначенными для этого средствами. Это приведет (сейчас или потом, но приведет обязательно) к проблемам, из-за которых ты в последний момент будешь вынужден переписывать либо весь код, либо значительную его часть. Если тебя это устраивает - пиши как тебе нравится. Если нет - пиши правильно. SQL - это слишком мощный язык, чтобы его недооценивать или реализовывать вручную то, что можно легко сделать с его помощью.
Feagor
Вообще с методами 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;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.