Форум: "Начинающим";
Текущий архив: 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.003 c