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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2014, 13:31   #1
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию Вывести значения из запроса в сообщение или в Label

вот код предложенный одним их форумчан, отдельное спасибо.
здесь идет отбор данных по текущей дате и плюс послезавтра и плюс послепослезавтра. Этот код подсчитывает количество строк в которых есть совпадения, а нужно вывести именно значения этих этих строк. в отдельное окно или в Label. в запросе условие по полю Data_pereatestat. а требуется вывести значения из другого поля, к примеру Tabel. Т.е. сегодня есть экзамен у сотрудника, надо вывести его табельный номер.

Код:
var i: Integer;
 d1:TDate;
begin
  Datamodule2.ADOQuery1.Close;
  Datamodule2.ADOQuery1.SQL.Text:='SELECT COUNT(*) AS CountRec FROM attestat WHERE Data_pereatestat IN (:d1,:d2,:d3)';  // and Tabel=''''';
  Datamodule2.ADOQuery1.Parameters.ParamByName('d1').Value:=Date;
  Datamodule2.ADOQuery1.Parameters.ParamByName('d2').Value:=IncDay(Date,2);
  Datamodule2.ADOQuery1.Parameters.ParamByName('d3').Value:=IncDay(Date,4);

  Datamodule2.ADOQuery1.Open;
  i:=Datamodule2.ADOQuery1.FieldByName('CountRec').AsInteger;
  Datamodule2.ADOQuery1.Close;
  ShowMessage(Format('Записей %d',[i]));

 
    end;
пытался в цикле пройтись, нифиха не получается.
Scorpuha вне форума Ответить с цитированием
Старый 06.03.2014, 13:39   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
а требуется вывести значения из другого поля, к примеру Tabel. Т.е. сегодня есть экзамен у сотрудника, надо вывести его табельный номер.
ничего не понял
покажи простенький пример
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 06.03.2014, 13:43   #3
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

задача: найти записи в которых поле Data_pereatestat равна текущей дате, затем вывести сообщение со значениями табельных номеров (Tabel) у которых сегодня экзамен. эти поля находятся в одной таблице.
Scorpuha вне форума Ответить с цитированием
Старый 06.03.2014, 13:45   #4
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Код:

var i: Integer;
 d1:TDate;
begin
  Datamodule2.ADOQuery1.Close;
  Datamodule2.ADOQuery1.SQL.Text:='SELECT COUNT(*) AS CountRec FROM attestat WHERE Data_pereatestat IN (:d1,:d2,:d3)';// and Tabel=''''';
  Datamodule2.ADOQuery1.Parameters.ParamByName('d1').Value:=Date;
  Datamodule2.ADOQuery1.Parameters.ParamByName('d2').Value:=IncDay(Date,2);
  Datamodule2.ADOQuery1.Parameters.ParamByName('d3').Value:=IncDay(Date,4);

  Datamodule2.ADOQuery1.Open;
  while not datamodule2.ADOQuery1.Eof do
  begin
  MainForm.Label1.Caption:=datamodule2.ADOQuery1.Fields[0].AsString;   //intToStr(Datamodule2.ADOQuery1.FieldValues['Tabel'].text);
  Mainform.Label1.Caption:=IntToStr(datamodule2.ADOQuery1.FieldByName('Tabel').CurValue);

  i:=Datamodule2.ADOQuery1.FieldByName('CountRec').AsInteger;
  Datamodule2.ADOQuery1.Close;
  ShowMessage(Format('Записей %d',[i]));

  end;
    end;
вот цикл, там два варианта моих проб. ничего не работает или выдает ошибки.
Scorpuha вне форума Ответить с цитированием
Старый 06.03.2014, 14:18   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
  Datamodule2.ADOQuery1.SQL.Text:='SELECT COUNT(*) AS CountRec FROM attestat WHERE Data_pereatestat IN (:d1,:d2,:d3)';// and Tabel=''''';
Цитата:
затем вывести сообщение со значениями табельных номеров (Tabel) у которых сегодня экзамен.
в этом запросе НЕТ табельных номеров
число записей в таком наборе фиксировано и =1 цикл не нужен
Код:
  Datamodule2.ADOQuery1.Open;
  MainForm.Label1.Caption:=datamodule2.ADOQuery1.Fields[0].AsString;   //intToStr(Datamodule2.ADOQuery1.FieldValues['Tabel'].text);
  i:=Datamodule2.ADOQuery1.FieldByName('CountRec').AsInteger;
  Datamodule2.ADOQuery1.Close;
  ShowMessage(Format('Записей %d',[i]));
Цитата:
затем вывести сообщение со значениями табельных номеров (Tabel) у которых сегодня экзамен.
делаем еще один запрос

Код:
var
  f:TFiled;
  s: string;

 adoquery2.SQL.text:='select tabel from attestat where data_pereatestat ....';
 s:='пора аттестовать';
 adoquery2.open;
 f:=adoquery2.Fieldbyname('tabel');
  while not adoquery2.Eof do begin
    s:=s+#13#10+f.AsSstring;
    adoquery2.Next;
  end;
  showMessage(s);
P.S. для показа данных из набора данных (ADOQuery2) обычно используют компонент TDBGrid (вкладка DBContol) в сочетании с Datasource (вкладка DataAccess)
c установленными связями
DbGrid1.Datasource =DataSource1
DataSoure1.DataSet =AdoQuery2
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.03.2014, 14:29   #6
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

evg_m, спасибо код работает, только вот непонятно зачем второй кверик. я вот так сделал

Код:
var
  f:TField;
  s: string;
  begin
 Datamodule2.ADOQuery1.SQL.text:='select tabel from attestat where data_pereatestat IN (:d1,:d2,:d3)';
 Datamodule2.ADOQuery1.Parameters.ParamByName('d1').Value:=Date;
  Datamodule2.ADOQuery1.Parameters.ParamByName('d2').Value:=IncDay(Date,2);
  Datamodule2.ADOQuery1.Parameters.ParamByName('d3').Value:=IncDay(Date,4);
 s:='Скоро или уж сегодня аттестация у сотрудников с табельными номерами';
 Datamodule2.ADOQuery1.open;
 f:=Datamodule2.ADOQuery1.Fieldbyname('tabel');
  while not Datamodule2.ADOQuery1.Eof do begin
    s:=s+#13#10+f.AsString;
    Datamodule2.ADOQuery1.Next;
  end;
  showMessage(s);
   end;
Scorpuha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести сообщение Mick_20 JavaScript, Ajax 0 24.10.2013 12:22
Вывести сообщение Aleksandr Общие вопросы Delphi 3 29.03.2013 09:42
Вывести в Label сообщение с результатом вычисления tgm Microsoft Office Excel 2 31.10.2011 21:30
Экспортировать отчёт из Delphi в MsWord,дублировать результат запроса в Label ulala Помощь студентам 0 01.10.2010 18:45
Вывод результат запроса в label,каким образом? nuevegramodelamor Помощь студентам 1 28.04.2010 16:06