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

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

Вставить данные [D5, Paradox]


Страницы:   1 2

Klerk ©   (2004-05-11 16:53:00) 

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


Anatoly Podgoretsky   (2004-05-11 20:11:00) [1]

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

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


sniknik   (2004-05-11 20:04:00) [2]

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


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

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


Anatoly Podgoretsky   (2004-05-11 19:50:00) [4]

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


sniknik   (2004-05-11 19:36:00) [5]

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


Anatoly Podgoretsky   (2004-05-11 19:34:00) [6]

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

AsFloat
AsInteger
AsString

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


sniknik   (2004-05-11 19:33:00) [7]

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


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

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


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

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


Anatoly Podgoretsky   (2004-05-11 19:25:00) [10]

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


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


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

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


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

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


sniknik   (2004-05-11 19:11:00) [13]

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:09:00) [14]

Сначала попробуй так
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;
Посмотри итоговую строку запроса и выполнится ли запрос, потом разбирайся с параметром


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

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


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


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

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


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


> Да, уверен.

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


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


> Klerk   (11.05.04 17:22) [8]

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


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

>Соловьев ©   (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:17:00) [20]


> strtodate(Maskedit1.text);

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


Страницы:   1 2

Наверх

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