Advertisement
ksviridova

Untitled

Sep 25th, 2023
1,023
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.08 KB | None | 0 0
  1. procedure TGridBPSO.UpdateSql;
  2. begin
  3.   ChangeColumns := True;
  4.   CopyStrArray(QTmp.Sql,[
  5.     //Создание таблицы фильтра
  6.     'CREATE TABLE #fltdoc(',
  7.       'code INT NOT NULL,',
  8.       'isbill TINYINT NULL,',
  9.       'numreg CHAR('+SqlAsInteger(EqAgrNumSize)+') NULL,',
  10.       'datereg SMALLDATETIME NULL,',
  11.       'sumdoc MONEY NULL,',
  12.       'codepay INT NULL,',
  13.       'sprpay INT NULL,',
  14.       'codetype INT NULL,',
  15.       'flgdir TINYINT NULL',
  16.     ')'
  17.   ],True);
  18.   FillTable(True); //Заполнение таблицы документов (Bill)
  19.   FillTable(False); //Заполнение таблицы документов (Pay)
  20.   SqlTry(QTmp,False);
  21.   if( FltRec['Analitic'].AsInteger<>0) then
  22.     ReadTypeDoc; //Чтение типов оплат
  23.   CreateReport;    //Создание таблицы отчета
  24.   SqlTry(QTmp,False);
  25.   FillReport;      //Заполнение таблицы отчета
  26.  
  27.   if (FltRec['Razrez'].AsInteger = EqSOFirm_) and
  28.      (FormFltBPSO.ETypeOst.ItemIndex<>0) then
  29.   begin
  30.     CopyStrArray(QTmp.Sql,[
  31.       'DELETE #report',
  32.       'WHERE ISNULL('+dbObor_+',0)-ISNULL('+crObor_+',0)'+
  33.         iif(FormFltBPSO.ETypeOst.ItemIndex=1,'<=','>=')+FltRec['SumOst'].AsSql
  34.     ],True);
  35.     SqlTry(QTmp,False);
  36.   end;
  37.   //ИТОГО
  38.   case FltRec['Razrez'].AsInteger of
  39.   EqSODoc_  :
  40.     QTmp.Sql.Text := 'INSERT #report'+'(no,"№ докум.") VALUES('+SqlAsInt(EqAll_)+',''ИТОГО'')';
  41.   EqSODate_ :
  42.     QTmp.Sql.Text := 'INSERT #report'+'(no) VALUES('+SqlAsInt(EqAll_)+')';
  43.   EqSOFirm_ :
  44.     QTmp.Sql.Text := 'INSERT #report'+'(no,'+Korr_+') VALUES('+SqlAsInt(EqAll_)+',''ИТОГО'')';
  45.   end;
  46.   SqlTry(QTmp,False);
  47.   if FltRec['Razrez'].AsInteger = EqSOFirm_ then
  48.   begin
  49.     UpdateItogo( dbBeg_);
  50.     UpdateItogo( crBeg_);
  51.   end;
  52.   if FltRec['Analitic'].AsInteger<>0 then
  53.   begin
  54.     QTypeDoc.First;
  55.     while not QTypeDoc.Eof do
  56.     begin
  57.       UpdateItogo(QTypeDoc.FieldByName('fldname').AsString);
  58.       QTypeDoc.Next;
  59.     end;
  60.   end;
  61.   //Вычисление суммы итого
  62.   UpdateItogo(dbObor_);
  63.   UpdateItogo(crObor_);
  64.   UpdateItogo(dbEnd_);
  65.   UpdateItogo(crEnd_);
  66.   //Кон.сальдо
  67.   if FltRec['Razrez'].AsInteger in [EqSODoc_,EqSODate_] then
  68.   begin
  69.     if (FltRec['PaySpr'].AsInteger > 0) and
  70.        ( FltRec['PayCode'].AsInteger <> 0) then
  71.     begin
  72.       if  FltRec['Razrez'].AsInteger = EqSODoc_ then
  73.         QTmp.Sql.Text := 'INSERT #report(no,"№ докум.") VALUES('+SqlAsInt(EqEnd_)+',''Кон.сальдо'')'
  74.       else
  75.         QTmp.Sql.Text := 'INSERT #report(no) VALUES('+SqlAsInt(EqEnd_)+')';
  76.       dbBegSum := 0;
  77.       crBegSum := 0;
  78.       CopyStrArray(QTmp.Sql,[
  79.         'SELECT ISNULL(SUM('+dbEnd_+'),0)-ISNULL(SUM('+crEnd_+'),0)',
  80.         'FROM #report',
  81.         'WHERE no IN ('+SqlAsInt(EqBeg_)+','+SqlAsInt(EqAll_)+')'
  82.       ],False);
  83.       SqlTry(QTmp,True);
  84.       try
  85.         dbBegSum := QTmp.Fields[0].AsCurrency;
  86.       finally
  87.         SqlClose(QTmp);
  88.       end;
  89.       if dbBegSum<0 then
  90.       begin
  91.         crBegSum := -dbBegSum;
  92.         dbBegSum := 0;
  93.       end;
  94.       CopyStrArray(QTmp.Sql,[
  95.         'UPDATE #report SET',
  96.           dbEnd_+'='+SqlAsFloat(dbBegSum)+',',
  97.           crEnd_+'='+SqlAsFloat(crBegSum),
  98.         'WHERE no='+SqlAsInt(EqEnd_)
  99.       ],True);
  100.       SqlTry( QTmp,False);
  101.     end;
  102.   end;
  103. {$IFDEF FGUP}
  104.   CopyStrArray(QSelect.Sql,[
  105.     'DROP TABLE #fltdoc',
  106.     'SELECT rp.* FROM #report rp'
  107.   ],True);
  108.   if (FltRec['Razrez'].AsInteger = EqSOFirm_) then
  109.     CopyStrArray(QSelect.Sql,[
  110.       iif(FltRec['Rayon'].AsInteger>0,'WHERE rp.RgnCode = '+SqlAsInt(FltRec['Rayon'].AsInteger),'')
  111.     ],False);
  112. {$ELSE}
  113.   CopyStrArray(QSelect.Sql,[
  114.     'DROP TABLE #fltdoc',
  115.     'SELECT * FROM #report'
  116.   ],True);
  117. {$ENDIF}
  118.   case FltRec['Razrez'].AsInteger of
  119.   EqSODoc_  :
  120.     QSelect.Sql.Add('ORDER BY no,"Дата","№ докум."');
  121.   EqSODate_ :
  122.     QSelect.Sql.Add('ORDER BY no,"Дата"');
  123.   EqSOFirm_ :
  124.     QSelect.Sql.Add('ORDER BY no,"Корреспондент"');
  125.   end;
  126.   QSelect.Sql.Add('DROP TABLE #report');
  127. end;
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement