Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.10.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.004 c
11-1225192492
samir105
2008-10-28 14:14
2010.10.10
Искажаются некоторые Unicode символы!


2-1279461553
@!!ex
2010-07-18 17:59
2010.10.10
Закрытие приложения из сервиса


3-1246004813
kudatsky
2009-06-26 12:26
2010.10.10
Проблемма с функцией CAST()


6-1226928849
com
2008-11-17 16:34
2010.10.10
узнать, есть ли открытые смб-ресурсы на конкретном ип


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский