D7myzhenyong/样布仓库(染色)/U_ElevatorRklist.pas
DESKTOP-E401PHE\Administrator 237de1c308 0
2025-08-26 15:25:51 +08:00

533 lines
14 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_ElevatorRklist;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData,
cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData,
cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxClasses, cxControls,
cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu,
cxGridPopupMenu, cxContainer, cxTextEdit, cxCurrencyEdit, cxCheckBox,
RM_System, RM_Dataset, RM_Common, RM_Class, RM_GridReport, cxPC, Menus,U_SLT,jpeg,ComObj;
type
FdDy=record
inc: integer; //客户端套接字句柄
FDdys:string[32]; //客户端套接字
FdDysName:string[32]; //客户端套接字
end;
TfrmElevatorRklist = class(TForm)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBFind: TToolButton;
TBAdd: TToolButton;
TBEdit: TToolButton;
TBDel: TToolButton;
TBExport: TToolButton;
TBClose: TToolButton;
Panel1: TPanel;
Label1: TLabel;
BegDate: TDateTimePicker;
EndDate: TDateTimePicker;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v1P_CodeName: TcxGridDBColumn;
v1P_SPEC: TcxGridDBColumn;
v1Qty: TcxGridDBColumn;
v1QtyUnit: TcxGridDBColumn;
v1Note: TcxGridDBColumn;
cxGrid1Level1: TcxGridLevel;
v1CRType: TcxGridDBColumn;
v1CRTime: TcxGridDBColumn;
v1Filler: TcxGridDBColumn;
v1FillTime: TcxGridDBColumn;
Label2: TLabel;
Label3: TLabel;
P_CodeName: TEdit;
CRType: TComboBox;
Label5: TLabel;
ADOQueryCmd: TADOQuery;
ADOQueryTmp: TADOQuery;
DataSource1: TDataSource;
CDS_Main: TClientDataSet;
cxGridPopupMenu1: TcxGridPopupMenu;
ckName: TComboBox;
Label6: TLabel;
v1P_Code: TcxGridDBColumn;
v1INoutNo: TcxGridDBColumn;
Label7: TLabel;
inoutNo: TEdit;
v1Price: TcxGridDBColumn;
v1money: TcxGridDBColumn;
kuwei: TEdit;
Label9: TLabel;
gangNo: TEdit;
Label10: TLabel;
v1Column3: TcxGridDBColumn;
RMDB_Main: TRMDBDataSet;
v1Column4: TcxGridDBColumn;
ADOQueryPrint: TADOQuery;
RM1: TRMGridReport;
OrderNo: TEdit;
Label14: TLabel;
P_Code: TEdit;
Label15: TLabel;
v1Column10: TcxGridDBColumn;
Label17: TLabel;
FactoryName: TEdit;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
ToolButton1: TToolButton;
GroupBox1: TGroupBox;
ScrollBox1: TScrollBox;
adoqueryPicture: TADOQuery;
v1Column8: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
ToolButton2: TToolButton;
OpenDialog1: TOpenDialog;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure TBAddClick(Sender: TObject);
procedure P_CodeNameChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure TBEditClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure TBExportClick(Sender: TObject);
procedure TBFindClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure Tv1CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure ToolButton2Click(Sender: TObject);
private
procedure InitGrid();
procedure SetStatus();
procedure InitImage();
{ Private declarations }
public
dFdDy: array[0..20] of FdDy; //客户端连接数组
fCKName,canshu1:string;
fCRType:string;
{ Public declarations }
end;
//var
// frmPieceSampleRklist: TfrmPieceSampleRklist;
var
Mach: array of TfrmSlt;
implementation
uses
U_DataLink,U_Fun10,U_ZDYHelp,U_FileUp, U_ElevatorRk;
{$R *.dfm}
procedure TfrmElevatorRklist.InitImage();
var
i,j:integer;
jpg:TJpegImage;
myStream: TADOBlobStream;
begin
j:=length(Mach);
if j>0 then
begin
for i:=0 to j-1 do
begin
Mach[i].free;
end;
end;
SetLength(Mach, 0);
IF CDS_Main.IsEmpty then exit;
try
with adoqueryPicture do
begin
close;
sql.Clear;
sql.Add(' select A.TFID,A.WBID,A.FilesOther,B.FileName from TP_File A,XD_File B where A.TFID =B.XFID ');
if CDS_Main.IsEmpty=False then
begin
sql.Add('and A.WBID='+quotedstr(trim(CDS_Main.fieldbyname('MJID').AsString)));
end else
begin
sql.add(' and 1=2');
end;
open;
end;
j:=adoqueryPicture.RecordCount;
if j<1 then exit;
adoqueryPicture.DisableControls;
adoqueryPicture.First;
SetLength(Mach, j);
jpg:=TJpegImage.Create();
for i:=0 to j-1 do
begin
if triM(adoqueryPicture.fieldbyname('FilesOther').AsString)<>'' then
begin
myStream:=tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')),bmread);
jpg.LoadFromStream(myStream);
Mach[i] := TfrmSlt.Create(Self);
Mach[i].Name:=trim(adoqueryPicture.fieldbyname('TFID').AsString);
Mach[i].Parent := ScrollBox1;
Mach[I].Left:=0+i*165;
Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString,adoqueryPicture.fieldbyname('FileName').AsString,jpg);
end;
adoqueryPicture.Next;
end;
adoqueryPicture.EnableControls;
finally
jpg.free;
application.ProcessMessages;
end;
end;
procedure TfrmElevatorRklist.SetStatus();
begin
TBEdit.Visible:=False;
TBDel.Visible:=False;
if Trim(canshu1)='高权限' then
begin
TBEdit.Visible:=true;
TBDel.Visible:=true;
end
else
begin
end;
end;
procedure TfrmElevatorRklist.InitGrid();
begin
try
with adoqueryTmp do
begin
close;
sql.Clear;
sql.Add('select A.* from CK_Sample_CR A');
sql.Add(' where A.CRTime>='''+formatdateTime('yyyy-MM-dd',begdate.Date)+''' ');
sql.Add(' and A.CRTime<'''+formatdateTime('yyyy-MM-dd',enddate.Date+1)+''' ');
sql.Add(' and A.CRFlag=''入库'' and A.Valid=''Y'' and CKName='+quotedstr(trim(fCKName)));
open;
end;
SCreateCDS20(adoqueryTmp,CDS_Main);
SInitCDSData20(adoqueryTmp,CDS_Main);
TBFind.Click;
finally
end;
end;
procedure TfrmElevatorRklist.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
procedure TfrmElevatorRklist.FormDestroy(Sender: TObject);
begin
// frmPieceSampleRklist:=nil;
end;
procedure TfrmElevatorRklist.TBAddClick(Sender: TObject);
begin
frmElevatorRk:=TfrmElevatorRk.create(self);
with frmElevatorRk do
begin
fkeyNo:='';
fType:=0;
fCKName:=trim(self.fCKName);
if showmodal=1 then
begin
TBRafresh.Click;
self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ;
end;
free;
end;
end;
procedure TfrmElevatorRklist.P_CodeNameChange(Sender: TObject);
begin
if ADOQueryTmp.Active=False then Exit;
SDofilter(ADOQueryTmp,SGetFilters(Panel1,1,2));
SCreateCDS20(ADOQueryTmp,CDS_Main);
SInitCDSData20(ADOQueryTmp,CDS_Main);
end;
procedure TfrmElevatorRklist.FormShow(Sender: TObject);
begin
readCxGrid(trim(self.Caption),Tv1,'样品仓库');
SetStatus();
InitGrid();
end;
procedure TfrmElevatorRklist.FormCreate(Sender: TObject);
begin
EndDate.Date:=SGetServerDate10(ADOQueryTmp);
BegDate.Date:=EndDate.Date-7;
canshu1:=trim(DParameters1);
end;
procedure TfrmElevatorRklist.TBCloseClick(Sender: TObject);
begin
writeCxGrid(trim(self.Caption),Tv1,'样品仓库');
close;
end;
procedure TfrmElevatorRklist.TBEditClick(Sender: TObject);
begin
if cds_main.IsEmpty then exit;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select A.* from CK_Sample_CR A');
SQL.Add('where A.MJID='''+trim(cds_main.fieldbyname('MJID').AsString)+''' ');
SQL.Add('and A.CRFlag=''出库'' and A.valid=''Y'' ');
Open;
end;
if not ADOQueryCmd.IsEmpty then
begin
Application.MessageBox('此单已经产生出库,不能修改!','提示',0);
Exit;
end;
frmElevatorRk:=TfrmElevatorRk.create(self);
with frmElevatorRk do
begin
fkeyNo:=self.cds_main.fieldbyname('CRNO').AsString;
fType:=1;
fCKName:=trim(self.fCKName);
if showmodal=1 then
begin
TBRafresh.Click;
self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ;
end;
free;
end;
end;
procedure TfrmElevatorRklist.TBDelClick(Sender: TObject);
begin
if CDS_Main.IsEmpty then Exit;
if CDS_Main.IsEmpty then Exit;
if Trim(CDS_Main.fieldbyname('Filler').AsString)<>Trim(DName) then
begin
Application.MessageBox('不能操作他人数据!','提示',0);
Exit;
end;
if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit;
try
if Trim(CDS_Main.FieldByName('CRNO').AsString)<>'' then
begin
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('update CK_ML_CR set Valid=''N'' where CRNO='+quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString)));
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('exec P_Up_MlKc '+quotedstr(Trim(CDS_Main.FieldByName('MJID').AsString)));
Open;
end;
if Trim(ADOQueryCmd.FieldByName('Msg').AsString)='操作失败' then
begin
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('出库数量超出入库数量!','提示',0);
Exit;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_Main.Delete;
end;
except
Application.MessageBox('数据删除失败!','提示信息',0);
end;
end;
procedure TfrmElevatorRklist.TBRafreshClick(Sender: TObject);
begin
initGrid();
end;
procedure TfrmElevatorRklist.TBExportClick(Sender: TObject);
begin
if CDS_Main.IsEmpty then Exit;
TcxGridToExcel(self.Caption,cxgrid1);
end;
procedure TfrmElevatorRklist.TBFindClick(Sender: TObject);
begin
if ADOQueryTmp.Active=False then Exit;
SDofilter(ADOQueryTmp,SGetFilters(Panel1,1,2));
SCreateCDS20(ADOQueryTmp,CDS_Main);
SInitCDSData20(ADOQueryTmp,CDS_Main);
end;
procedure TfrmElevatorRklist.N1Click(Sender: TObject);
begin
SelOKNo(CDS_Main,True);
end;
procedure TfrmElevatorRklist.N2Click(Sender: TObject);
begin
SelOKNo(CDS_Main,False);
end;
procedure TfrmElevatorRklist.ToolButton1Click(Sender: TObject);
begin
try
frmFileUp:=TfrmFileUp.Create(Application);
with frmFileUp do
begin
Code.Text:=Trim(Self.CDS_Main.fieldbyname('MJID').AsString);
CYID:=Trim(Self.CDS_Main.fieldbyname('MJID').AsString);
if ShowModal=1 then
begin
//Self.InitGrid();
//Self.CDS_Main.Locate('SPID',CYID,[]);
end;
end;
finally
frmFileUp.Free;
end;
end;
procedure TfrmElevatorRklist.Tv1CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
InitImage();
end;
procedure TfrmElevatorRklist.ToolButton2Click(Sender: TObject);
var
excelApp,WorkBook:Variant;
i,j,k,ExcelRowCount:integer;
maxId:string;
begin
if GetLSNo(ADOQueryCmd,maxId,'SP','CK_Sample_CR',4,1)=False then
begin
Application.MessageBox('取最大号失败!','提示',0);
Exit;
end;
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;
try
k:=0;
for i:=1 to 20 do
begin
if trim(excelapp.Cells[1,i].value)='' then break;
//遍历界面绑定界面中显示的字段和名称
for j:=0 to Tv1.ColumnCount-1 do
begin
if trim(excelapp.Cells[1,i].value)=trim(Tv1.Columns[j].Caption) then
begin
dFdDy[k].inc:=i;
dFdDy[k].FDdys:=trim(Tv1.Columns[j].DataBinding.FieldName);
dFdDy[k].FdDysName:=trim(Tv1.Columns[j].Caption);
end;
end;
k:=k+1;
end;
except
application.MessageBox('加载数组错误!','错误信息',MB_ICONERROR);
exit;
end;
ADOQueryCmd.Connection.BeginTrans;
try
for i := 2 to excelrowcount do
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('select * from CK_Sample_CR where 1=2');
open;
end;
ADOQueryCmd.Append;
//添加第i条数据
for j:=1 to k-1 do
begin
//dFdDy[j].FDdys; 字段名称
//inttostr(dFdDy[j].inc); //当前列
//excelapp.Cells[i,dFdDy[j].inc].Value; //当前单元格内容
ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value:=excelapp.Cells[i,dFdDy[j].inc].Value;
end;
ADOQueryCmd.FieldByName('Filler').Value:=Trim(DName);
ADOQueryCmd.FieldByName('CRNO').Value:=Trim(maxId)+inttostr(i);
ADOQueryCmd.FieldByName('INoutNo').Value:=Trim(maxId)+inttostr(i);
ADOQueryCmd.FieldByName('MJID').Value:=Trim(maxId)+inttostr(i);
ADOQueryCmd.FieldByName('CKName').Value:=trim(fCKName);
ADOQueryCmd.FieldByName('CRTime').Value:=formatdateTime('yyyy-MM-dd',now);
ADOQueryCmd.FieldByName('CRType').Value:='期初入库';
ADOQueryCmd.FieldByName('CRFlag').Value:='入库';
ADOQueryCmd.FieldByName('CRQtyFlag').Value:=1;
ADOQueryCmd.Post;
end;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
ADOQueryCmd.Connection.CommitTrans;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('exec P_Up_SampleKcAll');
execsql;
end;
InitGrid();
except
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox('保存数据错误!','错误信息',MB_ICONERROR);
exit;
end;
end;
end.