Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.063 c
3-1084254203
Fishka
2004-05-11 09:43
2004.05.30
Количество полей или количество записей


1-1084763613
Alexmc
2004-05-17 07:13
2004.05.30
InputQuery ограничить ввод


7-1082626574
Alex_s
2004-04-22 13:36
2004.05.30
Работа с контроллером


3-1084247839
Litr
2004-05-11 07:57
2004.05.30
Время выполнения запроса


9-1074633038
Alex Storm
2004-01-21 00:10
2004.05.30
Создание ландшафта на GLScene