Главная страница
    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.008 c
1-37729
Reeves
2003-12-29 19:29
2004.01.13
Необходимо для стандартного компонента ListBox сделать следующие


14-37875
race1
2003-12-22 15:18
2004.01.13
чайники


1-37763
miracle_fox
2003-12-29 17:00
2004.01.13
клавиша <enter> в Edit - как придать ей особое значение?


3-37583
bulanovk
2003-12-13 23:08
2004.01.13
Проблема с ADOQUERY и MySQL


3-37574
Amigo Sv
2003-12-15 08:15
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский