Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.06.2010, 16:25
Rus_lan Rus_lan вне форума
Прохожий
 
Регистрация: 26.06.2010
Сообщения: 4
Репутация: 10
По умолчанию adoquery тип параметра

Здравствуйте господа знающие.... Подскажите пожалуйста почему когда я выбираю тип параметра adoquery data type currency, автоматом ставиться тип float.
Просто мне надо параметру значение переменной типа currency присвоить...?
Ответить с цитированием
  #2  
Старый 26.06.2010, 19:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, видимо, так сделано.
С другой стороны, эти типы совместимы, так что особой проблемы я тут не вижу. А присваивать можешь спокойно через AsCurrency - он прекрасно это "съест".
Ответить с цитированием
  #3  
Старый 26.06.2010, 23:55
Rus_lan Rus_lan вне форума
Прохожий
 
Регистрация: 26.06.2010
Сообщения: 4
Репутация: 10
По умолчанию

Просто у меня есть база access(mdb), при попытке добавить запись в таблицу через adoquery выскакивает ошибка "Несоответствие типов данных в выражении условия отбора".
Код:
   SQL.Text:=' insert into  Platej ( Nom_dogovor,'+' date_platejaReal, Summa_Ostatok, Summa_plateja,'+'Penya, Prosrochka, date_platejaOsn,'+' Summa_Procent, Kolvo_platejei,'+' Summ_Osndolg, Sum_KonPlat)'+#13+
                    'values (:ParNomDog,:ParDateplatejei,:ParSummOst,'+':ParSummPlateja,:ParPenya,'+ ':ParProsrochka,:ParDatePlatOsn,:ParSummProc,:ParKolPlatej,:ParSummOsnDolg,
:ParSummKonPlat )';


Parameters.ParamByName('ParNomDog').Value :=StrToInt(ComboBoxNomDog.Text);
 Parameters.ParamByName('ParDateplatejei').Value:=DatePlatej.DateTime;
Parameters.ParamByName('ParSummOst').Value:=SummaOst;
Parameters.ParamByName('ParSummPlateja').Value:=StrToCurr(SummaPlateja.Text);
Parameters.ParamByName('ParPenya').Value:=0;
Parameters.ParamByName('ParProsrochka').Value:=0;
Parameters.ParamByName('ParDatePlatOsn').Value:=DatePlatOsn;
Parameters.ParamByName('ParSummProc').Value:=0;
Parameters.ParamByName('ParKolPlatej').Value:=KolPlatejei;
Parameters.ParamByName('ParSummOsnDolg').Value:=StrToCurr(SummaPlateja.Text);
Parameters.ParamByName('ParSummKonPlat').Value:=PerPlat1(SummaOst,KolPlatejei);
       ExecSQL;
В последнем параметре PerPlat1-функция типа currency. С типами данных самой базы вроде бы все совпадает.... может есть какие различия в вещественных числах, ну там количество цифр после запятой. Хотя, как мне кажется это не должно влиять. Так что прошу помощи?
Кстати преобразование ascurrency не выскакивает в подсказке только value.
Ответить с цитированием
  #4  
Старый 27.06.2010, 00:52
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

С чего вывод о том что именно из-за этого параметра ошибка?
Ответить с цитированием
  #5  
Старый 27.06.2010, 01:05
Rus_lan Rus_lan вне форума
Прохожий
 
Регистрация: 26.06.2010
Сообщения: 4
Репутация: 10
По умолчанию

Так из-за какого именно?
Ответить с цитированием
  #6  
Старый 27.06.2010, 06:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Станно, что не выскакивает.
2. Не надо присваивать значения через Value. используй соотв. AsDATATYPE.
3. Не надо этот запрос пихать в компонент в рантайме - сделай отдельный компонент с этим запросом, забитым статически.
4. Вообще, впечатление, что ошибку ты получаешь в другом запросе, т.к. в этом запросе нет "условия отбора". Смотри внимательнее.
Ответить с цитированием
  #7  
Старый 27.06.2010, 14:06
Rus_lan Rus_lan вне форума
Прохожий
 
Регистрация: 26.06.2010
Сообщения: 4
Репутация: 10
По умолчанию

Все нашел ошибку, одному из параметров я присваиваю значение Tdate, а в базе соответствующее поле имеет тип Дата\Время, поменял TDate на TdateTime. Сейчас запись проходит. Не хочется присваивать значения через value, поэтому можно поподробнее про AsDATATYPE.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter