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

Вниз

Вставить данные   Найти похожие ветки 

 
Klerk   (2004-05-11 16:53) [0]

Пытаюсь делать так:
sql.add("insert into ""+WorkBaza+"" (Schet) values(:Schet)");
 Params[0].asinteger := strtoint(Edit1.text);
При выполнении даёт ошиьку о несовпадении типов.
В Таблице (Paradox7) поле Schet имеет тип S.
Подскажите, как правильно задать параметр?


 
Соловьев ©   (2004-05-11 16:55) [1]


> sql.add("insert into ""+WorkBaza+"" (Schet) values(:Schet)");
>  Params[0].asinteger := strtoint(Edit1.text);

все можно глянуть?
и перед выполнением посмотри что в Sql.


 
sniknik ©   (2004-05-11 16:55) [2]

кавычки походу лишнии ("")


 
Klerk   (2004-05-11 17:10) [3]

with query1 do
 begin
 sql.clear;
 sql.add("insert into ""+WorkBaza+"" (Schet,Wroten,Firma) values (:Schet,:Wroten,:Firma)");
 Params[0].asinteger := strtoint(Edit1.text);
 Params[1].Asdate := strtodate(Maskedit1.text);
 Params[2].AsString := Edit3.text;
 showmessage(sql.text);
 //execsql;
 end;
Если убрать Params[0], то всё ОК.
То есть, похоже ошибка в этой строке.
Как вообще Short и Integer сочетаются?


 
Anatoly Podgoretsky ©   (2004-05-11 17:15) [4]

Params[0].AsString := Edit1.text;


 
Соловьев ©   (2004-05-11 17:16) [5]


> Params[0].asinteger := strtoint(Edit1.text);
>  Params[1].Asdate := strtodate(Maskedit1.text);
>  Params[2].AsString := Edit3.text;

ParamByName("Schet").AsInteger := strtoint(Edit1.text);
ParamByName("Wroten").AsDateTime := strtodate(Maskedit1.text);
ParamByName("Firma").AsString := Edit3.text;


 
Klerk   (2004-05-11 17:16) [6]

>Anatoly Podgoretsky ©   (11.05.04 17:15) [4]
>Params[0].AsString := Edit1.text;

Так ведь тип поля в БД :Short.


 
Соловьев ©   (2004-05-11 17:17) [7]


> strtodate(Maskedit1.text);

и ты уверен что там дата правильная? используй DateTimePicker


 
Klerk   (2004-05-11 17:22) [8]

>Соловьев ©   (11.05.04 17:17) [7]
Да, уверен. Ведь в таком виде работает (убрал Schet).
with query1 do
 begin
 sql.clear;
 sql.add("insert into ""+WorkBaza+"" (Wroten,Firma) values (:Wroten,:Firma)");
// ParamByName("Schet").AsInteger := strtoint(Edit1.text);
 ParamByName("Wroten").AsDateTime := strtodate(Maskedit1.text);
 ParamByName("Firma").AsString := Edit3.text;
 execsql;


 
Соловьев ©   (2004-05-11 17:25) [9]


> Klerk   (11.05.04 17:22) [8]

запусти SQL Exploer и выполни там запрос


 
Соловьев ©   (2004-05-11 17:27) [10]


> Да, уверен.

Всеравно используй DateTimePicker - оградишь себя от головной боли


 
Курдль ©   (2004-05-11 17:32) [11]


> Все равно используй DateTimePicker - оградишь себя от головной
> боли

А лучше - DBEdit и пр. DB-заточенные компоненты.


 
Klerk   (2004-05-11 18:50) [12]

Мастера. Может я чего не понимаю, но при чём здесь "DBEdit и пр. DB-заточенные компоненты" и "Всеравно используй DateTimePicker - оградишь себя от головной боли"?
Ведб проблеммная строка найдена:
ParamByName("Schet").AsInteger := strtoint(Edit1.text);
Проблемма с приведением типа Integer в Short. И я не знаю как заставить его правильно это делать:(


 
Мунька ©   (2004-05-11 19:09) [13]

Сначала попробуй так
with query1 do
begin
sql.clear;
sql.add("insert into ""+WorkBaza+"" (Schet,Wroten,Firma) values ("+ strtoint(Edit1.text)+",:Wroten,:Firma)");
Params[1].Asdate := strtodate(Maskedit1.text);
Params[2].AsString := Edit3.text;
showmessage(sql.text);
//execsql;
end;
Посмотри итоговую строку запроса и выполнится ли запрос, потом разбирайся с параметром


 
sniknik ©   (2004-05-11 19:11) [14]

Paradox short fields are special number fields that can contain only whole numbers in the range -32,767 to 32,767.
= Smallint в дельфях, проверь размерность вводимого значения.


 
Мунька ©   (2004-05-11 19:20) [15]

да я видела такой глюк парадокса  - когда он такое говорил в запросе с параметрами. Причем с размерностью было все ок.


 
Мунька ©   (2004-05-11 19:23) [16]


> А лучше - DBEdit и пр. DB-заточенные компоненты

Никогда их не использовала, все ручками делала


 
Anatoly Podgoretsky ©   (2004-05-11 19:25) [17]

Klerk   (11.05.04 17:16) [6]
Ну и что, методы AsXXX означают не тип поля, а тип подаваемых данных, преобразование произойдет внутри метода.
Ты бы аместо этого просто попробовал.


 
Klerk   (2004-05-11 19:25) [18]

В этот Edit вводятся числа от 0 - 999.


 
Klerk   (2004-05-11 19:29) [19]

>Anatoly Podgoretsky ©   (11.05.04 19:25) [17]
Я пробовал.
Потом и начал грешить на приведение типов.


 
sniknik ©   (2004-05-11 19:33) [20]

ну если ничего не помогает, прямая дорога за обновлением BDE. ;о)


 
Anatoly Podgoretsky ©   (2004-05-11 19:34) [21]

Правда возможно, что для TParam это и не пройдет, но для TIntegerField возможные свойства

AsFloat
AsInteger
AsString

А вот для TParam зато есть AsSmallInt


 
sniknik ©   (2004-05-11 19:36) [22]

Delphi syntax:
property AsSmallInt: LongInt;
;о)))


 
Anatoly Podgoretsky ©   (2004-05-11 19:50) [23]

sniknik ©   (11.05.04 19:36) [22]
Ну я так глубоко не копал :-), просто AsSmallInt, честнее по названию чем AsInteger и возможно в нем делается проверка на диапазон?


 
Klerk   (2004-05-11 19:55) [24]

AssmallInt. Да. Всем большое спасибо!!!


 
sniknik ©   (2004-05-11 20:04) [25]

возможно... и похоже не только проверка... > Klerk   (11.05.04 19:55) [24]


 
Anatoly Podgoretsky ©   (2004-05-11 20:11) [26]

sniknik ©   (11.05.04 20:04) [25]
Много проще, я не полезу разбираться в исходники, зато если я увижу что есть два свойства AsSmallInt и AsInteger, а у меня поле типа Short мне даже и в голову не придет использовать второй, возможно, что я даже и спраку читать не буду.

По предположению видимо в методе доступа проверяется соответствие на тип поля. У As методов для TParam есть хитрая особенность, они устанавливают свойство DataType в один из ftХХХ типов, наверно в этом и все дело.



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

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

Наверх





Память: 0.5 MB
Время: 0.059 c
6-1081442931
AlexXn
2004-04-08 20:48
2004.05.30
Can t create new socket


6-1081639590
freak
2004-04-11 03:26
2004.05.30
Как обработать события когда срабатывает setsockopt()


3-1084017148
V l a d i m i r
2004-05-08 15:52
2004.05.30
Как связать две таблицы?


1-1084859905
dim-
2004-05-18 09:58
2004.05.30
получить результат из dll


14-1084289440
konstantinov
2004-05-11 19:30
2004.05.30
Как создать скомиплированный HTML - файл





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский