Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 18:48   #1
NikkMih
 
Регистрация: 29.05.2010
Сообщений: 7
По умолчанию Добавление записей через SQL: не добавляются числовые поля

Хочу добавить запись в простую таблицу через ADOQuery. Когда пишу запрос SQL, то если пишешь только строковые поля - добавляет, а если хочешь добавить и числовые - пишет ошибку "Ошибка синтаксиса в инструкции Insert Into". Таблица создана в Access
NikkMih вне форума Ответить с цитированием
Старый 29.05.2010, 18:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А мы тут телепатически поднапряжёмся и сразу скажем, что и где Вы делаете не так!

для начала давайте Delphi код, которым пытаетесь добавить запись.
А так рискну предположить, что Вы числовые значения пишете в кавычках и/или десятичный разделитель не совпадает с тем, что в БД....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2010, 14:14   #3
NikkMih
 
Регистрация: 29.05.2010
Сообщений: 7
Сообщение

Код такой:
Код:
var Naz, SQL: string;
      Ind: integer;
-----------------------	
SQL:='Insert Into Spisok_gaz (Nazv, Index) Values (:Nazv, :Index);';
DataModule1.Q1.SQL.Clear;
DataModule1.Q1.SQL.Add(SQL);
DataModule1.Q1.Parameters.ParamByName('Nazv').Value:=Naz;
DataModule1.Q1.Parameters.ParamByName('Index').Value:=Ind;
DataModule1.Q1.ExecSQL;
Если в строке SQL пытаюсь добавить только Nazv, то все проходит, а если Nazv и Index, возникает та самая ошибка с синтаксисом. Я сейчас сделал все это с помощью объектов полей, которые создаются в FieldsEditor, и все работает. Но интересно, почему SQL не работает.

Таблица:
Kod_gaz - счетчик
Nazv - строка, 40 симв
Index - длинное целое

Заранее спасибо!

Последний раз редактировалось Stilet; 01.06.2010 в 14:56.
NikkMih вне форума Ответить с цитированием
Старый 01.06.2010, 15:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

уж сколько раз твердили миру - НЕ ИСПОЛЬЗУЙТЕ КЛЮЧЕВЫЕ СЛОВА в качестве названий таблиц и полей!
Даже если СУБД это позволяет, потом можно получить кучу глюков и неприятностей!
Неужели фантазии совсем не хватает!?!!

переименуйте поле Index, в например - GazIndex

p.s. если СУБД MS SQL или MS Access можете попытаться написать имя поля в квадратных скобках. например, так:
Код:
SQL:='Insert Into Spisok_gaz (Nazv, [Index]) Values (:Nazv, :pIndex);';
...
DataModule1.Q1.Parameters.ParamByName('pIndex').Value:=Ind;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2010, 18:28   #5
NikkMih
 
Регистрация: 29.05.2010
Сообщений: 7
Хорошо

Спасибо! Мне никто этого ни разу не повторял. Вы хотите сказать, что у других объектов могут быть методы/свойства с подобными именами, и из-за этого м.б. конфликты? На самом деле побольше бы таких "повторяющих" как вы, потому что я раньше такого ни разу не слышал. Завтра проверю на работе.
NikkMih вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записей IvaNNN БД в Delphi 6 11.12.2009 15:02
Добавление записей в таблицы Fishb1 Microsoft Office Access 2 26.02.2009 21:45
Редактирование записей, отобранных через SQL Detka Помощь студентам 28 08.02.2009 01:56
Добавление записей Liones БД в Delphi 3 25.12.2008 10:08
Добавление Удаление Редактирование через SQL beginner БД в Delphi 4 29.05.2007 17:52