Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2013, 10:39   #11
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

текст запроса:
Код:
Insert into storage (product_name, quantity,receiving_date,tech_type,office,provider)
values
( :product_name, :quantity, :receiving_date, :tech_type, :office, :provider)
вот весь код процедуры:

Код:
if Form9.ShowModal=mrOK then begin
  with DataModule2.ADOQueryMainAdd do begin
      Parameters.ParamByName('product_name').Value:=Form9.Edit1.Text;
      Parameters.ParamByName('quantity').Value:=Form9.Edit2.Text;
      Parameters.ParamByName('receiving_date').Value:=Form9.DateTimePicker1.Date;
      Parameters.ParamByName('tech_type').Value:=Form9.DBLookupComboBox1.KeyValue;
      Parameters.ParamByName('office').Value:=Form9.DBLookupComboBox2.KeyValue;
      Parameters.ParamByName('provider').Value:=Form9.DBLookupComboBox3.KeyValue;
      ExecSQL;
  end;
  DataModule2.ADOQuery1.Close;
  DataModule2.ADOQuery1.Open;
end;
если закомментировать именно строчку Parameters.ParamByName('receiving_d ate').Value:=Form9.DateTimePicker1. Date; то всё работает и БД записывается информация из других полей.

А если нет - то появляется сообщение " Несоответсвие типов данных ... "
Tanzor69 вне форума Ответить с цитированием
Старый 25.10.2013, 11:12   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
TDateTimePicker выдает данныех типа TDate
На самом деле этот TDate ни чем не отличается от TDateTime и возвращается дата с временем

И receiving_date - какой тип в таблице? Если символьный - ошибка обеспечена
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 11:18   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

заходите в БД, открывайте структуру таблицы storage и смотрите тип поля receiving_date

исходя из этого и исправляйте...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2013, 11:19   #14
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

В таблице БД стоит тип у этого поля дата/время. В запросе ADOQueryMainAdd у параметра receiving_date даже поменял тип на ftDateTime. Что у него за несоответствие я не знаю. Щас попробую поставить вместо DateTimePicker1 обычный эдит, проверю так.
Tanzor69 вне форума Ответить с цитированием
Старый 25.10.2013, 11:23   #15
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

Не, не в DateTimePicker'e дело. Всё равно пишет - Несоответствие типов данных в выражении условия отбора. Хоть в параметр receiving_date передавать значение типа TDate хоть String.
Tanzor69 вне форума Ответить с цитированием
Старый 25.10.2013, 11:30   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так работает?
Код:
var d: TDateTime;

d:=Trunc(Form9.DateTimePicker1.Date); 
Parameters.ParamByName('receiving_date').Value:=d;
И типы у параметров не трогайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 11:57   #17
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

неа, и так не работает. Всё равно не соответствие типов данных
Tanzor69 вне форума Ответить с цитированием
Старый 25.10.2013, 13:31   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

база в MS Accecc и проект не секретные?
Тогда запакуйте в архив и БД и исходники проекта и архив выкладывайте сюда на форум. Посмотрим, что у Вас за чудо-чудное, диво-дивное...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2013, 13:50   #19
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

кстати пока дальше работа не идет, решил пока обратное действие произвести, для дальнейшего редактирования вывел значения полей на форму, и вот эта запись отлично работает
Код:
Form9.DateTimePicker1.Date:=DataModule2.ADOQuery1.FieldByName('receiving_date').AsDateTime;
Tanzor69 вне форума Ответить с цитированием
Старый 25.10.2013, 13:55   #20
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

Всё, решил сам проблему. Это конечно ппц как всё просто оказалось.
Надо было просто изменить
Код:
Parameters.ParamByName('receiving_date').Value:=Form9.DateTimePicker1.Date;
на
Код:
Parameters.ParamByName('receiving_date').Value:=Form9.DateTimePicker1.DateTime;
Tanzor69 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поле "Дата" в форме для добавления новых записей в основную таблицу (Access) Zercon Помощь студентам 1 13.01.2013 14:41
Ошибка:является "поле" но используется как "метод" hitman47IT Помощь студентам 0 22.11.2011 20:55
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Как передать данные типа "дата" из формы в таблицу Ярослав Блошенко Microsoft Office Access 1 26.02.2010 18:22