Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: 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 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
14-39005
Skier
2004-01-26 11:54
2004.02.13
ключи в XML-схемах


14-39072
Knight
2004-01-20 21:24
2004.02.13
Прокладка постоянной локалки..


1-38767
V-A-V
2004-02-05 09:07
2004.02.13
Дата и время создания и модификации файла


1-38955
10100010110110110001
2004-02-03 22:47
2004.02.13
ТЕКСТ


1-38826
scorpi
2004-02-02 08:20
2004.02.13
Значение 1E