Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TGridBPSO.UpdateSql;
- begin
- ChangeColumns := True;
- CopyStrArray(QTmp.Sql,[
- //Создание таблицы фильтра
- 'CREATE TABLE #fltdoc(',
- 'code INT NOT NULL,',
- 'isbill TINYINT NULL,',
- 'numreg CHAR('+SqlAsInteger(EqAgrNumSize)+') NULL,',
- 'datereg SMALLDATETIME NULL,',
- 'sumdoc MONEY NULL,',
- 'codepay INT NULL,',
- 'sprpay INT NULL,',
- 'codetype INT NULL,',
- 'flgdir TINYINT NULL',
- ')'
- ],True);
- FillTable(True); //Заполнение таблицы документов (Bill)
- FillTable(False); //Заполнение таблицы документов (Pay)
- SqlTry(QTmp,False);
- if( FltRec['Analitic'].AsInteger<>0) then
- ReadTypeDoc; //Чтение типов оплат
- CreateReport; //Создание таблицы отчета
- SqlTry(QTmp,False);
- FillReport; //Заполнение таблицы отчета
- if (FltRec['Razrez'].AsInteger = EqSOFirm_) and
- (FormFltBPSO.ETypeOst.ItemIndex<>0) then
- begin
- CopyStrArray(QTmp.Sql,[
- 'DELETE #report',
- 'WHERE ISNULL('+dbObor_+',0)-ISNULL('+crObor_+',0)'+
- iif(FormFltBPSO.ETypeOst.ItemIndex=1,'<=','>=')+FltRec['SumOst'].AsSql
- ],True);
- SqlTry(QTmp,False);
- end;
- //ИТОГО
- case FltRec['Razrez'].AsInteger of
- EqSODoc_ :
- QTmp.Sql.Text := 'INSERT #report'+'(no,"№ докум.") VALUES('+SqlAsInt(EqAll_)+',''ИТОГО'')';
- EqSODate_ :
- QTmp.Sql.Text := 'INSERT #report'+'(no) VALUES('+SqlAsInt(EqAll_)+')';
- EqSOFirm_ :
- QTmp.Sql.Text := 'INSERT #report'+'(no,'+Korr_+') VALUES('+SqlAsInt(EqAll_)+',''ИТОГО'')';
- end;
- SqlTry(QTmp,False);
- if FltRec['Razrez'].AsInteger = EqSOFirm_ then
- begin
- UpdateItogo( dbBeg_);
- UpdateItogo( crBeg_);
- end;
- if FltRec['Analitic'].AsInteger<>0 then
- begin
- QTypeDoc.First;
- while not QTypeDoc.Eof do
- begin
- UpdateItogo(QTypeDoc.FieldByName('fldname').AsString);
- QTypeDoc.Next;
- end;
- end;
- //Вычисление суммы итого
- UpdateItogo(dbObor_);
- UpdateItogo(crObor_);
- UpdateItogo(dbEnd_);
- UpdateItogo(crEnd_);
- //Кон.сальдо
- if FltRec['Razrez'].AsInteger in [EqSODoc_,EqSODate_] then
- begin
- if (FltRec['PaySpr'].AsInteger > 0) and
- ( FltRec['PayCode'].AsInteger <> 0) then
- begin
- if FltRec['Razrez'].AsInteger = EqSODoc_ then
- QTmp.Sql.Text := 'INSERT #report(no,"№ докум.") VALUES('+SqlAsInt(EqEnd_)+',''Кон.сальдо'')'
- else
- QTmp.Sql.Text := 'INSERT #report(no) VALUES('+SqlAsInt(EqEnd_)+')';
- dbBegSum := 0;
- crBegSum := 0;
- CopyStrArray(QTmp.Sql,[
- 'SELECT ISNULL(SUM('+dbEnd_+'),0)-ISNULL(SUM('+crEnd_+'),0)',
- 'FROM #report',
- 'WHERE no IN ('+SqlAsInt(EqBeg_)+','+SqlAsInt(EqAll_)+')'
- ],False);
- SqlTry(QTmp,True);
- try
- dbBegSum := QTmp.Fields[0].AsCurrency;
- finally
- SqlClose(QTmp);
- end;
- if dbBegSum<0 then
- begin
- crBegSum := -dbBegSum;
- dbBegSum := 0;
- end;
- CopyStrArray(QTmp.Sql,[
- 'UPDATE #report SET',
- dbEnd_+'='+SqlAsFloat(dbBegSum)+',',
- crEnd_+'='+SqlAsFloat(crBegSum),
- 'WHERE no='+SqlAsInt(EqEnd_)
- ],True);
- SqlTry( QTmp,False);
- end;
- end;
- {$IFDEF FGUP}
- CopyStrArray(QSelect.Sql,[
- 'DROP TABLE #fltdoc',
- 'SELECT rp.* FROM #report rp'
- ],True);
- if (FltRec['Razrez'].AsInteger = EqSOFirm_) then
- CopyStrArray(QSelect.Sql,[
- iif(FltRec['Rayon'].AsInteger>0,'WHERE rp.RgnCode = '+SqlAsInt(FltRec['Rayon'].AsInteger),'')
- ],False);
- {$ELSE}
- CopyStrArray(QSelect.Sql,[
- 'DROP TABLE #fltdoc',
- 'SELECT * FROM #report'
- ],True);
- {$ENDIF}
- case FltRec['Razrez'].AsInteger of
- EqSODoc_ :
- QSelect.Sql.Add('ORDER BY no,"Дата","№ докум."');
- EqSODate_ :
- QSelect.Sql.Add('ORDER BY no,"Дата"');
- EqSOFirm_ :
- QSelect.Sql.Add('ORDER BY no,"Корреспондент"');
- end;
- QSelect.Sql.Add('DROP TABLE #report');
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement