Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

Вставка значения в поле с зарезервированным именем(SUM)   Найти похожие ветки 

 
zdm   (2006-06-20 10:50) [0]

Есть таблица , пишу
DataModule1.Query1.sql.Add("INSERT INTO r (SUM) VALUES (2)");
или
DataModule1.Query1.sql.Add("INSERT INTO r ([SUM]) VALUES (2)");
полный облом(invalid keyword....), сохраняю запрос в файл, создаю запрос из самой ACCESS все выполняется, я так понимаю дело именно в названии поля, можно-ли как-то обойти. Название поля менять я не имею права.Заранее спасибо


 
Desdechado ©   (2006-06-20 10:55) [1]

в некоторых СУБД помогает взятие имени поля в кавычки (двойные)


 
zdm   (2006-06-20 11:05) [2]

Ты имеешь ввиду "INSERT INTO r ("SUM") VALUES (2)" ?


 
zdm   (2006-06-20 11:11) [3]

не помогает


 
Sergey13 ©   (2006-06-20 11:17) [4]

А сколько всего полей в таблице. Если одно это (что странно), то возможно поможет
"INSERT INTO r VALUES (2)"
Если не одно, то
"INSERT INTO r VALUES (null,null,2,null,null)"
т.е. порядок полей должен соответствовать истинному.
Хотя с кавычками вроде должно бы работать.


 
zdm   (2006-06-20 11:33) [5]

да в принципе не важно сколько полей, есть четыре, не одного ключевого(не я базу состовлял),,,вообщем подробно:
СУБД dBase
поля:
nls: char(17)
ksnls:Numeric(2,0)
sum:Numeric(12,2)
dat:Date
во все поля кроме (sum), вставка без проблем.


 
saxon   (2006-06-20 11:36) [6]

С ACCESS всегда просто разобраться, если вставить в редактор SQL самого ACCESS. Он сам подскажет (или изменит) что и как.


 
Sergey13 ©   (2006-06-20 11:42) [7]

2 [5] zdm   (20.06.06 11:33)
"INSERT INTO r VALUES (null,null,2,null)" попробуй.
ЗЫ: Хотя странная задача - вставить запись с одним значимым полем в таблицу без ключей.


 
zdm   (2006-06-20 11:45) [8]

да вообщем я же говорил что ACCESS запрос выполняет, а из проги нет,,,вообщем на сколько я понял Delphi пыталась, определить (sum) не как поле а как "вычеслить сумму" , глюк короче какой-то а  помог совет SERGEY 13----вообщем вообще не упоминать имя поля ....."INSERT INTO r VALUES ("1","1","1","13.06.2006"). Всем большое спасибо


 
zdm   (2006-06-20 11:47) [9]

Прошу прощения
(INSERT INTO r  VALUES ("1","1","1","13.06.2006"));
было приятно пообщаться


 
Desdechado ©   (2006-06-20 11:48) [10]

так, к сведению

Неупоминание имен полей чревато ошибками и долгими трудами в дальнейшем, если БД "дышит" (развивается) - добавляются/удаляются/переупорядочиваются поля в таблицах.


 
zdm   (2006-06-20 11:49) [11]

да понятно, просто не я базу составлял, я обычно заранее все продумываю,,,а тут , что досталось по наследству.....то и досталось..Придется с этим жить.


 
Sergey13 ©   (2006-06-20 11:52) [12]

> [9] zdm   (20.06.06 11:47)
> Прошу прощения
> (INSERT INTO r  VALUES ("1","1","1","13.06.2006"));
> было приятно пообщаться

Лучше переделать на параметры. Иначе с датой могут быть проблемы. Тем более если база не твоя и с ней работает кто-то еще.
(INSERT INTO r  VALUES (:p1,:p2,:p3,:p4));


 
sniknik ©   (2006-06-20 11:56) [13]

> я же говорил что ACCESS
а раньше говорил что
> СУБД dBase

в access (jet) "нестандартные" имена обьектов заключаются в квадратные кавычки [].


 
zdm   (2006-06-20 11:58) [14]

я просто обычно переменными передаю, а это я для примера просто написал,,,кстати параметры это конечно хорошо, но в сложных запросах с ними часто возникают проблемы. Все равно спасибо за советы. Я раньше в форумах вопросы не задавал...А зря видимо.


 
zdm   (2006-06-20 12:00) [15]

квадратные кавычки не помогают, я же в начале написал два примера
DataModule1.Query1.sql.Add("INSERT INTO r (SUM) VALUES (2)");
или
DataModule1.Query1.sql.Add("INSERT INTO r ([SUM]) VALUES (2)");
не один не работает......ну вообщем ладно разобрались и ладно


 
sniknik ©   (2006-06-20 12:32) [16]

> квадратные кавычки не помогают
если ты используеш jet, то должно помочь, это его стандарт. BDE то должны сработать двойные кавычки, типа INSERT INTO r (r."SUM") VALUES (2), других вариантов у них нет.

если же чтото экзотическое ... ну тогда с ним и надо разбираться, посмотреть в описании, у них могут быть еще варианты.

> ну вообщем ладно разобрались и ладно
пока еще нет, пока ты только нашол приемлемый для себя вариант.


 
zdm   (2006-06-20 12:42) [17]

DataModule1.Query1.sql.Add("INSERT INTO r (SUM) VALUES (2)");
не помагает, а
DataModule1.Query1.sql.Add("INSERT INTO r (r."SUM") VALUES (2)");
помогло, вообщем теперь разобралить до конца, всем большое спасибо еще раз.



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
2-1154705644
Mr tray
2006-08-04 19:34
2006.08.27
cos(1/2*pi)=-4.3711388287e-08


1-1152854018
AlexeyT
2006-07-14 09:13
2006.08.27
Библиотека RegEx с поиском в файлах?


3-1150872268
Jakudza
2006-06-21 10:44
2006.08.27
Как в QuickReport сделать CrossTab отчет


2-1155048317
Ega23
2006-08-08 18:45
2006.08.27
TBitmap to TIcon


1-1152639434
MikProg
2006-07-11 21:37
2006.08.27
Сенсация! Код initialization может не выполнятся!