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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2017, 16:14   #31
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Попробуйте из запроса убрать весь блок WHERE и проверьте.
Извините а поконкретнее)
Код:
 post.CommandText:='select resolution.rid, resolution.rregnum, resolution.rtotime, organs.oname, res_givers.rgfname from resolution, organs, res_givers where resolution.rtodate=:date'+
                   ' and resolution.rrgid=res_givers.rgid and res_givers.rgorg=organs.oid order by rtotime';
Отсюда?
Дэдпул вне форума Ответить с цитированием
Старый 01.06.2017, 16:18   #32
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Дэдпул Посмотреть сообщение
и мне кажется что ошибочка вот тут.
не совсем ошибочка.
проблема в том, что у Вас в поле rtodate в таблице БД сохраняется не только дата, но и время.
да и в curDate (контрол типа TDateTimePicker) там тоже время присутствует (его легко увидеть, если выдать дату на экран в полном формате.

поэтому, разумеется, точного совпадения resolution.rtodate= : date нет и быть не может.

предлагаю такой выход из ситуации
Код:
procedure tform5.getinfo;
var  
   i,j,q:integer;
   tdate1 : TDateTime;
begin

....


 post.CommandText:=
  ' select resolution.rid, resolution.rregnum, resolution.rtotime, organs.oname, res_givers.rgfname '+
  ' from resolution, organs, res_givers '+
  ' where int(resolution.rtodate)=:date '+
  ' and resolution.rrgid=res_givers.rgid and res_givers.rgorg=organs.oid order by rtotime';

 post.Parameters.ParamByName('date').DataType := ftDate;
 tdate1 := Trunc(curdat.date);
 post.Parameters.ParamByName('date').Value := tdate1;

 post.Active:=true;       // все постановления с текущей датой исполнения

p.s. ещё, как вариант, можно использовать "вилку" - выбрать все записи, где rtodate BETWEEN Дата1 AND Дата2
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2017, 16:20   #33
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

тип данных дата это не только собственно дата, но и время тож.

Если нужны данные за день, то либо надо
Код:
CommandText:='... where resolution.rtodate>=:date1 and resolution.rtodate<:date2 ...'; 
ParamByName(date1).Value:=Date(curdate); // и на всякий случай "получить" собственно дату (с "нулевым"(00:00:000) временем 
ParamByName(date2).Value:=Date(curdate) +1;
именно ДВА разных параметра, а не два раза один параметр

либо делать тоже самое (получение дат с нулевым временем) на стороне access
использовать в запросе функцию Access "выделения" собственно даты date()
Код:
CommandText:='... where date(resolution.rtodate) =date(:date) ...'
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 01.06.2017 в 16:22.
evg_m на форуме Ответить с цитированием
Старый 01.06.2017, 16:34   #34
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
предлагаю такой выход из ситуации
Для этой формы время не обязательно нужна).Самое то .Благодарю
Дэдпул вне форума Ответить с цитированием
Старый 01.06.2017, 16:42   #35
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
тип данных дата это не только собственно дата, но и время тож.
Благодарю.Все получилось.Чисто для интереса.Что бы со временем показывало как нужно прописывать?
Дэдпул вне форума Ответить с цитированием
Старый 01.06.2017, 22:51   #36
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Код:
procedure tform6.getpdat;
var i:integer;
begin
 peop.Cells[0,0]:='Ôàìèëèÿ';
 peop.Cells[1,0]:='Èìÿ';
 peop.Cells[2,0]:='Îò÷åñòâî';
 peop.Cells[3,0]:='Ñòàòóñ';
 peop.Cells[4,0]:='Äîñòàâëåí';
 peop.Cells[5,0]:='Îáñòîÿòåëüñòâà';
 peop.Cells[6,0]:='Ñèëà';
 cres.Filtered:=false;
 if res.cells[0,res.row]='' then
  begin
   peop.RowCount:=2;
   peop.Rows[1].Clear;
   exit
  end;
 cres.Filter:='rregnum='+quotedstr(res.Cells[0,res.Row]);
 cres.Filtered:=true;
 //cres.first;
 pm.Active:=false;
 pm.filtered:=false;
 pm.CommandText:='select peoples.pid, peoples.pfname, peoples.pnname, peoples.poname, stat.sname from peoples, who_why, stat where who_why.wwrid='+quotedstr(cres.Recordset.Fields[0].get_value())+' and peoples.pid=who_why.wwpid and who_why.wwsid=stat.sid';
 pm.Active:=true;
 if pm.RecordCount=0 then peop.RowCount:=pm.RecordCount+2
  else peop.RowCount:=pm.RecordCount+1;

 pp.Active:=false;
 pp.CommandText:='select who_when.wwpid, reasons.rtype, influence.itype from who_when, influence, reasons where who_when.wwrid='+quotedstr(cres.Recordset.Fields[0].get_value())+' and who_when.wwiid=influence.iid and who_when.wwwhy=reasons.rid';
 pp.Active:=true; 

 for i:=1 to pm.RecordCount do
  begin
   peop.Cells[0,i]:=pm.Recordset.Fields[1].get_value();
   peop.Cells[1,i]:=pm.Recordset.Fields[2].get_value();
   peop.Cells[2,i]:=pm.Recordset.Fields[3].get_value();
   peop.Cells[3,i]:=pm.Recordset.Fields[4].get_value();

   pp.Filtered:=false;
   pp.Filter:='wwpid='+quotedstr(pm.Recordset.Fields[0].get_value());
   pp.Filtered:=true;
   if pp.RecordCount=1 then
    begin
     if pp.Recordset.Fields[1].get_value()='íå âîçíèêëî' then peop.Cells[4,i]:='Äà'
      else peop.Cells[4,i]:='Íåò';
     peop.Cells[5,i]:=pp.Recordset.Fields[1].get_value();
     peop.Cells[6,i]:=pp.Recordset.Fields[2].get_value()
    end;
   pp.Filtered:=false;
   pm.Next
  end;

