📄 jgbbsjlr.pas
字号:
end;
end;
ToolButton2.Enabled := true;
end;
procedure TFormJGBbSjLr.CboMLChange(Sender: TObject);
begin
ToolButton2.Enabled := false;
Indx := CboMl.ItemIndex + 1;
end;
procedure TFormJGBbSjLr.DTChange(Sender: TObject);
begin
ToolButton2.Enabled := false;
end;
procedure TFormJGBbSjLr.ToolButton3Click(Sender: TObject);
var
i, j: smallint;
row, col: smallint;
gs: olevariant;
begin
{ if not DM.F_CWConnect() then
begin
Application.MessageBox('无法连接业务数据库,不能查询!', MsgCaption, 48);
exit;
end; }
bbfilename := ExtractFilePath(Paramstr(0)) + BbFileGS + copy(trim(CboML.Text),
1, 2) + '.cll';
if not fileexists(bbfilename) then
begin
showmessage('报表文件不存在,请确定报表位置!');
CboML.ItemIndex := -1;
exit;
end;
for i := 0 to cell1.Cols - 1 do
for j := 0 to cell1.Rows - 1 do
cell1.DoClearCell(i, j, 0);
if cell1.DoOpenFile(bbfilename) > 0 then
cell1.DoRedrawAll;
DM.P_CwBbGsInfo(' ', copy(trim(CboML.Text), 1, 2), 1);
with DM do
begin
cds_SD.First;
while not cds_SD.Eof do
begin
row := cds_SD.Fields.fieldbyname('row').AsInteger;
col := cds_SD.Fields.Fieldbyname('col').AsInteger;
gs := cds_SD.Fields.Fieldbyname('gs').AsVariant;
cell1.DoSetFormula(col, row, gs);
cds_SD.Next;
end;
end;
if copy(trim(CboML.Text), 1, 2) = '07' then
Gjjtjb;
cell1.DoSetShowFormulaState(0);
ToolButton2.Enabled := true;
end;
procedure TFormJGBbSjLr.Cell1ExecuteUserFunc(Sender: TObject;
const name: WideString; rettype, paranum: Smallint;
var paratype: Integer; var funcResult: OleVariant);
var
// para0,para1,para2,para3:OleVariant;
dp0, dp1, dp2: Double;
cp0, cp1, cp2, cdt: string;
funcret: olevariant;
d1, d2: TDate;
bbdate, BbNumber, DptNumber: string;
begin
bbdate := dtoc(DT.Date);
BbNumber := copy(trim(CboML.Text), 1, 2);
DptNumber := ' ';
funcret := 0;
if uppercase(name) = 'CW_CALC' then
begin
cp0 := cell1.DoFetchFuncStringParameter(0);
dp0 := cell1.DoFetchFuncDoubleParameter(1);
cp1 := cell1.DoFetchFuncStringParameter(2);
funcret := Cw_Calc(bbdate, cp0, dp0, cp1);
end
else if (uppercase(name) = 'GETDATA') then
begin
cp0 := cell1.DoFetchFuncStringParameter(0);
dp0 := cell1.DoFetchFuncDoubleParameter(1);
dp1 := cell1.DoFetchFuncDoubleParameter(2);
cp1 := cell1.DoFetchFuncStringParameter(3);
cp2 := cell1.DoFetchFuncStringParameter(4);
if cp2 = '' then
cp2 := '0001';
cdt := dtos(DT.Date, 6);
funcret := DM.F_GetData(cp1, cp0, cp2, cdt, trunc(dp0), trunc(dp1));
end
else if uppercase(name) = 'GETYHZH' then
begin
cp0 := cell1.DoFetchFuncStringParameter(0);
funcret := getyhzh(cp0);
end
else if uppercase(name) = 'GETKHYH' then
begin
cp0 := cell1.DoFetchFuncStringParameter(0);
funcret := getkhyh(cp0);
end
else if uppercase(name) = 'GJDATA' then
begin
dp0 := cell1.DoFetchFuncDoubleParameter(0);
dp1 := cell1.DoFetchFuncDoubleParameter(1);
cell1.DoGetCellData(trunc(dp0), trunc(dp1), funcret);
end
else if uppercase(name) = 'GJGET' then
begin
cdt := dtos(strtodate(bbdate), 6);
dp0 := cell1.DoFetchFuncDoubleParameter(0);
dp1 := cell1.DoFetchFuncDoubleParameter(1);
cp0 := cell1.DoFetchFuncStringParameter(2);
cp1 := cell1.DoFetchFuncStringParameter(3);
if cp0 = '' then
cp0 := BbNumber;
if cp1 = '' then
cp1 := DptNumber;
funcret := DM.f_GjGet(trunc(dp0), trunc(dp1), cp0, cp1, cdt);
end
else if (uppercase(name) = 'GJGETD') then
begin
dp0 := cell1.DoFetchFuncDoubleParameter(0);
dp1 := cell1.DoFetchFuncDoubleParameter(1);
dp2 := cell1.DoFetchFuncDoubleParameter(2);
cp0 := cell1.DoFetchFuncStringParameter(3);
cp1 := cell1.DoFetchFuncStringParameter(4);
if cp0 = '' then
cp0 := BbNumber;
if cp1 = '' then
cp1 := DptNumber;
case trunc(dp2) of
0: d1 := StrtoDate(BbDate);
1: d1 := IncDay(StrtoDate(BbDate), -1);
2: d1 := IncMonth(StrtoDate(BbDate), -1);
3: d1 := IncMonth(StartoftheYear(StrtoDate(BbDate)),
trunc((MonthOf(StrToDate(BbDate)) - 1) / 3));
4: d1 := IncYear(StrtoDate(BbDate), -1);
else
d1 := StrtoDate(BbDate);
end;
cdt := dtos(d1, 6);
funcret := DM.f_GjGet(trunc(dp0), trunc(dp1), cp0, cp1, cdt);
end
else if uppercase(name) = 'GJSUMH' then
begin
cdt := dtos(strtodate(bbdate), 6);
dp0 := cell1.DoFetchFuncDoubleParameter(0);
dp1 := cell1.DoFetchFuncDoubleParameter(1);
dp2 := cell1.DoFetchFuncDoubleParameter(2);
cp0 := cell1.DoFetchFuncStringParameter(3);
cp1 := cell1.DoFetchFuncStringParameter(4);
if cp0 = '' then
cp0 := BbNumber;
if cp1 = '' then
cp1 := DptNumber;
funcret := DM.f_GjSumH(trunc(dp0), trunc(dp1), trunc(dp2), cp0, cp1, cdt);
end
else if uppercase(name) = 'GJSUMV' then
begin
cdt := dtos(strtodate(bbdate), 6);
dp0 := cell1.DoFetchFuncDoubleParameter(0);
dp1 := cell1.DoFetchFuncDoubleParameter(1);
dp2 := cell1.DoFetchFuncDoubleParameter(2);
cp0 := cell1.DoFetchFuncStringParameter(3);
cp1 := cell1.DoFetchFuncStringParameter(4);
if cp0 = '' then
cp0 := BbNumber;
if cp1 = '' then
cp1 := DptNumber;
funcret := DM.f_GjSumV(trunc(dp0), trunc(dp1), trunc(dp2), cp0, cp1, cdt);
end;
funcresult := funcret;
end;
procedure TFormJGBbSjLr.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
if E is ESOAPHTTPException then
//showmessage('Something is wrong!')
else
Application.ShowException(E);
end;
procedure TFormJGBbSjLr.ToolButton5Click(Sender: TObject);
begin
RichEdit1.Visible := True;
end;
procedure TFormJGBbSjLr.ToolButton6Click(Sender: TObject);
begin
RichEdit1.Visible := False;
end;
procedure TFormJGBbSjLr.ToolButton4Click(Sender: TObject);
var
v1, v2: OleVariant;
iNo, ir: smallint;
C1, C2, cRelL, cRel, cRelR, BbNumber: string;
lRight: Boolean;
begin
RichEdit1.Clear;
RichEdit1.Visible := True;
BbNumber := copy(trim(CboML.Text), 1, 2);
DM.pQryRelation(BbNumber);
ir := Cell1.Rows;
cell1.Rows := ir + 1;
with DM.cds_SD do
begin
while not Eof do
begin
lRight := False;
cRelL := trim(FieldByName('bbrelationl').AsString);
cRel := trim(FieldByName('bbrelation').AsString);
cRelR := trim(FieldByName('bbrelationr').AsString);
iNo := FieldByName('relationno').AsInteger;
next;
Cell1.DoSetFormula(0, ir, cRelL);
Cell1.DoSetFormula(1, ir, cRelR);
Cell1.DoCalculateAll;
Cell1.DoGetCellData(0, ir, v1);
Cell1.DoGetCellData(1, ir, v2);
// Cell1.DoCalculateExpr(cRelL,iRet,v1);
// Cell1.DoCalculateExpr(cRelR,iRet,v2);
C1 := FTOS(v1, 16, 3);
C2 := FTOS(v2, 16, 3);
if cRel = '=' then
begin
if C1 = C2 then
begin
lRight := True;
end;
end
else if cRel = '>' then
begin
if C1 > C2 then
lRight := True;
end
else if cRel = '>=' then
begin
if C1 >= C2 then
lRight := True;
end
else if cRel = '<' then
begin
if C1 < C2 then
lRight := True;
end
else if cRel = '<=' then
begin
if C1 <= C2 then
lRight := True;
end;
if not lRight then
begin
RichEdit1.Lines.Add('不满足' + itos(iNo, 4) + ' 号勾稽公式:');
RichEdit1.Lines.Add(' ' + cRelL + cRel + cRelR);
RichEdit1.Lines.Add(' 公式左=' + trim(FtoS(Double(v1), 16, 2)) +
';公式右=' + trim(FtoS(Double(v2), 16, 2)));
end;
end;
end;
cell1.Rows := ir;
end;
procedure TFormJGBbSjLr.ToolButton11Click(Sender: TObject);
begin
cell1.DoPrint(false);
end;
procedure TFormJGBbSjLr.ToolButton12Click(Sender: TObject);
begin
cell1.DoPrintPreview(true);
end;
procedure TFormJGBbSjLr.DoEnter(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.Message = WM_KEYDOWN) then
begin
//if (Msg.wParam = VK_RETURN ) then
// Keybd_Event(VK_DOWN,0,0,0);
end;
end;
procedure TFormJGBbSjLr.Gjjtjb;
var
Ary: array of double;
Ary0: array of integer;
dt1, dt2: Tdatetime;
i: smallint;
begin
setlength(Ary, 18);
setlength(Ary0, 3);
dt1 := StartOfTheMonth(DT.Date);
dt2 := EndOfTheMonth(DT.Date);
DM.p_GetGjjtjb(datetostr(dt1), datetostr(dt2), Ary, Ary0);
//showmessage(datetostr(dt1)+datetostr(dt2));
for i := 0 to 5 do
Ary[i] := trunc(Ary[i] / 100) / 100;
cell1.DoSetCellData(7, 15, Ary[0]);
cell1.DoSetCellData(7, 16, Ary[1]);
cell1.DoSetCellData(7, 17, Ary[2]);
cell1.DoSetCellData(7, 18, Ary[3]);
cell1.DoSetCellData(7, 19, Ary[0] + Ary[1] - Ary[2]); //Ary[4]);
cell1.DoSetCellData(7, 20, Ary[5]);
cell1.DoSetCellData(3, 10, Ary[6]);
cell1.DoSetCellData(3, 11, Ary[7]);
cell1.DoSetCellData(3, 14, Ary[8]);
cell1.DoSetCellData(3, 15, Ary[9]);
cell1.DoSetCellData(3, 16, Ary[10]);
cell1.DoSetCellData(3, 17, Ary[11]);
cell1.DoSetCellData(3, 18, Ary[12]);
cell1.DoSetCellData(3, 19, Ary[13]);
cell1.DoSetCellData(3, 20, Ary[14]);
cell1.DoSetCellData(3, 21, Ary[15]);
cell1.DoSetCellData(7, 21, Ary0[0]);
cell1.DoSetCellData(7, 22, Ary0[1]);
cell1.DoSetCellData(7, 23, Ary0[2]);
cell1.DoSetCellData(3, 12, Ary[16]);
cell1.DoSetCellData(3, 13, Ary[17]);
cell1.DoRedrawAll;
end;
function TFormJGBbSjLr.getyhzh(kmdm: string): string;
var
yhzh, khyh: string;
begin
DM.f_GetYhxx(kmdm, Khyh, Yhzh);
result := yhzh;
end;
function TFormJGBbSjLr.getKhyh(kmdm: string): string;
var
yhzh, khyh: string;
begin
DM.f_GetYhxx(kmdm, Khyh, Yhzh);
result := khyh;
end;
function TFormJGBbSjLr.Cw_Calc(cdate: string; Km, Func,
ztbh: olevariant): Double;
var
// cRq,cn,czt,cdb,cqyny,cjsnf:string;
cRq: string;
lpz: smallint;
begin
cRq := copy(cdate, 1, 4) + copy(cdate, 6, 2);
lpz := 0;
result := DM.f_Cwcalc(Km, cRq, ztbh, Func, lpz);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -