D10xhGemei/A02基础产品管理/U_Edit.pas

377 lines
9.6 KiB
ObjectPascal
Raw Permalink Normal View History

2025-05-26 14:27:08 +08:00
unit U_Edit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB, cxGraphics, cxControls, cxLookAndFeels,
cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxStyles,
cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
dxDateRanges, dxScrollbarAnnotations, cxDBData, cxTextEdit, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxGridCustomView, cxGrid, Vcl.ToolWin, Vcl.ComCtrls, Datasnap.DBClient,
2025-06-05 16:03:45 +08:00
Vcl.Menus, ComObj, cxContainer;
2025-05-26 14:27:08 +08:00
type
TfrmEdit = class(TForm)
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel6: TPanel;
cxGrid4: TcxGrid;
TV4: TcxGridDBTableView;
cxGridDBColumn5: TcxGridDBColumn;
cxGridDBColumn6: TcxGridDBColumn;
cxGridDBColumn7: TcxGridDBColumn;
cxGridDBColumn8: TcxGridDBColumn;
cxGridDBColumn9: TcxGridDBColumn;
cxGridDBColumn10: TcxGridDBColumn;
cxGridLevel4: TcxGridLevel;
DS_4: TDataSource;
CDS_4: TClientDataSet;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
TBClose: TToolButton;
ADO_4: TADOQuery;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
CDS_LM: TClientDataSet;
OpenDialog1: TOpenDialog;
2025-06-05 16:03:45 +08:00
ToolButton5: TToolButton;
2025-05-26 14:27:08 +08:00
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
function SaveData(): Boolean;
procedure ToolButton1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
2025-06-05 16:03:45 +08:00
procedure ToolButton5Click(Sender: TObject);
2025-05-26 14:27:08 +08:00
private
{ Private declarations }
public
FBCIID, FBCISID: string;
FPrice: double;
{ Public declarations }
end;
var
frmEdit: TfrmEdit;
implementation
uses
U_DataLink, U_RTFun;
{$R *.dfm}
procedure TfrmEdit.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TfrmEdit.FormShow(Sender: TObject);
var
SqlStr: string;
begin
2025-06-05 16:03:45 +08:00
readCxGrid(self.Caption + 'TV4', Tv4, '<27><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>');
2025-05-26 14:27:08 +08:00
SqlStr := 'select A.* from BS_Cloth_Info_Sub A ';
if FBCISID = '' then
begin
SqlStr := SqlStr + ' where 1<>1';
end
else
begin
SqlStr := SqlStr + ' where A.BCIID=''' + Trim(FBCIID) + '''';
end;
SqlStr := SqlStr + ' ORDER BY CASE WHEN C_COLORNO NOT LIKE ''%[^0-9]%'' THEN dbo.getNum(C_Colorno) ELSE 9999999999 ';
SqlStr := SqlStr + ' END ,C_ColorNo';
InitCDSData(ADO_4, CDS_4, Tv4, SqlStr, '', '');
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;
end;
procedure TfrmEdit.N1Click(Sender: TObject);
begin
with CDS_4 do
begin
append;
fieldbyname('BCIID').Value := FBCIID;
// fieldbyname('BCISID').Value := maxno;
fieldbyname('floatPrice').Value := 0;
fieldbyname('referencePrice').value := FPrice;
Post;
end;
end;
procedure TfrmEdit.N2Click(Sender: TObject);
begin
if CDS_4.IsEmpty then
Exit;
if Trim(CDS_4.fieldbyname('BCISID').AsString) <> '' then
begin
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete BS_Cloth_Info_Sub where BCISID=''' + Trim(CDS_4.fieldbyname('BCISID').AsString) + '''');
ExecSQL;
end;
end;
CDS_4.Delete;
end;
procedure TfrmEdit.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmEdit.ToolButton1Click(Sender: TObject);
begin
ToolBar1.SetFocus;
if SaveData() then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
if not CDS_4.IsEmpty then
ModalResult := 1;
end;
end;
procedure TfrmEdit.ToolButton2Click(Sender: TObject);
begin
with CDS_4 do
begin
append;
fieldbyname('BCIID').Value := FBCIID;
// fieldbyname('BCISID').Value := maxno;
fieldbyname('floatPrice').Value := 0;
fieldbyname('referencePrice').value := FPrice;
Post;
end;
end;
procedure TfrmEdit.ToolButton3Click(Sender: TObject);
begin
if CDS_4.IsEmpty then
Exit;
if Trim(CDS_4.fieldbyname('BCISID').AsString) <> '' then
begin
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete BS_Cloth_Info_Sub where BCISID=''' + Trim(CDS_4.fieldbyname('BCISID').AsString) + '''');
ExecSQL;
end;
end;
CDS_4.Delete;
end;
procedure TfrmEdit.ToolButton4Click(Sender: TObject);
var
excelApp, WorkBook: Variant;
i, j, k, LX, ExcelRowCount: integer;
maxId, FCPID, FCPName, t1, t2, t3, FFID: string;
begin
2025-11-21 09:31:25 +08:00
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('insert into BS_Cloth_Info_Sub_Del select * from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
sql.Add('delete from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
ExecSQL;
end;
2025-05-26 14:27:08 +08:00
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('<27><><EFBFBD><EFBFBD>EXCEL<45><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', MB_ICONERROR);
exit;
end;
CDS_LM.EmptyDataSet;
for j := 0 to Tv4.ColumnCount - 1 do
begin
with CDS_LM do
begin
Append;
FieldByName('LCode').Value := trim(Tv4.Columns[j].DataBinding.FieldName);
FieldByName('LName').Value := trim(Tv4.Columns[j].Caption);
Post;
end;
end;
try
for i := 1 to 50 do
begin
if trim(WorkBook.WorkSheets[1].Cells[1, i].value) = '' then
continue;
if CDS_LM.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[1, i].value), []) then
begin
with CDS_LM do
begin
Edit;
FieldByName('LXH').Value := i;
Post;
end;
end;
end;
except
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', MB_ICONERROR);
exit;
end;
try
for i := 2 to ExcelRowCount do
begin
with CDS_4 do
begin
Append;
CDS_LM.First;
while not CDS_LM.Eof do
begin
if CDS_LM.FieldByName('LXH').AsInteger > 0 then
CDS_4.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value;
CDS_LM.Next;
end;
Post;
end;
end;
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
except
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
exit;
end;
end;
2025-06-05 16:03:45 +08:00
procedure TfrmEdit.ToolButton5Click(Sender: TObject);
begin
WriteCxGrid(self.Caption + 'TV4', Tv4, '<27><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>');
end;
2025-05-26 14:27:08 +08:00
function TfrmEdit.SaveData(): Boolean;
var
maxId4: string;
begin
try
ADOQueryCmd.Connection.BeginTrans;
//////////////////////// <20><><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD> //////////////////////////
with CDS_4 do
begin
First;
while not Eof do
begin
if Trim(CDS_4.fieldbyname('BCISID').AsString) = '' then
begin
if GetLSNo(ADOQueryTemp, maxId4, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
2025-06-05 16:03:45 +08:00
raise Exception.Create(<><C8A1><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>ʧ<EFBFBD><CAA7>!');
2025-05-26 14:27:08 +08:00
end
else
begin
maxId4 := Trim(CDS_4.fieldbyname('BCISID').AsString);
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add(' select * from BS_Cloth_Info_Sub where ');
sql.Add(' BCISID=''' + Trim(maxId4) + '''');
Open;
end;
with ADOQueryCmd do
begin
if Trim(CDS_4.fieldbyname('BCISID').AsString) = '' then
begin
Append;
FieldByName('FillID').Value := Trim(DCode);
FieldByName('Filler').Value := Trim(DName);
FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
end
else
begin
Edit;
FieldByName('EditID').Value := Trim(DCode);
FieldByName('Editer').Value := Trim(DName);
FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp);
end;
FieldByName('BCIID').Value := Trim(FBCIID);
FieldByName('BCISID').Value := Trim(maxId4);
RTSetSaveDataCDS(ADOQueryCmd, Tv4, CDS_4, 'BS_Cloth_Info_Sub', 0);
Post;
end;
Next;
end;
end;
2025-06-05 16:03:45 +08:00
2025-05-26 14:27:08 +08:00
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select count(BCISID) as AA from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
sql.Add(' group by C_Color,C_ColorNo having count(BCISID)>1');
Open;
end;
if StrToFloatDef(ADOQueryTemp.fieldbyname('AA').asstring, 1) > 1 then
2025-06-05 16:03:45 +08:00
raise Exception.Create('<27><>ɫɫ<C9AB><C9AB><EFBFBD>ظ<EFBFBD>!');
with ADOQueryCmd do
2025-05-26 14:27:08 +08:00
begin
2025-06-05 16:03:45 +08:00
Close;
SQL.Clear;
sql.Add(' exec P_BS_CloInfo_ZhuBuTongBu @BCIID=' + QuotedStr(trim(FBCIID)));
ExecSQL;
2025-05-26 14:27:08 +08:00
end;
2025-06-05 16:03:45 +08:00
//////////////////////// <20><><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD> //////////////////////////
2025-05-26 14:27:08 +08:00
ADOQueryCmd.Connection.CommitTrans;
Result := True;
except
Result := False;
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
end.