Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Препаре?
А поля в таблице какого типа?


Наверх

Титульная страница Поиск, карта сайта Написать письмо