![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Update с параметром - не пашет :(( [D7, dBase, FoxPro]
koks © (2004-01-19 11:54:00)
Уважаемые мастера, помогите пож-то решить проблемку - задолбался.
Выполняю запрс с параметрами (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.....
ЮЮ (2004-01-22 06:10:00) [1]
.Value :=
koks (2004-01-21 13:00:00) [2]
ЮЮ
а как учше.... AsVariant или как.
Anatoly Podgoretsky (2004-01-21 09:39:00) [3]
koks (20.01.04 16:20) [12]
Если не нравится UPDATE, то напиши запрос с SELECT
ЮЮ (2004-01-21 09:36:00) [4]
> koks (20.01.04 16:20) [12] ...а как я посмотрю типы полей в IDE
1) открой запрос SELECT RCTID, NOMER FROM BASE и узнаешь какие типы полей
2) не используй
Query.ParamByName... AsInteger :=, т.к. это может привести к смене на ftInteger
koks (2004-01-20 16:20:00) [5]
а как я посмотрю типы полей в IDE. Это ведь не SELECT- запрос. Объекты полей не создаются вообще - пишет Error creating cursor handle.
Anatoly Podgoretsky (2004-01-20 12:06:00) [6]
Сделай такой запрос и посмотри в ИДЕ типы полей
UPDATE BASE
SET RCTID=1
WHERE NOMER=1
Возможно окажется не ftFloat
koks (2004-01-20 11:59:00) [7]
Тьфу ты ексель-моксель - в предыдущем посте я ошибся. Ну конечно же я ставил DataType := ftFloat;
Извините за ошибочку. Ну так вот - с ftFloat та же ошибка.
Desdechado (2004-01-20 11:11:00) [8]
а Integer ~ +-2млрд
хотя параметры можно и в динамическом рисовать:
"UPDATE tbl SET x=:P1 where y=:P2"
Anatoly Podgoretsky (2004-01-20 09:37:00) [9]
Еще раз 10 знаков это 9 999 999 999
koks (2004-01-20 09:30:00) [10]
Я это все уже пробовал... Ну попрробовал еще раз - поставил DataType := ftInteger сначала только для поля NOMER, а затем и для RCTID. Результата тот-же.
Desdechado - да, если не разберусь, то вместо запросов с параметрами буду использовать динамическое формирование SQL-строки. (Там уж безо всяких параметров.) Только не хотелось бы... Вообще в данном случае "классикка" - это использовыать параметры...
Только вот ошибка не понятна...
Anatoly Podgoretsky (2004-01-19 22:30:00) [11]
N10 и Integer :-)
Посчитай на пальцах и поймешь
Desdechado (2004-01-19 20:02:00) [12]
попробуй сконструировать запрос в коде динамически, не зашивая параметров в форму. Они создадутся, когда будешь делать
qry.SQL.Text := "UPDATE..."
Academic (2004-01-19 17:04:00) [13]
> DataType := ftInteger
Попробуй ftFloat, для Numeric Fields
koks (2004-01-19 14:25:00) [14]
Prepare предварительно выполняется. без ошибок.
Поля:
RCTID: N 2, 0
NOMER: N 10, 0
VAleksey (2004-01-19 12:17:00) [15]
Поля в таблице не того типа.
Mike Kouzmine (2004-01-19 12:04:00) [16]
Препаре?
А поля в таблице какого типа?