Форум: "Базы";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
ВнизUpdate с параметром - не пашет :(( Найти похожие ветки
← →
koks (2004-01-19 11:54) [0]Уважаемые мастера, помогите пож-то решить проблемку - задолбался.
Выполняю запрс с параметрами (TQuery):
SQL:
UPDATE BASE
SET RCTID=:RCTID
WHERE NOMER=:NOMER
для параметров CTID и NOMER в дизайне установлены следующие свойства:
DataType := ftInteger
NumericScale := 0
ParamType:= ptInput
Precision := 0
Size := 0
Value := 0
Value.Type := integer
в программе:
Query.Close;
Query.ParamByName...AsInteger := ....
Query.ExecSQL - вылетает ошибка: DBEngineError: Type mismatch in expression...
подскажите как бороться.... Очччень много всего пробовал - один фиг.
База - DBase. (файлы - DBASE IV)
В настройках BDE - для DBASE по умолчанию LEVEL 4.....
← →
Mike Kouzmine (2004-01-19 12:04) [1]Препаре?
А поля в таблице какого типа?
← →
VAleksey (2004-01-19 12:17) [2]Поля в таблице не того типа.
← →
koks (2004-01-19 14:25) [3]Prepare предварительно выполняется. без ошибок.
Поля:
RCTID: N 2, 0
NOMER: N 10, 0
← →
Academic (2004-01-19 17:04) [4]
> DataType := ftInteger
Попробуй ftFloat, для Numeric Fields
← →
Desdechado (2004-01-19 20:02) [5]попробуй сконструировать запрос в коде динамически, не зашивая параметров в форму. Они создадутся, когда будешь делать
qry.SQL.Text := "UPDATE..."
← →
Anatoly Podgoretsky (2004-01-19 22:30) [6]N10 и Integer :-)
Посчитай на пальцах и поймешь
← →
koks (2004-01-20 09:30) [7]Я это все уже пробовал... Ну попрробовал еще раз - поставил DataType := ftInteger сначала только для поля NOMER, а затем и для RCTID. Результата тот-же.
Desdechado - да, если не разберусь, то вместо запросов с параметрами буду использовать динамическое формирование SQL-строки. (Там уж безо всяких параметров.) Только не хотелось бы... Вообще в данном случае "классикка" - это использовыать параметры...
Только вот ошибка не понятна...
← →
Anatoly Podgoretsky (2004-01-20 09:37) [8]Еще раз 10 знаков это 9 999 999 999
← →
Desdechado (2004-01-20 11:11) [9]а Integer ~ +-2млрд
хотя параметры можно и в динамическом рисовать:
"UPDATE tbl SET x=:P1 where y=:P2"
← →
koks (2004-01-20 11:59) [10]Тьфу ты ексель-моксель - в предыдущем посте я ошибся. Ну конечно же я ставил DataType := ftFloat;
Извините за ошибочку. Ну так вот - с ftFloat та же ошибка.
← →
Anatoly Podgoretsky (2004-01-20 12:06) [11]Сделай такой запрос и посмотри в ИДЕ типы полей
UPDATE BASE
SET RCTID=1
WHERE NOMER=1
Возможно окажется не ftFloat
← →
koks (2004-01-20 16:20) [12]а как я посмотрю типы полей в IDE. Это ведь не SELECT- запрос. Объекты полей не создаются вообще - пишет Error creating cursor handle.
← →
ЮЮ (2004-01-21 09:36) [13]> koks (20.01.04 16:20) [12] ...а как я посмотрю типы полей в IDE
1) открой запрос SELECT RCTID, NOMER FROM BASE и узнаешь какие типы полей
2) не используй
Query.ParamByName... AsInteger :=, т.к. это может привести к смене на ftInteger
← →
Anatoly Podgoretsky (2004-01-21 09:39) [14]koks (20.01.04 16:20) [12]
Если не нравится UPDATE, то напиши запрос с SELECT
← →
koks (2004-01-21 13:00) [15]ЮЮ
а как учше.... AsVariant или как.
← →
ЮЮ (2004-01-22 06:10) [16].Value :=
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.015 c