unit u_opor_ctn; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bsSkinCtrls, BusinessSkinForm, Grids, Wwdbigrd, Wwdbgrid, StdCtrls, wwdblook, DB, ADODB, Mask, wwdbedit, Wwdotdot, Wwdbcomb; type Tfrm_opor_ctn = class(TForm) bsBusinessSkinForm1: TbsBusinessSkinForm; wwDBGrid1: TwwDBGrid; wwDBLookupCombo1: TwwDBLookupCombo; wwDBLookupCombo2: TwwDBLookupCombo; t_op_ctn: TADOQuery; t_op_ctn1: TDataSource; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; bsSkinPanel1: TbsSkinPanel; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinButton4: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton6: TbsSkinButton; bsSkinButton5: TbsSkinButton; bsSkinButton9: TbsSkinButton; t_ch_client: TADOQuery; t_ch_client1: TDataSource; procedure t_op_ctnAfterInsert(DataSet: TDataSet); procedure t_op_ctnBeforePost(DataSet: TDataSet); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton2Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure wwDBLookupCombo1Change(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure t_op_ctnAfterPost(DataSet: TDataSet); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_opor_ctn: Tfrm_opor_ctn; frm_opor_ctn_type:boolean; opor_ctn_limited:string; implementation uses u_data_share, my_sys_function, u_main; {$R *.dfm} procedure Tfrm_opor_ctn.t_op_ctnAfterInsert(DataSet: TDataSet); begin t_op_ctn['OR_ID']:=t_op_ctn.DataSource.DataSet['OR_ID']; t_op_ctn['数量']:=1; end; procedure Tfrm_opor_ctn.t_op_ctnBeforePost(DataSet: TDataSet); begin if frm_data_share.t_code_ctn.Locate('代码',t_op_ctn.fieldbyname('代码').asstring,[]) then begin t_op_ctn['表现形式']:=frm_data_share.t_code_ctn['表现形式']; if frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='20'then t_op_ctn['TEU']:=1*t_op_ctn.FieldByName('数量').asinteger; if (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='40')OR (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='45')then t_op_ctn['TEU']:=2*t_op_ctn.FieldByName('数量').asinteger; end else begin t_op_ctn['代码']:=''; t_op_ctn['表现形式']:=''; t_op_ctn['箱型']:=''; t_op_ctn['尺寸']:=''; end; table_before_post(t_op_ctn,'代码'); table_before_post(t_op_ctn,'数量'); end; procedure Tfrm_opor_ctn.bsSkinButton1Click(Sender: TObject); begin t_op_ctn.insert; end; procedure Tfrm_opor_ctn.bsSkinButton2Click(Sender: TObject); begin table_post(t_op_ctn); end; procedure Tfrm_opor_ctn.bsSkinButton4Click(Sender: TObject); begin table_delete(t_op_ctn); end; procedure Tfrm_opor_ctn.bsSkinButton3Click(Sender: TObject); begin table_cancel(t_op_ctn); end; procedure Tfrm_opor_ctn.bsSkinButton5Click(Sender: TObject); begin close; end; procedure Tfrm_opor_ctn.FormShow(Sender: TObject); begin t_op_ctn.open; frm_data_share.t_code_ctn.requery; frm_data_share.t_code_package.requery; end; procedure Tfrm_opor_ctn.wwDBLookupCombo1Change(Sender: TObject); begin if (t_op_ctn.State=dsedit)or(t_op_ctn.State=dsinsert) then begin if frm_data_share.t_code_ctn.Locate('代码',wwDBLookupCombo1.text,[]) then begin t_op_ctn['表现形式']:=frm_data_share.t_code_ctn['表现形式']; t_op_ctn['箱型']:=frm_data_share.t_code_ctn['箱型']; t_op_ctn['尺寸']:=frm_data_share.t_code_ctn['尺寸']; end else begin t_op_ctn['表现形式']:=''; t_op_ctn['箱型']:=''; t_op_ctn['尺寸']:=''; end; end; end; procedure Tfrm_opor_ctn.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=frm_close_query(t_op_ctn); end; procedure Tfrm_opor_ctn.t_op_ctnAfterPost(DataSet: TDataSet); begin update_ctn(t_op_ctn); end; procedure Tfrm_opor_ctn.bsSkinButton9Click(Sender: TObject); var i:integer; str:string; begin if t_op_ctn.IsEmpty then exit; if wwDBGrid1.SelectedList.Count>=1 then begin for i:=0 to wwDBGrid1.SelectedList.Count-1 do begin t_op_ctn.GotoBookmark(pointer(wwDBGrid1.SelectedList[i])); if i=0 then str:='('+t_op_ctn.fieldbyname('ctn_id').asstring else str:=str+','+t_op_ctn.fieldbyname('ctn_id').asstring; end; end else begin str:='('+t_op_ctn.fieldbyname('ctn_id').asstring; end; str:=str+')'; t_ch_client.close; t_ch_client.sql.clear; t_ch_client.sql.add('select * from t_opor_ctn ' +'where ctn_id in '+str +' order by ctn_id'); t_ch_client.open; sys_print('海运出口装箱单',2,t_op_ctn.DataSource,nil,nil,nil,nil,t_ch_client1,t_op_ctn1,nil,nil,nil,nil); end; procedure Tfrm_opor_ctn.bsSkinButton6Click(Sender: TObject); var bok:Tbookmark; if_first:boolean; pkgs:integer; kgs,cbm:double; s,package:string; begin if t_op_ctn.IsEmpty then exit; t_op_ctn.First; if_first:=true; pkgs:=0; kgs:=0.00; cbm:=0.00; bok:=t_op_ctn.GetBookmark; try t_op_ctn.DisableControls; while not t_op_ctn.Eof do begin if strtobool(get_parameters_value(139,'true')) then begin if if_first then begin memo2.Lines.Text:=t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring; memo3.Lines.Text:=t_op_ctn.fieldbyname('重量').asstring+'KGS'; memo4.Lines.Text:=t_op_ctn.fieldbyname('尺码').asstring+'CBM'; pkgs:=t_op_ctn.fieldbyname('件数').asinteger; kgs:=t_op_ctn.fieldbyname('重量').asfloat; cbm:=t_op_ctn.fieldbyname('尺码').asfloat; package:=t_op_ctn.fieldbyname('包装').asstring; if_first:=false; end else begin memo2.Lines.Add(t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring); memo3.Lines.Add(t_op_ctn.fieldbyname('重量').asstring+'KGS'); memo4.Lines.Add(t_op_ctn.fieldbyname('尺码').asstring+'CBM'); pkgs:=pkgs+t_op_ctn.fieldbyname('件数').asinteger; kgs:=kgs+t_op_ctn.fieldbyname('重量').asfloat; cbm:=cbm+t_op_ctn.fieldbyname('尺码').asfloat; package:=t_op_ctn.fieldbyname('包装').asstring; end; end else begin if if_first then begin memo1.Lines.Text:=t_op_ctn.fieldbyname('箱号').asstring+'/'+t_op_ctn.fieldbyname('封号').asstring+'/'+t_op_ctn.fieldbyname('表现形式').asstring+'/' +t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring+'/'+t_op_ctn.fieldbyname('重量').asstring+'KGS'+'/'+t_op_ctn.fieldbyname('尺码').asstring+'CBM'; memo2.Lines.Text:=t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring; memo3.Lines.Text:=t_op_ctn.fieldbyname('重量').asstring+'KGS'; memo4.Lines.Text:=t_op_ctn.fieldbyname('尺码').asstring+'CBM'; pkgs:=t_op_ctn.fieldbyname('件数').asinteger; kgs:=t_op_ctn.fieldbyname('重量').asfloat; cbm:=t_op_ctn.fieldbyname('尺码').asfloat; package:=t_op_ctn.fieldbyname('包装').asstring; if_first:=false; end else begin memo2.Lines.Add(t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring); memo3.Lines.Add(t_op_ctn.fieldbyname('重量').asstring+'KGS'); memo4.Lines.Add(t_op_ctn.fieldbyname('尺码').asstring+'CBM'); pkgs:=pkgs+t_op_ctn.fieldbyname('件数').asinteger; kgs:=kgs+t_op_ctn.fieldbyname('重量').asfloat; cbm:=cbm+t_op_ctn.fieldbyname('尺码').asfloat; package:=t_op_ctn.fieldbyname('包装').asstring; end; end; t_op_ctn.next; end; if (FormatFloat('0.0000;-0.0000;0',pkgs)<>FormatFloat('0.0000;-0.0000;0',t_op_ctn.DataSource.DataSet.FieldByName('件数').AsInteger)) or (FormatFloat('0.0000;-0.0000;0',kgs)<>FormatFloat('0.0000;-0.0000;0',t_op_ctn.DataSource.DataSet.FieldByName('重量').AsFloat)) or (FormatFloat('0.0000;-0.0000;0',cbm)<>FormatFloat('0.0000;-0.0000;0',t_op_ctn.DataSource.DataSet.FieldByName('尺码').AsFloat)) or ((Trim(package)<>'') and (Trim(package)<>Trim(t_op_ctn.DataSource.DataSet.fieldbyname('包装').asstring))) then begin if MessageDlg('基本信息的件,重,尺,包装和集装箱信息的件,重,尺,包装不同,是否更新',mtWarning,[mbyes,mbno],0)=mrYes then begin t_op_ctn.DataSource.DataSet.edit; t_op_ctn.DataSource.DataSet['件数包装']:=memo2.Lines.Text; t_op_ctn.DataSource.DataSet['货物重量']:=memo3.Lines.Text; t_op_ctn.DataSource.DataSet['货物尺码']:=memo4.Lines.Text; t_op_ctn.DataSource.DataSet.post; end; end; finally t_op_ctn.EnableControls; t_op_ctn.GotoBookmark(bok); end; end; end.