Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Вниз

Type mismatch при попытке сделать INSERT   Найти похожие ветки 

 
lovres   (2003-12-17 14:26) [0]

Хочу добавить запись, запрос в SQL Explorer отрабатывает "на ура", а вот в Delphi выдаётся ошибка несоответствия типов во время команды Query1.ExecSQL. В запрос передаются 3 параметра, типы их я уже 3 раза проверял - вроде всё ок. Из-за чего такое может быть?
Код:
DM.TarUpdate.Close;
DM.TarUpdate.SQL.Clear;
DM.TarUpdate.SQL.Add("insert into tar_zon (tar_zon.""_код_связи"", "+
"tar_zon.""_код_зоны"", tar_zon.""_наименование_зоны"") values(:ks, :kz, :nm)");
Dm.TarUpdate.Prepare;
Dm.TarUpdate.Params.ParamByName("ks").Value:=strtoint(DBEdit1.Text);
Dm.TarUpdate.Params.ParamByName("kz").Value:=strtoint(DBEdit2.Text);
Dm.TarUpdate.Params.ParamByName("nm").Value:=DBEdit3.Text;
DM.TarUpdate.ExecSQL;


 
JibSkeart   (2003-12-17 14:28) [1]

Dm.TarUpdate.Params.ParamByName("ks").Value:=DBEdit1.Text;
Dm.TarUpdate.Params.ParamByName("kz").Value:=DBEdit2.Text;

или указывай конкретный тип


 
JibSkeart   (2003-12-17 14:29) [2]

Dm.TarUpdate.Params.ParamByName("ks").AsInteger:=strtoint(DBEdit1.Text);
Dm.TarUpdate.Params.ParamByName("kz").AsInteger:=strtoint(DBEdit2.Text);
Dm.TarUpdate.Params.ParamByName("nm").AsString:=DBEdit3.Text;


 
Johnmen   (2003-12-17 14:30) [3]

сначала ...ParamByName("...").DataType:=...
потом ...ParamByName("...").As...:=...


 
JibSkeart   (2003-12-17 14:31) [4]

А точно
так как не пишу шас на делфях все уже забываю :))


 
lovres   (2003-12-17 14:36) [5]

Да я вроде параметры через Object Inspector определил в свойствах Params у Query, всё равно надо ручками?


 
Johnmen   (2003-12-17 14:38) [6]

Ты сделал SQL.Clear; а значит уже ничего, никакого запроса, никаких параметров нет...


 
sniknik   (2003-12-17 14:40) [7]

не ручками но после очередного внесения запроса SQL.Clear; SQL.Add а как это сам решай.


 
lovres   (2003-12-17 14:56) [8]

Ничего не помогло :(
Теперь так:
DM.TarUpdate.Close;
DM.TarUpdate.SQL.Clear;
DM.TarUpdate.SQL.Add("insert into tar_zon (tar_zon.""_код_связи"", "+
"tar_zon.""_код_зоны"", tar_zon.""_наименование_зоны"") values(:ks, :kz, :nm)");
Dm.TarUpdate.Prepare;
Dm.TarUpdate.Params.ParamByName("ks").DataType:=ftInteger;
Dm.TarUpdate.Params.ParamByName("ks").AsInteger:=strtoint(DBEdit1.Text);
Dm.TarUpdate.Params.ParamByName("kz").DataType:=ftInteger;
Dm.TarUpdate.Params.ParamByName("kz").AsInteger:=strtoint(DBEdit2.Text);
Dm.TarUpdate.Params.ParamByName("nm").DataType:=ftString;
Dm.TarUpdate.Params.ParamByName("nm").AsString:=DBEdit3.Text;
DM.TarUpdate.ExecSQL;

Сам запрос:
insert into tar_zon (tar_zon."_код_связи", tar_zon."_код_зоны", tar_zon."_наименование_зоны")
values(:ks, :kz, :nm)


 
sniknik   (2003-12-17 15:05) [9]

а так?
insert into "tar_zon.db" ("tar_zon.db"."_код_связи", "tar_zon.db"."_код_зоны", "tar_zon.db"."_наименование_зоны")
values(:ks, :kz, :nm)

кстати а парадокс какой длинны поля поддерживает? в dBase не так много помню 11(или около) символов.


 
Hawk2   (2003-12-17 15:09) [10]

Да и названия лучше латинскими буквами писать...


 
lovres   (2003-12-17 15:17) [11]

> sniknik © попробовал, та же ерунда
> Hawk2 © Поля менять не имею права, чужая прога на них завязана

Блин, уже полдня бьюсь с этой проблеммой, какие ещё варианты могут быть?


 
sniknik   (2003-12-17 15:33) [12]

> Блин, уже полдня бьюсь с этой проблеммой, какие ещё варианты могут быть?
вставь значения в запрос как в случае с SQL Explorer,
так
...values("""+DBEdit1.Text+""", :kz, :nm)");
а после уже потихоньку разбирайся с параметрами. гдето ты напутал (ParamCheck в фалсе стоит а сделанные до этого чемто отличаются... это к примеру)


 
lovres   (2003-12-17 15:49) [13]


> sniknik ©
Честно говоря устал. Решил сделать всё через Append...Post, благо что табличка совсем маленькая.


 
VAleksey   (2003-12-17 16:01) [14]


> Johnmen © (17.12.03 14:38)

Вообще, такого быть не должно. Я делал в своих приложениях Clear динамически подсовывал параметра и все работало. Правда не помню как я присваивал значения. Ч/з value или As...
Но 100% могу сказать что ParamByName("...").DataType присваивать не обязательно.


 
VAleksey   (2003-12-17 16:01) [15]

Небольшая оговорочка... Это была D5.


 
Johnmen   (2003-12-17 16:24) [16]

>VAleksey © (17.12.03 16:01)
>...DataType присваивать не обязательно

Возможно. Это я для строгости...:)


 
Sandman25   (2003-12-17 16:45) [17]

Я сегодня нарвался на похожую же проблему.
В design-time настраиваю SQL.Text, ставлю параметры.
Один из параметров ftInteger.
Затем присваиваю параметр AsString. Почему AsString? Ну мне было так удобнее. Вызываю ExecSQL. Такая же ругань type mismatch... Стал разбираться, и оказалось, что при присвоении AsString тип параметра сам устанавливается в ftString.
Помогла установка параметров через Value. Тоже Paradox, Delphi 6.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
14-37864
Nest
2003-12-16 19:58
2004.01.13
Подскажите не устанавливается MS Visual Studio .NET


1-37769
АМБ
2003-12-29 16:22
2004.01.13
TSimpleDataSet


14-37904
Думкин
2003-12-21 07:23
2004.01.13
С днем рождения! 21 декабря.


6-37838
Magical
2003-11-12 15:11
2004.01.13
Какой модуль нужно подключить для NetUserAdd


3-37531
mva
2003-12-16 10:16
2004.01.13
Формат даты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский