D10xhGemei/T01贸易生产计划/U_ZDYHelpSelXR.pas
“ddf” 56b1ef408f 1
2024-12-14 17:23:12 +08:00

659 lines
18 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_ZDYHelpSelXR;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, ToolWin, ComCtrls, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGrid, DBClient, ADODB, ImgList, StdCtrls, ExtCtrls,
cxCheckBox, cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters,
cxNavigator, dxDateRanges, System.ImageList,
System.Types, dxBarBuiltInMenu, cxGridCustomPopupMenu, cxGridPopupMenu,
dxScrollbarAnnotations, Vcl.Menus;
type
TfrmZDYHelpSelXR = class(TForm)
TV1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
V1Code: TcxGridDBColumn;
V1Name: TcxGridDBColumn;
ToolBar1: TToolBar;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
TBAdd: TToolButton;
TBSave: TToolButton;
TBDel: TToolButton;
TBClose: TToolButton;
ToolButton1: TToolButton;
TBEdit: TToolButton;
V1Note: TcxGridDBColumn;
V1OrderNo: TcxGridDBColumn;
ADOConnection1: TADOConnection;
Panel1: TPanel;
Label1: TLabel;
ZDYName: TEdit;
ThreeImgList: TImageList;
Label2: TLabel;
ImageList_new32: TImageList;
cxGridPopupMenu1: TcxGridPopupMenu;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
cxGridDBColumn1: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
cxGridDBColumn5: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
ClientDataSet2: TClientDataSet;
DataSource2: TDataSource;
TV1Column1: TcxGridDBColumn;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBAddClick(Sender: TObject);
procedure TBSaveClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure TBEditClick(Sender: TObject);
procedure TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure ZDYNameChange(Sender: TObject);
procedure V1NamePropertiesEditValueChanged(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure V1NotePropertiesEditValueChanged(Sender: TObject);
procedure V1Column1PropertiesChange(Sender: TObject);
procedure TV1Column1PropertiesEditValueChanged(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
private
procedure InitGrid();
{ Private declarations }
public
flag, flagname, FChkStr, snote, MainType, ReturnStr, FGStr: string;
fnote, forderno: Boolean;
PPSTE, JiangeStr: integer;
{ Public declarations }
end;
var
frmZDYHelpSelXR: TfrmZDYHelpSelXR;
implementation
uses
U_DataLink, U_RTFun;
{$R *.dfm}
procedure TfrmZDYHelpSelXR.FormCreate(Sender: TObject);
begin
try
cxGrid1.Align := alClient;
with ADOConnection1 do
begin
Connected := false;
ConnectionString := DConString;
//ConnectionString:='';
Connected := true;
end;
except
{if Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C>Ƿ<EFBFBD>Ҫ<EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>?','<27><>ʾ',32+4)=IDYES then
begin
try
with ADOConnection1 do
begin
Connected:=false;
ConnectionString:=DConString;
//ConnectionString:='23242';
Connected:=true;
end;
except
end;
end; }
frmZDYHelpSelXR.Free;
end;
end;
procedure TfrmZDYHelpSelXR.FormClose(Sender: TObject; var Action: TCloseAction);
begin
writeCxGrid('<27>Զ<EFBFBD><D4B6><EFBFBD>' + Trim(flag), TV1, '<27>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
ZDYName.SetFocus;
Action := caFree;
end;
procedure TfrmZDYHelpSelXR.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Close;
sql.Clear;
sql.Add('select * from KH_ZDY where Type=''' + flag + '''');
if Trim(MainType) <> '' then
begin
sql.Add(' and MainType=''' + Trim(MainType) + '''');
end;
Open;
end;
SCreateCDS(ADOQueryMain, ClientDataSet1);
SInitCDSData(ADOQueryMain, ClientDataSet1);
SCreateCDS(ADOQueryMain, ClientDataSet2);
SInitCDSData(ADOQueryMain, ClientDataSet2);
ClientDataSet2.EmptyDataSet
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmZDYHelpSelXR.N1Click(Sender: TObject);
begin
with ClientDataSet2 do
begin
Append;
FieldByName('SSel').Value := True;
FieldByName('ZDYName').Value := ClientDataSet1.FieldByName('ZDYName').asstring;
Post;
end;
end;
procedure TfrmZDYHelpSelXR.TBAddClick(Sender: TObject);
var
i: Integer;
begin
ZDYName.SetFocus;
TV1.OptionsData.Editing := True;
TV1.OptionsSelection.CellSelect := True;
for i := 0 to TV1.ColumnCount - 1 do
begin
if uppercase(TV1.Columns[i].DataBinding.FieldName) <> 'SSEL' then
TV1.Columns[i].Options.Editing := True;
end;
for i := 0 to 5 do
begin
with ClientDataSet1 do
begin
Append;
Post;
end;
end;
end;
procedure TfrmZDYHelpSelXR.TBSaveClick(Sender: TObject);
var
maxno: string;
begin
if ClientDataSet1.IsEmpty then
Exit;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryTemp do
begin
Close;
SQL.Clear;
SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + '''');
open;
end;
if ADOQueryTemp.IsEmpty then
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type,MainType) select :ZDYNo,:ZDYName,:Type,:MainType ');
Parameters.ParamByName('ZDYNo').Value := Trim(flag);
Parameters.ParamByName('ZDYName').Value := Trim(flagname);
Parameters.ParamByName('Type').Value := 'Main';
Parameters.ParamByName('MainType').Value := Trim(MainType);
ExecSQL;
end;
end;
with ADOQueryCmd do
begin
with ClientDataSet1 do
begin
First;
while not eof do
begin
if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then
begin
if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then
begin
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
end
else
begin
maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + '''');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from KH_ZDY where 1<>1');
Open;
end;
if Trim(ClientDataSet1.FieldByName('ZDYName').AsString) = '' then
begin
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
ADOQueryCmd.Append;
ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno);
ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').AsString;
ADOQueryCmd.FieldByName('note').Value := Trim(snote);
//ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString;
ADOQueryCmd.FieldByName('Type').Value := flag;
ADOQueryCmd.FieldByName('valid').Value := 'Y';
if Trim(MainType) <> '' then
ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType);
//ADOQueryCmd.FieldByName('sel').Value:=0;
ADOQueryCmd.Post;
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno);
ClientDataSet1.Post;
Next;
end;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
except
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
end;
// TV1.OptionsData.Editing:=False;
end;
procedure TfrmZDYHelpSelXR.TBDelClick(Sender: TObject);
begin
if ClientDataSet1.IsEmpty then
Exit;
if (Trim(ClientDataSet1.FieldByName('ZDYNo').AsString) <> '') or (Trim(ClientDataSet1.FieldByName('ZDYname').AsString) <> '') then
begin
if application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>?', '<27><>ʾ<EFBFBD><CABE>Ϣ', 1) = 2 then
exit;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete KH_ZDY where ZDYNo=''' + Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString) + '''');
SQL.Add('and Type=''' + Trim(flag) + '''');
ExecSQL;
end;
end;
ClientDataSet1.Delete;
end;
procedure TfrmZDYHelpSelXR.TBCloseClick(Sender: TObject);
begin
ModalResult := 2;
ZDYName.SetFocus;
Close;
end;
procedure TfrmZDYHelpSelXR.FormShow(Sender: TObject);
var
fsj, fsj1: string;
FStrs: TStringList;
i: Integer;
begin
{if PPSTE=1 then
begin
Application.Terminate;
Exit;
end; }
for i := 0 to TV1.ColumnCount - 1 do
begin
if uppercase(TV1.Columns[i].DataBinding.FieldName) <> 'SSEL' then
TV1.Columns[i].Options.Editing := false;
end;
ReadCxGrid('<27>Զ<EFBFBD><D4B6><EFBFBD>' + Trim(flag), TV1, '<27>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
InitGrid();
fsj := Trim(flag) + '01';
fsj1 := Trim(flagname) + '01';
if Trim(FChkStr) <> '' then
begin
FStrs := TStringList.Create();
ExtractStrings(['|'], [' '], PChar(FChkStr), FStrs);
frmZDYHelpSelXR.Caption := Trim(flagname);
with ClientDataSet1 do
begin
First;
while not eof do
begin
if FStrs.IndexOf(Trim(FieldByName('ZDYName').AsString)) >= 0 then
begin
Edit;
FieldByName('SSel').Value := true;
Post;
end;
Next;
end;
end;
FStrs.Free;
end;
end;
procedure TfrmZDYHelpSelXR.ToolButton1Click(Sender: TObject);
begin
ReturnStr := '';
with ClientDataSet1 do
begin
First;
while not Eof do
begin
if FieldByName('SSel').AsBoolean = True then
begin
if JiangeStr <> 99 then
begin
if FGStr <> '' then
ReturnStr := ReturnStr + Trim(fieldbyname('ZDYName').AsString) + FGStr
else
ReturnStr := ReturnStr + Trim(fieldbyname('ZDYName').AsString) + ';'
end
else
ReturnStr := ReturnStr + Trim(fieldbyname('ZDYName').AsString);
end;
Next;
end;
end;
if JiangeStr <> 99 then
ReturnStr := Copy(ReturnStr, 1, Length(ReturnStr) - 1);
ModalResult := 1;
end;
procedure TfrmZDYHelpSelXR.TBEditClick(Sender: TObject);
var
i: Integer;
begin
for i := 0 to TV1.ColumnCount - 1 do
begin
if uppercase(TV1.Columns[i].DataBinding.FieldName) <> 'SSEL' then
TV1.Columns[i].Options.Editing := True;
end;
end;
procedure TfrmZDYHelpSelXR.TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
// if TV1.OptionsData.Editing = False then
// begin
// ModalResult := 1;
// end;
with ClientDataSet2 do
begin
Append;
FieldByName('SSel').Value := True;
FieldByName('ZDYName').Value := ClientDataSet1.FieldByName('ZDYName').asstring;
Post;
end;
end;
procedure TfrmZDYHelpSelXR.TV1Column1PropertiesEditValueChanged(Sender: TObject);
var
mvalue: string;
begin
if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then
begin
Application.MessageBox('<27><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
begin
mvalue := '';
end;
with ClientDataSet1 do
begin
Edit;
FieldByName('Note1').Value := mvalue;
Post;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('Update KH_Zdy Set Note1=''' + Trim(mvalue) + '''');
sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + '''');
ExecSQL;
end;
end;
procedure TfrmZDYHelpSelXR.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
ClientDataSet2.delete;
end;
procedure TfrmZDYHelpSelXR.ZDYNameChange(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, ClientDataSet1);
SInitCDSData(ADOQueryMain, ClientDataSet1);
end;
end;
procedure TfrmZDYHelpSelXR.V1Column1PropertiesChange(Sender: TObject);
begin
if ClientDataSet1.FieldByName('SSel').AsBoolean = True then
begin
with ClientDataSet2 do
begin
Append;
FieldByName('SSel').Value := True;
FieldByName('ZDYName').Value := ClientDataSet1.FieldByName('ZDYName').asstring;
Post;
end;
end
else
begin
// if CDS_2.Locate('ZDYName', JYXH.Text, []) = True then
end;
end;
procedure TfrmZDYHelpSelXR.V1NamePropertiesEditValueChanged(Sender: TObject);
var
maxno, mvalue: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
begin
//Application.MessageBox('<27><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>','<27><>ʾ',0);
Exit;
end;
with ClientDataSet1 do
begin
Edit;
FieldByName('ZdyName').Value := Trim(mvalue);
//Post;
end;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryTemp do
begin
Close;
SQL.Clear;
SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + '''');
open;
end;
if ADOQueryTemp.IsEmpty then
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type,MainType) select :ZDYNo,:ZDYName,:Type,:MainType ');
Parameters.ParamByName('ZDYNo').Value := Trim(flag);
Parameters.ParamByName('ZDYName').Value := Trim(flagname);
Parameters.ParamByName('Type').Value := 'Main';
Parameters.ParamByName('MainType').Value := Trim(MainType);
ExecSQL;
end;
end;
with ADOQueryCmd do
begin
//ClientDataSet1.DisableControls;
//with ClientDataSet1 do
//begin
//First;
//while not eof do
//begin
if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then
begin
if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then
begin
ADOQueryCmd.Connection.RollbackTrans;
//ClientDataSet1.EnableControls;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
end
else
begin
maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
end;
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.add('select * from KH_Zdy where Type=''' + Trim(flag) + '''');
if Trim(MainType) <> '' then
SQL.Add(' and MainType=''' + Trim(MainType) + '''');
sql.Add(' and ZdyName=''' + Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) + '''');
Open;
end;
if ADOQueryTemp.IsEmpty = False then
begin
if ADOQueryTemp.RecordCount > 1 then
begin
ADOQueryCmd.Connection.RollbackTrans;
//ClientDataSet1.EnableControls;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
if Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) = '' then
begin
ADOQueryCmd.Connection.RollbackTrans;
//ClientDataSet1.EnableControls;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>', '<27><>ʾ', 0);
Exit;
end
else
begin
if Trim(ADOQueryTemp.fieldbyname('ZdyNo').AsString) <> Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) then
begin
ADOQueryCmd.Connection.RollbackTrans;
//ClientDataSet1.EnableControls;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
end;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + '''');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from KH_ZDY where 1<>1');
Open;
end;
ADOQueryCmd.Append;
ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno);
ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').AsString;
ADOQueryCmd.FieldByName('note').Value := Trim(snote);
//ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString;
ADOQueryCmd.FieldByName('Type').Value := flag;
ADOQueryCmd.FieldByName('valid').Value := 'Y';
if Trim(MainType) <> '' then
ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType);
//ADOQueryCmd.FieldByName('sel').Value:=0;
ADOQueryCmd.Post;
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno);
//ClientDataSet1.Post;
// Next;
//end;
//end;
// ClientDataSet1.EnableControls;
end;
ADOQueryCmd.Connection.CommitTrans;
//Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>','<27><>ʾ',0);
//TV1.OptionsData.Editing:=False;
//TV1.OptionsSelection.CellSelect:=False;
except
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
end;
end;
procedure TfrmZDYHelpSelXR.V1NotePropertiesEditValueChanged(Sender: TObject);
var
mvalue: string;
begin
if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then
begin
Application.MessageBox('<27><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
begin
mvalue := '';
end;
with ClientDataSet1 do
begin
Edit;
FieldByName('Note').Value := mvalue;
Post;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('Update KH_Zdy Set Note=''' + Trim(mvalue) + '''');
sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + '''');
ExecSQL;
end;
end;
procedure TfrmZDYHelpSelXR.FormDestroy(Sender: TObject);
begin
frmZDYHelpSelXR := nil;
end;
end.