Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.023 c
1-38812
MegaProf
2004-02-02 13:04
2004.02.13
Графика


1-38815
Max_Ivanych
2004-02-03 10:54
2004.02.13
Проблема с сервером Excel.


1-38917
Denis_Ac
2004-02-04 07:25
2004.02.13
Абстрактные классы


14-39098
Ig
2004-01-20 00:52
2004.02.13
Регистрация или что-то еще?


4-39125
vladelo
2003-12-10 19:13
2004.02.13
Hook на подключение к Internet




   Наверх