end;

procedure tform6.getresdat;
var i:integer; st:string;
tdate1 : TDateTime;
begin
 cres.CommandText:='select resolution.rid, resolution.rregnum, resolution.rrgid, res_givers.rgfname, res_givers.rgnoname, organs.oname, resolution.rprice from resolution, res_givers, organs where int (resolution.rtodate)=:date '+' and resolution.rrgid=res_givers.rgid and res_givers.rgorg=organs.oid';
 cres.Parameters.ParamByName('date').DataType := ftDate;
 tdate1 := Trunc(dat.date);
 cres.Parameters.ParamByName('date').Value := tdate1;
 cres.Active:=true;
 if cres.RecordCount=0 then res.RowCount:=cres.RecordCount+2
  else res.RowCount:=cres.RecordCount+1;
 for i:=1 to res.RowCount do
  res.Rows[i].Clear;
 res.Cells[0,0]:='Íîìåð';
 res.Cells[1,0]:='Êóäà';
 res.Cells[2,0]:='Êîìó';
 res.Cells[3,0]:='Ðàñõîäû';
 for i:=1 to cres.RecordCount do
  begin
   res.Cells[0,i]:=cres.Recordset.Fields[1].get_value();
   res.Cells[2,i]:=cres.Recordset.Fields[3].get_value()+' '+cres.Recordset.Fields[4].get_value();
   res.Cells[1,i]:=cres.Recordset.Fields[5].get_value();
   res.Cells[3,i]:=cres.Recordset.Fields[6].get_value();
   cres.Next
  end;
 getpdat
end;
На 6 форме тоже кидает ошибку(.Посмотрите пожалуйста все ли верно ввел?
Дэдпул вне форума Ответить с цитированием
Старый 01.06.2017, 23:59   #37
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
предлагаю такой выход из ситуации
Извините.Я думал почему ,у меня на 6 форме кидает ошибку.Оказывается на 5 форме в базу не добавлял он у меня.Видать с кодом что то не то.
Дэдпул вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос базы данных на sql server ce ts-alan C/C++ Базы данных 1 27.03.2014 20:50
Перенос базы данных. (Microsoft SQL Server 2005) Gleg БД в Delphi 8 15.01.2013 21:29
Преобразование базы данных Access в формат SQL Server Alar Microsoft Office Access 5 18.04.2010 01:46
перенос данных из Access в MS SQL Server2000 ГОСЕАН БД в Delphi 5 28.12.2007 12:31