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

Вниз

Неправильный запрос   Найти похожие ветки 

 
Irisss   (2010-07-12 10:02) [0]

Сделал запрос,
высвечивает ошибку -804
Что пишу неправильно, подскажите пожалуйста.
Типы вроде бы совпадают
INSERT INTO REP_VAL_TUR_1_65 (ID_CALC, ID_ITEM, ID_CALC_MODE, ITEM_VALUE)VALUES (""29062010937"", 10, ""FACT"", 0,00)


 
Anatoly Podgoretsky ©   (2010-07-12 10:06) [1]

И что кроме номера, больше ничего?


 
Irisss   (2010-07-12 10:12) [2]

Сказало, что запрос неправильно составлен.
Скорее всего, я нашел в чем дело: в значении типа Double строка запроса содержит запятую, а не точку.
Буду разбираться
спасибо


 
И. Павел   (2010-07-12 10:37) [3]

У вас в Value - 5 параметров, а указано всего 4 поля. Скорее всего, вы считаете, что 0,00 - это 1 число, а MS SQL SERVER считает, что это 2 числа :)


 
И. Павел   (2010-07-12 10:39) [4]

> в значении типа Double строка запроса содержит запятую,
> а не точку

Оказывается, уже нашли проблему. Используйте параметры - и таких трудностей не возникнет.


 
Anatoly Podgoretsky ©   (2010-07-12 11:09) [5]


> а MS SQL SERVER считает, что это 2 числа

а MS SQL SERVER так не считает, а считает, что это два параметра/объекта.


 
Irisss   (2010-07-12 12:30) [6]

кричит на тот же запрос, но с параметром, что вот есть такая ошибка:

> Violation of FOREIGN KEY constraint"".
> Violation of FOREIGN KEY constraint "FK_REP_VAL_TLIRB_1_ID_ITEM"
> on table " REP_VAL_TUR_1_65".
> Foreign key reference target does not exist.


 
12 ©   (2010-07-12 12:41) [7]

ну нет значит в главной таблице такого значения, которое в подчиненную вставляется


 
Anatoly Podgoretsky ©   (2010-07-12 13:25) [8]


> кричит на тот же запрос

Где сам запрос?


 
Irisss   (2010-07-12 17:08) [9]

Большое СПАСИБО за ответы

Вот еще одна незадача(или скорее задача). Запрос не выдает вообще ни одной ошибки, а результат не присваевает.

Запрос все тот же:
" INSERT INTO REP_VAL_TURBINE_1_PT_65
(ID_CALC, ID_ITEM, ID_CALC_MODE, ITEM_VALUE)
VALUES
(""29062010937"", 10, ""FACT"", :ITEM_VALUE)"


пишу так
       Request := Format(" INSERT INTO %s (ID_CALC, ID_ITEM, ID_CALC_MODE, ITEM_VALUE)"
                            + "VALUES (""%s"", %d, ""%s"", :ITEM_VALUE)",
                            [ItemTableName, calculation_id, id_item_type, calc_mode ]);

       query.Close;
       query.SQL.Clear;
       query.SQL.Add(Request);
       query.paramByName("ITEM_VALUE").AsDouble := item.Value;

       query.ExecQuery();


Подскажите, что неправильно


 
12 ©   (2010-07-12 17:18) [10]

так как-то если

" INSERT INTO REP_VAL_TURBINE_1_PT_65
(ID_CALC, ID_ITEM, ID_CALC_MODE, ITEM_VALUE)
VALUES
(:F1, :F2, :F3, :ITEM_VALUE)"

query.paramByName("ITEM_VALUE").AsDouble := item.Value;
query.paramByName("F1").AsDouble := item.Value; // по смыслу
query.paramByName("F2").AsDouble := item.Value;
query.paramByName("F3").AsDouble := item.Value;

query.ExecSQL

query  session/connection  commit


 
Irisss   (2010-07-12 17:31) [11]

сделал, как сказали:

       Request := " INSERT INTO %s ( ID_CALC,  ID_ITEM,  ID_CALC_MODE,  ITEM_VALUE)"
                + "VALUES (:ID_CALC, :ID_ITEM, :ID_CALC_MODE, :ITEM_VALUE)";

       query.Close;
       query.SQL.Clear;
       query.SQL.Add(Request);
       query.paramByName("ID_CALC").AsString       := ItemTableName;
       query.paramByName("ID_ITEM").AsString       := calculation_id;
       query.paramByName("ID_CALC_MODE").AsInteger := id_item_type;
       query.paramByName("ITEM_VALUE").AsDouble    := item.Value;

       query.ExecQuery();


Выдало ошибку:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 14.
%.


О чем это оно со мной разговаривает?


 
Irisss   (2010-07-12 17:51) [12]

Нашел ошибку, буду дальше думать. Спасибо


 
Anatoly Podgoretsky ©   (2010-07-12 21:59) [13]

> Irisss  (12.07.2010 17:31:11)  [11]

Какой еще %s в запросе?


 
MsGuns ©   (2010-07-13 21:41) [14]

>12 ©

Тебе бы еще учиться и учиться, а ты лезешь везде со своими советами :)


 
Двенадцать ©   (2010-07-14 09:52) [15]

> Тебе бы еще учиться и учиться, а ты лезешь везде со своими
> советами :)

чукча не читатель :)
а конкретно, что не так?


 
Irisss   (2010-07-15 11:32) [16]

Такой код:
       Request := Format(" INSERT INTO %s ( ID_CALC,  ID_ITEM,  ID_CALC_MODE,  ITEM_VALUE)"
                + " VALUES (:ID_CALC, :ID_ITEM, :ID_CALC_MODE, :ITEM_VALUE)", [ItemTableName] );

       query.Close;
       query.SQL.Clear;
       query.SQL.Add(Request);
       query.paramByName("ID_CALC").AsString       := calculation_id;
       query.paramByName("ID_ITEM").AsInteger      := id_item_type;
       query.paramByName("ID_CALC_MODE").AsString  := calc_mode;
       query.paramByName("ITEM_VALUE").AsDouble    := item.Value;


Формируется такой запрос:
" INSERT INTO REP_VAL_TURBINE_1_PT_65 ( ID_CALC,  ID_ITEM,  ID_CALC_MODE,  ITEM_VALUE) VALUES (:ID_CALC, :ID_ITEM, :ID_CALC_MODE, :ITEM_VALUE)"

Запрос проходит, а данные не заносятся. Господа мастера, подскажите, пожалуйста, в чем дело?


 
Irisss   (2010-07-15 11:33) [17]

Удалено модератором


 
Irisss   (2010-07-15 11:50) [18]

Попробовал набрать запрос в Script Executive:
INSERT INTO REP_VAL_TURBINE_1_PT_65
( ID_CALC,  ID_ITEM,  ID_CALC_MODE,  ITEM_VALUE)
VALUES
("29062010937", 10, "FACT", 0)


Выдало:
Script executed with errors!
Total execution time: 16ms


Где ошибаюсь?


 
Двенадцать ©   (2010-07-15 12:29) [19]

> Запрос проходит, а данные не заносятся

commit есть?


 
Irisss   (2010-07-15 12:34) [20]

у query такого свойства вроде бы нет


 
Двенадцать ©   (2010-07-15 13:03) [21]

это метод, должен быть
в любом случае, у сессии должен быть

Oracle, вроде, так?
тип query?
ADO, DOA?


 
Irisss   (2010-07-15 13:13) [22]

Заработало!
спасибо большое


 
Irisss   (2010-07-15 13:13) [23]

Удалено модератором


 
Двенадцать ©   (2010-07-15 13:20) [24]

тебе в [10], жирным, зачем писалось :)


 
Irisss   (2010-07-16 09:57) [25]

Уважаемые мастера,
помогите еще с одним вопросом:
сделал обновление поля. Работает каждый n-ый раз, толко когда захочет
запрос такой
           Request := "UPDATE "
                    + ItemTableName + " "
                    + "SET ITEM_VALUE = :ITEM_VALUE "
                    + "WHERE (ID_CALC = :ID_CALC) "
                    + "AND (ID_ITEM = :ID_ITEM) "
                    + "AND (ID_CALC_MODE = :ID_CALC_MODE) "
                    + "AND (ID_MODE = :ID_MODE)";

       query.Close;
       query.SQL.Clear;
       query.SQL.Add(Request);
       query.paramByName("ID_CALC").AsString       := calculation_id;
       query.paramByName("ID_ITEM").AsInteger      := id_item_type;
       query.paramByName("ID_CALC_MODE").AsString  := calc_mode;
       query.paramByName("ID_MODE").AsInteger      := 11;
       query.paramByName("ITEM_VALUE").AsDouble    := item.Value;
       query.ExecQuery();
   con.DataBase.Commit();
   query.Free();


запрос получается такой:
UPDATE REP_VAL_TURBINE_1_PT_65
SET ITEM_VALUE = 1
WHERE (ID_CALC = "29062010937")
AND (ID_ITEM = 10)
AND (ID_CALC_MODE = "FACT")
AND (ID_MODE = 1)


Ошибок не выдает, но и поле не обновляет.

Подскажите что, а?


 
12 ©   (2010-07-16 10:21) [26]


> Ошибок не выдает

точно? а они не гасятся нигде?

и лучше новую строку писать с пробела

>            Request := "UPDATE "
>                     + ItemTableName + " "
>                     + "[пробел]SET ITEM_VALUE = :ITEM_VALUE "
>                     + "[пробел]WHERE (ID_CALC = :ID_CALC) "
>                     + "[пробел]AND (ID_ITEM = :ID_ITEM) "
>                     + "[пробел]AND (ID_CALC_MODE = :ID_CALC_MODE)
> "
>                     + "[пробел]AND (ID_MODE = :ID_MODE)";

влруг что склеилось?


 
Омлет   (2010-07-16 10:23) [27]

А по этому же условию поле находит через SELECT?


 
Юрий Зотов ©   (2010-07-16 10:39) [28]

См. [19].
Commit есть?


 
Irisss   (2010-07-16 11:03) [29]

пробела не хватало, спасибо


 
Плохиш ©   (2010-07-16 11:04) [30]


> Irisss   (16.07.10 09:57) [25]

Пора уже программиста нанять.


 
Anatoly Podgoretsky ©   (2010-07-16 11:54) [31]


> и лучше новую строку писать с пробела

Одназначно.


 
Irisss   (2010-07-20 10:28) [32]

подскажите еще, пожалуйста, что он мне пишет:
Project InRep.exe raised exception class EFIBInterBaseError with message Violation of FOREIGN KEY
constraint"".
Violation of FOREIGN KEY constraint "FK_INIT_ITEM_TYPE_TURB_1_PT_65" on tab|e
"REP_ITEM_TURBINE_1 _PT_65".
Foreign key reference target does not exist.


и как это исправить


 
Anatoly Podgoretsky ©   (2010-07-20 10:40) [33]

> Irisss  (20.07.2010 10:28:32)  [32]

Тебе в других совсем других форума

1. форум по ИБ
2. форум "учимся английскому"


 
Юрий Зотов ©   (2010-07-20 11:02) [34]

> Irisss   (20.07.10 10:28) [32]

Переведите с английского:
Foreign key reference target does not exist.
и погуглите на тему "foreign key" (внешний ключ, внешняя ссылка) - что это такое и с чем его едят.

Вообще, действительно - прежде, чем браться за разработку БД было бы неплохо освоить хотя бы азы этих самых БД. Тем более, что материалов на эту тему - выше крыши.

Иначе сильно напоминает блондинку, которая за руль села, но где какая педаль и для чего она нужна - не знает. Поэтому на каждом метре останавливается и спрашивает у соседних водителей.



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

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

Наверх




Память: 0.55 MB
Время: 0.008 c
15-1278792046
Kerk
2010-07-11 00:00
2010.10.10
Посоветуйте WiFi-роутер


15-1278957018
Дмитрий С
2010-07-12 21:50
2010.10.10
Планировщик заданий как модуль apache


2-1278914568
Irisss
2010-07-12 10:02
2010.10.10
Неправильный запрос


2-1279601277
Андрей_1
2010-07-20 08:47
2010.10.10
Цвет шрифта DBGrid


15-1278920302
Дмитрий Белькевич
2010-07-12 11:38
2010.10.10
Как насильно сделать апдейт хэлпа Delphi 2010?