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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2012, 11:51   #1
slayter
Новичок
Джуниор
 
Регистрация: 24.08.2012
Сообщений: 2
По умолчанию Firebird + Delphi 6.0

Всем привет, досталось в наследство связка БД на Firebird1.5 + Delphi 6.0,
Delphi только начинаю осваивать, и вот встала такая проблемка.
Есть код, который вытаскивает из БД номер счёта, контрагента и.т.д, вопрос в том как сделать что-бы во 2 отчёте формировались данные о другом контрагенте INN, Address, имя этого клиента вытаскивается в строчке 2 отчёта Variables['ClIENT'] :='''' + DBEdit1.Text + ' ' + edClient2.Text + '''';.
заранее спсасибо.
а Задача стояла такая что-бы на основании счёта формировать отчёт, а счета бывают в этой программе 2 видов с одним контрагентом и 2.
Код:
procedure TfrmBill.prSertifClickNew(Sender: TObject);
var SQLString : string;
begin
   SertifSQL:='select * from report_bill_sert(:CB) order by warename;';
   SertReportName:='ReestrSertif3';
   //actSertif.Execute;
    //Печать реестра сертификатов
 Save_Cursor:=Screen.Cursor;
 Screen.Cursor:=crSQLWait;

 with IBQprint do
 begin
  close;
  SQLString:='select * from REPORT_BILL_HEAD_SFW (''' + IBTable1.FieldbyName('CODE_BILL').asstring + ''',0)';
  SQL.Clear;
  SQL.Add(SQLString);
  Open;
 end;

 with IBQprintCL do
 begin
  close;
  SQLString:='select * from REPORT_BILL_HEAD_SFW (''' + IBTable1.FieldbyName('CODE_BILL').asstring + ''',1)';
  SQL.Clear;
  SQL.Add(SQLString);
  Open;
 end;

 try
  frDBDataSet1.DataSet:=qSertif;
 with qSertif do
 begin
  Close;
  SQL.Clear;
  SQL.Add(SertifSQL);
  Params[0].value:=IBTable1.FieldByName('CODE_BILL').asstring;
  Open;
  Last;

  if RecordCount=0 then
  begin
   MsgDlg('Нет сертификатов на товар!',MB_OK+MB_ICONINFORMATION);
   Exit;
  end;
 end;
 with qKindSert do
 begin
  Close;
  Params[0].value:=IBTable1.FieldByName('CODE_BILL').asstring;
  Open;

 end;
 frReport1.LoadFromFile(ExtractFilePath(Application.EXEName)+'template\'+ SErtReportname+'.frf');


 with frReport1.Dictionary do begin
     Variables['Date_DOC']:= '''' + DateToStr(IBTable1.Fieldbyname('DATE_BUILD').asdatetime) + '''';
     Variables['NUM_BILL']:='''' + IBTable1.Fieldbyname('NUM_DOC').asstring + '''';
     Variables['QUANTITY']:='''' + qSpec.Fieldbyname('QUANTITY').asstring + '''';
     Variables['ClIENT'] :='''' + DBEdit3.Text + '  ' + edClient.Text  + '''';
     Variables['Postav']:= '''' +  'ЗАО ''''ТМК Фармэкс''''' +  '''';
     Variables['Tel']:=''' (381-2) 53-13-12 ''';
     Variables['Redir'] := false;
 end;

 if PanelRedirect.Visible then
 begin
  frReport2.LoadFromFile(ExtractFilePath(Application.EXEName)+'template\'+ SErtReportname+'.frf');
  with frReport2.Dictionary do begin
     Variables['Date_DOC']:= '''' + DateToStr(IBTable1.Fieldbyname('DATE_BUILD').asdatetime) + '''';
     Variables['NUM_BILL']:='''' + IBTable1.Fieldbyname('NUM_DOC').asstring + '''';
     Variables['QUANTITY']:='''' + qSpec.Fieldbyname('QUANTITY').asstring + '''';
     Variables['ClIENT'] :='''' + DBEdit1.Text + '  ' + edClient2.Text  + '''';
     Variables['Postav'] := '''' + edClient.Text  + '''';
     Variables['Tel']:=''' (381-2) 53-13-12 ''';
     Variables['Redir'] := true;
  end;
  frCompositeReport1.Reports.Clear;
  frCompositeReport1.Reports.Add(frReport1);
  frCompositeReport1.Reports.Add(frReport2);
  frCompositeReport1.ShowReport;
 end
 else
  frReport1.ShowReport;
 finally
 Screen.Cursor:=crArrow;
 end;
end;

Последний раз редактировалось Stilet; 24.08.2012 в 12:46.
slayter вне форума Ответить с цитированием
Старый 24.08.2012, 13:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
на основании счёта формировать отчёт
Т.е. тебе фактически нужно два отчета если контрагента два и один если контрагент один?
Надо знать как связаны таблицы, как репорты организованны...
Тот ко что ты привел мне лично ни о чем не говорит. Тем паче что строки
Цитата:
Variables['ClIENT'] :='''' + DBEdit3.Text + ' ' + edClient.Text + '''';
и
Цитата:
Variables['ClIENT'] :='''' + DBEdit1.Text + ' ' + edClient2.Text + '''';
Всетки отличаются.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Firebird+delphi Potapych БД в Delphi 1 04.07.2012 05:53
Firebird vs Delphi HELP! paSHIZ БД в Delphi 4 13.01.2009 12:19