You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

340 lines
11 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

unit u_op_seae_excel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
dxExEdtr, DB, dxTL, dxDBCtrl, dxDBGrid, dxCntner, StdCtrls, Mask,
wwdbedit, Wwdotdot, Wwdbcomb, bsSkinCtrls, Dialogs, Excel, ADODB,
BusinessSkinForm, DBCtrls;
type
Tfrm_op_seae_excel = class(TForm)
bsBusinessSkinForm1: TbsBusinessSkinForm;
t_excel_bill: TADOQuery;
t_excel_bill1: TDataSource;
bsSkinPanel1: TbsSkinPanel;
t_excel_bill_bill: TADOQuery;
t_excel_bill_bill1: TDataSource;
bsSkinPanel8: TbsSkinPanel;
bsSkinButton10: TbsSkinButton;
bsSkinButton11: TbsSkinButton;
bsSkinButton12: TbsSkinButton;
Excel1: TExcel;
t_op_ctn: TADOQuery;
bsSkinOpenDialog1: TOpenDialog;
SaveDialog: TSaveDialog;
bsSkinGroupBox2: TbsSkinGroupBox;
bsSkinPanel6: TbsSkinPanel;
bsSkinPanel7: TbsSkinPanel;
bsSkinButton7: TbsSkinButton;
bsSkinButton8: TbsSkinButton;
bsSkinButton9: TbsSkinButton;
t_excel_billEX_ID: TAutoIncField;
t_excel_billDSDesigner: TStringField;
t_excel_billDSDesigner2: TBlobField;
dxDBGrid2: TdxDBGrid;
dxDBGrid2Column1: TdxDBGridMaskColumn;
dxDBGrid2X: TdxDBGridMaskColumn;
dxDBGrid2Y: TdxDBGridMaskColumn;
bsSkinPanel9: TbsSkinPanel;
wwDBComboBox2: TwwDBComboBox;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
dxDBGrid2Column4: TdxDBGridColumn;
DBEdit5: TDBEdit;
bsSkinButton1: TbsSkinButton;
bsSkinButton2: TbsSkinButton;
bsSkinButton4: TbsSkinButton;
bsSkinGroupBox3: TbsSkinGroupBox;
bsSkinPanel2: TbsSkinPanel;
dxDBGrid1: TdxDBGrid;
dxDBGrid1Column1: TdxDBGridMaskColumn;
Memo1: TMemo;
bsSkinButton13: TbsSkinButton;
procedure FormShow(Sender: TObject);
procedure bsSkinButton1Click(Sender: TObject);
procedure bsSkinButton2Click(Sender: TObject);
procedure bsSkinButton4Click(Sender: TObject);
procedure t_excel_billPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure t_excel_bill_billPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
procedure t_excel_billBeforeDelete(DataSet: TDataSet);
procedure bsSkinButton7Click(Sender: TObject);
procedure bsSkinButton8Click(Sender: TObject);
procedure bsSkinButton9Click(Sender: TObject);
procedure t_excel_bill_ctnBeforeInsert(DataSet: TDataSet);
procedure t_excel_bill_billBeforePost(DataSet: TDataSet);
procedure t_excel_bill_billAfterInsert(DataSet: TDataSet);
procedure bsSkinButton11Click(Sender: TObject);
procedure bsSkinButton12Click(Sender: TObject);
procedure bsSkinButton10Click(Sender: TObject);
procedure bsSkinButton13Click(Sender: TObject);
private
{ Private declarations }
public
tradetype:string;
{ Public declarations }
end;
var
frm_op_seae_excel: Tfrm_op_seae_excel;
implementation
uses u_main, my_sys_function, u_op_seae;
{$R *.dfm}
procedure Tfrm_op_seae_excel.FormShow(Sender: TObject);
var
i:integer;
begin
if tradetype='SEA' then begin
wwDBComboBox2.Items.Clear;
wwDBComboBox2.Items.Add('<27>̶<EFBFBD>ֵ');
wwDBComboBox2.Items.Add('<27><>װ<EFBFBD><D7B0>111');
for i:=0 to frm_op_seae.t_op_seae2.DataSet.FieldCount-1 do begin
wwDBComboBox2.Items.Add(frm_op_seae.t_op_seae2.DataSet.Fields[i].FieldName);
end;
end else if tradetype='AIR' then begin
{
wwDBComboBox2.Items.Clear;
wwDBComboBox2.Items.Add('<27>̶<EFBFBD>ֵ');
for i:=0 to frm_op_aire.t_op_aire1.DataSet.FieldCount-1 do begin
wwDBComboBox2.Items.Add(frm_op_aire.t_op_aire1.DataSet.Fields[i].FieldName);
end;
}
end;
t_excel_bill.open;
t_excel_bill_bill.open;
end;
procedure Tfrm_op_seae_excel.bsSkinButton1Click(Sender: TObject);
begin
t_excel_bill.insert;
end;
procedure Tfrm_op_seae_excel.bsSkinButton2Click(Sender: TObject);
begin
table_post(t_excel_bill);
end;
procedure Tfrm_op_seae_excel.bsSkinButton4Click(Sender: TObject);
begin
table_delete(t_excel_bill);
end;
procedure Tfrm_op_seae_excel.t_excel_billPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
showmessage('<27><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>');
end;
procedure Tfrm_op_seae_excel.t_excel_bill_billPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
showmessage('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>');
end;
procedure Tfrm_op_seae_excel.t_excel_billBeforeDelete(DataSet: TDataSet);
begin
table_before_delete(t_excel_bill_bill,'<27>ӱ<EFBFBD>');
end;
procedure Tfrm_op_seae_excel.bsSkinButton7Click(Sender: TObject);
begin
t_excel_bill_bill.insert;
end;
procedure Tfrm_op_seae_excel.bsSkinButton8Click(Sender: TObject);
begin
table_post(t_excel_bill_bill);
end;
procedure Tfrm_op_seae_excel.bsSkinButton9Click(Sender: TObject);
begin
table_delete(t_excel_bill_bill);
end;
procedure Tfrm_op_seae_excel.t_excel_bill_ctnBeforeInsert(
DataSet: TDataSet);
begin
table_before_insert(t_excel_bill);
end;
procedure Tfrm_op_seae_excel.t_excel_bill_billBeforePost(
DataSet: TDataSet);
begin
table_before_post(t_excel_bill_bill,'<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>');
table_before_post(t_excel_bill_bill,'<27><><EFBFBD><EFBFBD>X');
table_before_post(t_excel_bill_bill,'<27><><EFBFBD><EFBFBD>Y');
end;
procedure Tfrm_op_seae_excel.t_excel_bill_billAfterInsert(
DataSet: TDataSet);
begin
t_excel_bill_bill['EX_ID']:=t_excel_bill['EX_ID'];
end;
procedure Tfrm_op_seae_excel.bsSkinButton11Click(Sender: TObject);
begin
close;
end;
procedure Tfrm_op_seae_excel.bsSkinButton12Click(Sender: TObject);
begin
if t_excel_bill.IsEmpty then
exit;
if (t_excel_bill.state=dsinsert)or(t_excel_bill.state=dsedit)then
t_excel_bill.Post;
if bsSkinOpenDialog1.Execute then
begin
t_excel_bill.EDIT;
t_excel_billDSDesigner2.LoadFromFile(bsSkinOpenDialog1.FileName);
t_excel_bill.post;
end;
end;
procedure Tfrm_op_seae_excel.bsSkinButton10Click(Sender: TObject);
var
str:Tstringlist;
wide_str:widestring;
i:integer;
Y:INTEGER;
begin
if tradetype='SEA' then begin
if t_excel_bill.IsEmpty then
exit;
t_excel_billDSDesigner2.SaveToFile(ExtractFilePath(ParamStr(0))+t_excel_bill.fieldbyname('EX_ID').asstring+'.xls');
str:=Tstringlist.Create;
str.Clear;
excel1.Connect;
Excel1.Exec('[open('+'"'+ExtractFilePath(ParamStr(0))+t_excel_bill.fieldbyname('EX_ID').asstring+'.xls'+'"'+')]');
t_excel_bill_bill.First;
while not t_excel_bill_bill.eof do
begin
if t_excel_bill_bill.fieldbyname('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>').asstring<>'<27><>װ<EFBFBD><D7B0>111'then
begin
if trim(t_excel_bill_bill.fieldbyname('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>').asstring)<>'<27>̶<EFBFBD>ֵ'then
begin
Memo1.Text:=frm_op_seae.t_op_seae2.DataSet.fieldbyname(t_excel_bill_bill.fieldbyname('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>').asstring).asstring;
for i:=0 to Memo1.Lines.Count-1 do
begin
excel1.putstr(t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>Y').asinteger+i,
t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>X').asinteger,
Memo1.Lines[i]);
end;
end
else
begin
excel1.putstr(t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>Y').asinteger,
t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>X').asinteger,
trim(t_excel_bill_bill.fieldbyname('<27>̶<EFBFBD>ֵ').asstring));
end;
end
else
begin
t_op_ctn.close;
t_op_ctn.Parameters[0].value:=frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring;
t_op_ctn.open;
Y:=t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>Y').asinteger;
t_op_ctn.first;
while not t_op_ctn.eof do
begin
wide_str:=t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring
+copy(' ',1,20-length(t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring))
+t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring;
excel1.putstr(Y,1,wide_str);
wide_str:=t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring+'X'
+t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ').asstring+' '
+t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring
+t_op_ctn.fieldbyname('<27><>װ').asstring;
excel1.putstr(Y,2,wide_str);
wide_str:=t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring+'KGS';
excel1.putstr(Y,5,wide_str);
wide_str:=t_op_ctn.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring+'CBM';
excel1.putstr(Y,6,wide_str);
Y:=Y+1;
t_op_ctn.next;
end;
wide_str:=frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring
+frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><>װ').asstring;
excel1.putstr(33,2,wide_str);
wide_str:=frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring+'KGS';
excel1.putstr(33,5,wide_str);
wide_str:=frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD>').asstring+'CBM';
excel1.putstr(33,6,wide_str);
end;
t_excel_bill_bill.next;
end;
SaveDialog.Filter := '(*.xls)|*.xls';
SaveDialog.FileName := frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD><E1B5A5>').asstring+'.xls';
if SaveDialog.Execute then
begin
Excel1.Exec('[SAVE.AS("'+SaveDialog.FileName+'";1;"";false;"";false)]');
Excel1.Exec('[CLOSE(false)]');
Excel1.Exec('[open("'+SaveDialog.FileName+'")]');
Excel1.Exec('[APP.maxIMIZE()]'); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>excel
end;
end else if tradetype='AIR' then begin
if t_excel_bill.IsEmpty then
exit;
t_excel_billDSDesigner2.SaveToFile(ExtractFilePath(ParamStr(0))+t_excel_bill.fieldbyname('EX_ID').asstring+'.xls');
str:=Tstringlist.Create;
str.Clear;
excel1.Connect;
Excel1.Exec('[open('+'"'+ExtractFilePath(ParamStr(0))+t_excel_bill.fieldbyname('EX_ID').asstring+'.xls'+'"'+')]');
t_excel_bill_bill.First;
while not t_excel_bill_bill.eof do
begin
if trim(t_excel_bill_bill.fieldbyname('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>').asstring)<>'<27>̶<EFBFBD>ֵ'then
begin
Memo1.Text:=frm_op_aire.t_op_aire1.DataSet.fieldbyname(t_excel_bill_bill.fieldbyname('<27>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>').asstring).asstring;
for i:=0 to Memo1.Lines.Count-1 do
begin
excel1.putstr(t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>Y').asinteger+i,
t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>X').asinteger,
Memo1.Lines[i]);
end;
end
else
begin
excel1.putstr(t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>Y').asinteger,
t_excel_bill_bill.fieldbyname('<27><><EFBFBD><EFBFBD>X').asinteger,
trim(t_excel_bill_bill.fieldbyname('<27>̶<EFBFBD>ֵ').asstring));
end;
t_excel_bill_bill.next;
end;
SaveDialog.Filter := '(*.xls)|*.xls';
SaveDialog.FileName := frm_op_seae.t_op_seae2.DataSet.fieldbyname('<27><><EFBFBD><EFBFBD><E1B5A5>').asstring+'.xls';
if SaveDialog.Execute then
begin
Excel1.Exec('[SAVE.AS("'+SaveDialog.FileName+'";1;"";false;"";false)]');
Excel1.Exec('[CLOSE(false)]');
Excel1.Exec('[open("'+SaveDialog.FileName+'")]');
Excel1.Exec('[APP.maxIMIZE()]'); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>excel
end;
end;
end;
procedure Tfrm_op_seae_excel.bsSkinButton13Click(Sender: TObject);
begin
if t_excel_bill.IsEmpty then
exit;
end;
end.