Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Евгешик

Ошибка при добавлении данных в Access

08.06.2011, 00:16. Показов 3167. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, нужна помощь в исправлении ошибки: "ошибка синтаксиса в инструкции Insert INTO".
Ошибка возникает при попытке добавить Данные с формы в БД(access), вот собственно код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
with datamodule1.ADOQueryadd do
begin
sql.Text:='insert into zakaz(Nomer, Klient, id, Size, Kol_vo, Summa, Date)'+
          'Values(:num, :klnt, :siz, :kolv, :sm, :date)';
parameters.ParamByName('num').Value:=strtoint(labelnum.Caption);
parameters.ParamByName('klnt').Value:=Comboboxkl.Text;
parameters.ParamByName('siz').Value:=strtoint(comboboxraz.Text);
parameters.ParamByName('kolv').Value:=strtoint(editkol.Text);
parameters.ParamByName('sm').Value:=strtoint(labelprice.Caption);
parameters.ParamByName('date').Value:=DateTimePickerdz.DateTime;
ExecSQL;   <=============Ошибку показывает в этой строке=====<< 
end;
Читал различные хелпы, форумы , так и не понял как исправить.
Всем Спасибо за внимание!

Этот способ нашел на другом форуме. Буду рад услышать, если есть более простой/рациональный метод добавления данных в БД.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2011, 00:16
Ответы с готовыми решениями:

Ошибка при добавлении данных БД
procedure TForm16.Button1Click(Sender: TObject); var s,m:String; begin begin s:='INSERT INTO Заказы (, , , ,,) VALUES...

Ошибка при добавлении данных
Подскажите пожалуйста. procedure TFormAdd.btn1Click(Sender: TObject); var id_vid_peredachi: Integer; id_radioset,...

Ошибка при добавлении данных
При добавлении данных на главную форму, выводится ошибка, связанная с компонентом IBQuery2, расположенным на главной форме, подскажите...

5
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
08.06.2011, 07:05
Вывести итоговый текст запроса куда-нить (например в файл) и проанализировать.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
08.06.2011, 08:40
Цитата Сообщение от Евгешик Посмотреть сообщение
Ошибку показывает
А показать текст сообщения об ошибке что не ипозволяет? Или это великая тайна есть!
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.06.2011, 12:23
Ошибка в том, что у Вас список значений не соответствует списку полей (первый короче на одно значение). При таком синтаксисе оператора INSERT обязательно, чтобы порядок полей, перечисляемых после INTO ... строго соответствовал списку значений (VALUES)

При подстановке параметров не забывать приводить данные к нужному типу ( у Вас, похоже с этим полный порядок) !

База Ваша, похоже не нормализована - займитесь этим (используйте справочники - в частности справочник клиентов !)

Что же касается

Delphi
1
Буду рад услышать, если есть более простой/рациональный метод добавления данных в БД.
радуйтесь:
Более простого (рационального) метода добавления в базу новой записи, введенной на клиенте не существует. Единственная помарочка - выкиньте TADOQuery и используйте TADODataSet - для отображения и TADOCommand - для внесения правок в БД.

Правильной дорогой идете, товарищ !
(В.И. Ленин)



Добавлено через 4 минуты
Добавка (пропустил id):

Если это у вас Счетчик (в акцесе, в MS SQL - автоинкремент, ну суть одна), то он сам определится и пропишется в новую запись, трогать его нельзя ни в коем случае !
И не забывайте про Select @@identity для извлечения id только что добавленной записи в таблицу - многие забьывают об этом, а ведь без значения этого ID нельзя корректно добавлять "детальные" записи в технологиях один-ко-многим

Добавлено через 5 минут
Правильный код в Вашем случае будет выглядеть так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
with TADOCommand.Create(nil) do
  try
    Connection := ADOConnection1;
    CommandText := 'insert into zakaz(Nomer, Klient, Size, Kol_vo, Summa, Date)'+
          'Values(:num, :klnt, :siz, :kolv, :sm, :date)';
    parameters.ParamByName('num').Value:=strtoint(labelnum.Caption);
    parameters.ParamByName('klnt').Value:=Comboboxkl.Text;
    parameters.ParamByName('siz').Value:=strtoint(comboboxraz.Text);
    parameters.ParamByName('kolv').Value:=strtoint(editkol.Text);
    parameters.ParamByName('sm').Value:=strtoint(labelprice.Caption);
    parameters.ParamByName('date').Value:=DateTimePickerdz.DateTime;
    try
       Execute;
    except
       ShowMessage('Ошибка добавления');
    end;
  finally
    Free;
  end;
end;
ЗЫ. А у Вас сумма действительно интежер ?
1
Евгешик
08.06.2011, 16:24
Цитата Сообщение от SAMZ Посмотреть сообщение
А показать текст сообщения об ошибке что не ипозволяет? Или это великая тайна есть!
Цитата Сообщение от Евгешик Посмотреть сообщение
нужна помощь в исправлении ошибки: "ошибка синтаксиса в инструкции Insert INTO".
Это и есть текст ошибки.

Добавлено через 16 минут
MsGuns, Спасибо за ответ, попробовал сделать на adocommand, все равно что-то не так .

Adocommand добавил вручную и ввёл туда: "insert into zakaz Values(:klnt, :id, :siz, :kolv, :sm, :date)"

Код теперь стал таким:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
with datamodule1.ADOCommandadd do
begin
parameters.ParamByName('klnt').Value:=Comboboxkl.Text;
parameters.ParamByName('siz').Value:=strtoint(comboboxraz.Text);
parameters.ParamByName('id').Value:=strtoint(labelid.Caption);
parameters.ParamByName('kolv').Value:=strtoint(editkol.Text);
parameters.ParamByName('sm').Value:=strtoint(labelprice.Caption);
parameters.ParamByName('date').Value:=DateTimePickerdz.DateTime;
try
execute;
except
Showmessage('Не получилось');
end;
Таблица вида:

nomer.....klient.....id.....size.....kol _vo.....summa.....date

Причем nomer - счётчик, и по совету MsGuns не стал его добавлять никуда. В итоге имею ошибку:

Не совпадает число значений запроса и число результирующих полей
.

Что можно изменить/добавить?
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.06.2011, 17:21
insert into zakaz (klnt, id, siz, kolv, sm, date)
Values(:klnt, :id, :siz, :kolv, :sm, :date)

Пользуйтесь справкой по SQL, а запрпосы отлаживайте в самом акцесе

Добавлено через 1 минуту
Осторожнее с зарезевированными словами, - их надо брать в кавычки (кв.скобки для акцеса) а лучше вообще не использовать при проектировании как названия таблиц, полей...
(в Вашем случае это поле 'Date')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2011, 17:21
Помогаю со студенческими работами здесь

Ошибка при добавлении данных
Добрый день. Пытаюсь добавить данные в таблицу и появляется ошибка. Код кнопки procedure TForm1.Button2Click(Sender: TObject); ...

Ошибка при добавлении данных
Доброго времени суток. Подскажите пожалуйста. Добавляю данные в БД Access. Изначально был код добавления такой:1 procedure...

Ошибка при добавлении данных в БД Access
доброе время суток всем. Пытаюсь в VB2013 произвести добавление записи в Acsess 2010 но у меня появляется ошибка. Помогите...

Ошибка при добавлении в БД Access
Если не затруднит, помогите исправить ошибку

Ошибка при добавлении записей в БД Access
private void add_Click(object sender, EventArgs e) { string bdpersonname = { &quot;Имя&quot;, &quot;Фамилия&quot;, &quot;Отчество&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru