D10DJkaimengwenshang/项目代码/wenshangkm/G01贸易生产计划/U_PlanDR.pas

736 lines
22 KiB
ObjectPascal
Raw Permalink Normal View History

2025-09-27 14:24:10 +08:00
unit U_PlanDR;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses,
cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB,
DBClient, ExtCtrls, StdCtrls, BtnEdit, cxButtonEdit, cxTextEdit,
cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxCalendar,
dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, ComObj,
dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel,
dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle,
dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast,
dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky,
dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins,
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray,
dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful,
dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful,
dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven,
dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue,
dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010,
dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, dxScrollbarAnnotations;
type
TfrmPlanDR = class(TForm)
DS_1: TDataSource;
CDS_Import: TClientDataSet;
GPM_1: TcxGridPopupMenu;
ToolBar1: TToolBar;
TSave: TToolButton;
TBClose: TToolButton;
ADOQueryTmp: TADOQuery;
ADOQueryCmd: TADOQuery;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
OpenDialog1: TOpenDialog;
CDS_LM: TClientDataSet;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v2Column2: TcxGridDBColumn;
v2FactoryName: TcxGridDBColumn;
v2OrderNo: TcxGridDBColumn;
Tv1Column3: TcxGridDBColumn;
Tv1Column19: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
ADOCmd: TADOQuery;
2025-10-25 14:49:27 +08:00
CDS_1: TClientDataSet;
Tv1Column1: TcxGridDBColumn;
CDS_4: TClientDataSet;
CDS_2: TClientDataSet;
CDS_3: TClientDataSet;
2025-09-27 14:24:10 +08:00
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TSaveClick(Sender: TObject);
procedure v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure FormDestroy(Sender: TObject);
procedure Tv1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
private
procedure initGrid();
procedure SaveDate();
{ Private declarations }
public
FFFID: string;
fInvoiceFlag: string;
{ Public declarations }
end;
var
frmPlanDR: TfrmPlanDR;
implementation
uses
U_RTFun, U_ZDYHelp, U_CompanySel, U_dataLink;
{$R *.dfm}
procedure TfrmPlanDR.SaveDate();
var
MaxNo, JMmaxno, JSmaxno: string;
begin
ADOQueryCmd.Connection.BeginTrans;
try
/// 保存主表
if GetLSNo(ADOQueryTmp, JMmaxno, 'JM', 'Trade_Plan_Main', 3, 1) = false then
raise Exception.Create('取最大号失败!');
with ADOCmd do
begin
close;
sql.Clear;
sql.Add('select * from Trade_Plan_Main where MainId=''' + trim(JMmaxno) + '''');
open;
end;
with ADOCmd do
begin
if IsEmpty then
begin
Append;
fieldbyname('FillId').Value := trim(DCode);
fieldbyname('Filler').Value := trim(DName);
fieldbyname('status').Value := '0';
end;
// LRTSetsavedata(ADOCmd, 'Trade_Plan_Main', dxLayoutControl_bzplan, 2);
fieldbyname('MainId').Value := trim(JMmaxno);
FieldByName('Orderno').Value := JMmaxno;
Post;
end;
/// 保存子表
if GetLSNo(ADOQueryTmp, JSmaxno, 'JS', 'Trade_Plan_Sub', 4, 1) = false then
raise Exception.Create('取子流水号失败!');
with ADOCmd do
begin
close;
sql.Clear;
sql.Add('select * from Trade_Plan_Sub where MainId=''' + trim(JMmaxno) + '''');
sql.Add(' and SubId=''' + trim(JSmaxno) + '''');
open;
end;
with ADOCmd do
begin
if IsEmpty then
begin
Append;
fieldbyname('OrdQty').Value := '0';
end;
// LRTSetsavedata(ADOCmd, 'Trade_Plan_Main', dxLayoutControl_bzplan, 2);
2025-10-25 14:49:27 +08:00
fieldbyname('C_Code').Value := Trim(CDS_Import.fieldbyname('C_Code').AsString);
fieldbyname('C_Name').Value := Trim(CDS_Import.fieldbyname('C_Name').AsString);
fieldbyname('batchNo').Value := Trim(CDS_Import.fieldbyname('BatchNo').AsString);
2025-09-27 14:24:10 +08:00
fieldbyname('MainId').Value := trim(JMmaxno);
fieldbyname('SubId').Value := trim(JSmaxno);
Post;
end;
with CDS_Import do
begin
first;
while not eof do
begin
2025-10-25 14:49:27 +08:00
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Trade_Cloth_Inspect where BCIOID=''' + Trim(CDS_Import.fieldbyname('BCIOID').AsString) + ''' ');
open;
end;
if not ADOQueryCmd.IsEmpty then
begin
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox(PChar(Trim(CDS_Import.fieldbyname('BCIOID').AsString) + '已经存在'), '提示', 0);
exit;
end;
2025-09-27 14:24:10 +08:00
if fieldbyname('CIID').AsString = '' then
begin
if GetLSNo(ADOQueryTmp, MaxNo, '', 'Trade_Cloth_Inspect', 4, 1) = False then
raise Exception.create('获取条码失败!');
end
else
MaxNo := CDS_Import.fieldbyname('CIID').AsString;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('select * from Trade_Cloth_Inspect where CIID=' + quotedstr(Trim(MaxNo)));
open;
end;
if ADOQueryCmd.IsEmpty then
begin
ADOQueryCmd.append;
ADOQueryCmd.FieldByName('FillId').Value := Trim(DCode);
ADOQueryCmd.FieldByName('Filler').Value := Trim(DName);
ADOQueryCmd.FieldByName('status').Value := '0';
end
else
begin
ADOQueryCmd.edit;
ADOQueryCmd.FieldByName('EditId').Value := Trim(DCode);
ADOQueryCmd.FieldByName('Editer').Value := Trim(DName);
ADOQueryCmd.FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTmp);
end;
RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Import, 'Trade_Cloth_Inspect', 0);
ADOQueryCmd.fieldbyname('CIID').Value := MaxNo;
2025-10-25 14:49:27 +08:00
ADOQueryCmd.fieldbyname('PCID').Value := MaxNo;
2025-09-27 14:24:10 +08:00
ADOQueryCmd.FieldByName('Orderno').Value := JMmaxno;
ADOQueryCmd.FieldByName('mainid').Value := JMmaxno;
ADOQueryCmd.FieldByName('subid').Value := JSmaxno;
2025-10-25 14:49:27 +08:00
ADOQueryCmd.fieldbyName('CIIOFlag').value := '未检验';
2025-09-27 14:24:10 +08:00
ADOQueryCmd.fieldbyName('Coefficient').value := '0';
ADOQueryCmd.fieldbyName('Yardage').value := '0';
ADOQueryCmd.fieldbyName('Meter').value := '0';
ADOQueryCmd.fieldbyName('NetWeight').value := '0';
ADOQueryCmd.fieldbyName('Tare').value := '0';
ADOQueryCmd.fieldbyName('GrossWeight').value := '0';
ADOQueryCmd.fieldbyName('filltime').value := SGetServerDateTime(ADOQueryTmp);
ADOQueryCmd.Post;
next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
// with ADOQueryCmd do
// begin
// Close;
// sql.Clear;
// sql.Add('exec P_BS_Com_UP_AllTable @UPType=''应收款登记'' ');
// ExecSQL;
// end;
application.MessageBox('保存成功!', '提示');
Modalresult := 1;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
end;
end;
procedure TfrmPlanDR.initGrid();
begin
with ADOQueryTmp do
begin
close;
sql.Clear;
2025-10-25 14:49:27 +08:00
sql.Add('select *,'''' as mjxh1 from Trade_Cloth_Inspect where CIID=''' + trim(FFFID) + '''');
2025-09-27 14:24:10 +08:00
// sql.add(' and isnull(status,''0'')=''0''');
open;
end;
SCreateCDS(ADOQueryTmp, CDS_Import);
SInitCDSData(ADOQueryTmp, CDS_Import);
end;
procedure TfrmPlanDR.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmPlanDR.FormShow(Sender: TObject);
begin
ReadCxGrid(Self.Caption, Tv1, '财务管理');
with CDS_LM do
begin
FieldDefs.Clear;
FieldDefs.Add('LXH', ftInteger, 0);
FieldDefs.Add('lCode', ftString, 40);
FieldDefs.Add('LName', ftString, 40);
close;
CreateDataSet;
end;
2025-10-25 14:49:27 +08:00
with CDS_1 do
begin
FieldDefs.Clear;
FieldDefs.Add('LXH', ftInteger, 0);
FieldDefs.Add('lCode', ftString, 40);
FieldDefs.Add('LName', ftString, 40);
close;
CreateDataSet;
end;
with CDS_2 do
begin
FieldDefs.Clear;
FieldDefs.Add('LXH', ftInteger, 0);
FieldDefs.Add('lCode', ftString, 40);
FieldDefs.Add('LName', ftString, 40);
close;
CreateDataSet;
end;
with CDS_3 do
begin
FieldDefs.Clear;
FieldDefs.Add('LXH', ftInteger, 0);
FieldDefs.Add('lCode', ftString, 40);
FieldDefs.Add('LName', ftString, 40);
close;
CreateDataSet;
end;
with CDS_4 do
begin
FieldDefs.Clear;
FieldDefs.Add('LXH', ftInteger, 0);
FieldDefs.Add('lCode', ftString, 40);
FieldDefs.Add('LName', ftString, 40);
close;
CreateDataSet;
end;
2025-09-27 14:24:10 +08:00
initGrid();
end;
procedure TfrmPlanDR.TSaveClick(Sender: TObject);
begin
2025-10-25 14:49:27 +08:00
if CDS_Import.Locate('BCIOID', null, []) then
begin
application.MessageBox('卷号不能为空', '提示');
exit;
end;
2025-09-27 14:24:10 +08:00
// if CDS_Import.Locate('ROLLLNO', null, []) then
// begin
// application.MessageBox('ROLLLNO不能为空', '提示');
// exit;
// end;
// if CDS_Import.Locate('ART', null, []) then
// begin
// application.MessageBox('ART不能为空', '提示');
// exit;
// end;
SaveDate();
end;
procedure TfrmPlanDR.v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'MPRTCodeName';
flagname := '产品名称';
if ShowModal = 1 then
begin
Self.CDS_Import.Edit;
Self.CDS_Import.FieldByName('P_CodeName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
Self.CDS_Import.FieldByName('P_Code').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
//self.tv1.Controller.EditingController.ShowEdit();
end;
procedure TfrmPlanDR.v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'P_Spec';
flagname := '成品规格';
if ShowModal = 1 then
begin
Self.CDS_Import.Edit;
Self.CDS_Import.FieldByName('P_Spec').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmPlanDR.v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'QtyUnit';
flagname := '数量单位';
if ShowModal = 1 then
begin
Self.CDS_Import.Edit;
Self.CDS_Import.FieldByName('QtyUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmPlanDR.FormDestroy(Sender: TObject);
begin
frmPlanDR := nil;
end;
procedure TfrmPlanDR.Tv1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'InvoiceType';
flagname := '发票类型';
if ShowModal = 1 then
begin
Self.CDS_Import.Edit;
Self.CDS_Import.FieldByName('IVType').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmPlanDR.ToolButton2Click(Sender: TObject);
begin
if CDS_Import.IsEmpty then
exit;
CDS_Import.delete;
end;
procedure TfrmPlanDR.ToolButton3Click(Sender: TObject);
begin
WriteCxGrid(Self.Caption, Tv1, '财务管理');
end;
procedure TfrmPlanDR.ToolButton4Click(Sender: TObject);
var
excelApp, WorkBook: Variant;
i, j, k, LX, ExcelRowCount: integer;
maxId, FCPID, FCPName, t1, t2, t3, FFID: string;
2025-10-25 14:49:27 +08:00
Parts, KeyValuePairs: TStringList;
ColonPos: Integer;
Key, Value, AData: string;
2025-09-27 14:24:10 +08:00
begin
try
excelApp := CreateOleObject('Excel.Application');
openDialog1.Filter := '*.CSV;*.xls';
if opendialog1.Execute then
begin
WorkBook := excelApp.WorkBooks.Open(OpenDialog1.FileName);
end
else
exit;
excelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
except
application.MessageBox('加载EXCEL错误', '错误信息', MB_ICONERROR);
exit;
end;
CDS_LM.EmptyDataSet;
2025-10-25 14:49:27 +08:00
CDS_1.EmptyDataSet;
CDS_2.EmptyDataSet;
CDS_3.EmptyDataSet;
CDS_4.EmptyDataSet;
Parts := TStringList.Create;
KeyValuePairs := TStringList.Create;
AData := WorkBook.WorkSheets[1].Cells[3, 2].Value;
// 按竖线分割
ExtractStrings(['|'], [' '], PChar(AData), Parts);
// 处理每个部分
for i := 0 to Parts.Count - 1 do
begin
// 找到冒号位置
ColonPos := Pos(':', Trim(Parts[i]));
if ColonPos > 0 then
begin
Key := Trim(Copy(Parts[i], 1, ColonPos - 1));
Value := Trim(Copy(Parts[i], ColonPos + 1, Length(Parts[i])));
KeyValuePairs.Values[Key] := Value;
end;
end;
2025-09-27 14:24:10 +08:00
for j := 0 to Tv1.ColumnCount - 1 do
begin
with CDS_LM do
begin
Append;
FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
Post;
end;
2025-10-25 14:49:27 +08:00
with CDS_1 do
begin
Append;
FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
Post;
end;
with CDS_2 do
begin
Append;
FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
Post;
end;
with CDS_3 do
begin
Append;
FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
Post;
end;
with CDS_4 do
begin
Append;
FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
Post;
end;
2025-09-27 14:24:10 +08:00
end;
try
2025-10-25 14:49:27 +08:00
for i := 2 to 3 do
2025-09-27 14:24:10 +08:00
begin
2025-10-25 14:49:27 +08:00
if trim(WorkBook.WorkSheets[1].Cells[6, i].Value) = '' then
2025-09-27 14:24:10 +08:00
continue;
2025-10-25 14:49:27 +08:00
t2 := trim(WorkBook.WorkSheets[1].Cells[1, i].Value);
if CDS_LM.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[6, i].Value), []) then
2025-09-27 14:24:10 +08:00
begin
with CDS_LM do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
2025-10-25 14:49:27 +08:00
for i := 4 to 5 do
begin
if trim(WorkBook.WorkSheets[1].Cells[6, i].Value) = '' then
continue;
t2 := trim(WorkBook.WorkSheets[1].Cells[6, i].Value);
if CDS_1.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[6, i].Value), []) then
begin
t2 := trim(WorkBook.WorkSheets[1].Cells[6, i].Value);
with CDS_1 do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
for i := 6 to 7 do
begin
if trim(WorkBook.WorkSheets[1].Cells[6, i].Value) = '' then
continue;
if CDS_2.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[6, i].Value), []) then
begin
with CDS_2 do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
for i := 8 to 9 do
begin
if trim(WorkBook.WorkSheets[1].Cells[6, i].Value) = '' then
continue;
if CDS_3.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[6, i].Value), []) then
begin
with CDS_3 do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
for i := 11 to 12 do
begin
if trim(WorkBook.WorkSheets[1].Cells[6, i].Value) = '' then
continue;
t2 := trim(WorkBook.WorkSheets[1].Cells[1, i].Value);
if CDS_4.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[6, i].Value), []) then
begin
with CDS_4 do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
2025-09-27 14:24:10 +08:00
except
application.MessageBox('加载数组错误!', '错误信息', MB_ICONERROR);
exit;
end;
try
2025-10-25 14:49:27 +08:00
for i := 7 to ExcelRowCount do
2025-09-27 14:24:10 +08:00
begin
with CDS_Import do
begin
Append;
CDS_LM.First;
while not CDS_LM.Eof do
begin
if CDS_LM.FieldByName('LXH').AsInteger > 0 then
2025-10-25 14:49:27 +08:00
begin
2025-09-27 14:24:10 +08:00
CDS_Import.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value;
2025-10-25 14:49:27 +08:00
CDS_Import.FieldByName('C_Name').AsString := KeyValuePairs.Values['ART'];
CDS_Import.FieldByName('BatchNo').AsString := KeyValuePairs.Values['LOT'];
CDS_Import.FieldByName('C_Code').AsString := KeyValuePairs.Values['GUID'];
CDS_Import.FieldByName('Filltime').AsDateTime := StrToDateTimeDef(KeyValuePairs.Values['DATETIME'], Now);
end;
2025-09-27 14:24:10 +08:00
CDS_LM.Next;
end;
Post;
end;
end;
2025-10-25 14:49:27 +08:00
for i := 7 to ExcelRowCount do
begin
with CDS_Import do
begin
Append;
CDS_1.First;
while not CDS_1.Eof do
begin
if CDS_1.FieldByName('LXH').AsInteger > 0 then
begin
CDS_Import.fieldbyname(CDS_1.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_1.FieldByName('LXH').AsInteger].Value;
CDS_Import.FieldByName('C_Name').AsString := KeyValuePairs.Values['ART'];
CDS_Import.FieldByName('BatchNo').AsString := KeyValuePairs.Values['LOT'];
CDS_Import.FieldByName('C_Code').AsString := KeyValuePairs.Values['GUID'];
CDS_Import.FieldByName('Filltime').AsDateTime := StrToDateTimeDef(KeyValuePairs.Values['DATETIME'], Now);
end;
CDS_1.Next;
end;
Post;
end;
end;
for i := 7 to ExcelRowCount do
begin
with CDS_Import do
begin
Append;
CDS_2.First;
while not CDS_2.Eof do
begin
if CDS_2.FieldByName('LXH').AsInteger > 0 then
begin
CDS_Import.fieldbyname(CDS_2.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_2.FieldByName('LXH').AsInteger].Value;
CDS_Import.FieldByName('C_Name').AsString := KeyValuePairs.Values['ART'];
CDS_Import.FieldByName('BatchNo').AsString := KeyValuePairs.Values['LOT'];
CDS_Import.FieldByName('C_Code').AsString := KeyValuePairs.Values['GUID'];
CDS_Import.FieldByName('Filltime').AsDateTime := StrToDateTimeDef(KeyValuePairs.Values['DATETIME'], Now);
end;
CDS_2.Next;
end;
Post;
end;
end;
for i := 7 to ExcelRowCount do
begin
with CDS_Import do
begin
Append;
CDS_3.First;
while not CDS_3.Eof do
begin
if CDS_3.FieldByName('LXH').AsInteger > 0 then
begin
CDS_Import.fieldbyname(CDS_3.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_3.FieldByName('LXH').AsInteger].Value;
CDS_Import.FieldByName('C_Name').AsString := KeyValuePairs.Values['ART'];
CDS_Import.FieldByName('BatchNo').AsString := KeyValuePairs.Values['LOT'];
CDS_Import.FieldByName('C_Code').AsString := KeyValuePairs.Values['GUID'];
CDS_Import.FieldByName('Filltime').AsDateTime := StrToDateTimeDef(KeyValuePairs.Values['DATETIME'], Now);
end;
CDS_3.Next;
end;
Post;
end;
end;
for i := 7 to ExcelRowCount do
begin
with CDS_Import do
begin
Append;
CDS_4.First;
while not CDS_4.Eof do
begin
if CDS_4.FieldByName('LXH').AsInteger > 0 then
begin
CDS_Import.fieldbyname(CDS_4.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_4.FieldByName('LXH').AsInteger].Value;
CDS_Import.FieldByName('C_Name').AsString := KeyValuePairs.Values['ART'];
CDS_Import.FieldByName('BatchNo').AsString := KeyValuePairs.Values['LOT'];
CDS_Import.FieldByName('C_Code').AsString := KeyValuePairs.Values['GUID'];
CDS_Import.FieldByName('Filltime').AsDateTime := StrToDateTimeDef(KeyValuePairs.Values['DATETIME'], Now);
end;
CDS_4.Next;
end;
Post;
end;
end;
with CDS_Import do
begin
First; // 移动到第一条记录
while not Eof do
begin
if Trim(FieldByName('bcioid').AsString) = '' then
begin
Edit;
Delete;
end
else
begin
Next; // 移动到下一条记录
end;
end;
end;
2025-09-27 14:24:10 +08:00
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
except
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
exit;
end;
2025-10-25 14:49:27 +08:00
Parts.Free;
KeyValuePairs.Free;
2025-09-27 14:24:10 +08:00
end;
end.