2025-09-08 10:53:41 +08:00
unit U_TradeMarketQtyInPut;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
System. Types, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, cxCalendar, cxDropDownEdit, ComCtrls,
ToolWin, cxGridLevel, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient, cxButtonEdit,
cxTextEdit, StdCtrls, ExtCtrls, cxLookAndFeels, cxLookAndFeelPainters,
cxNavigator, dxDateRanges, dxBarBuiltInMenu, U_BaseInput, System. ImageList,
Vcl. ImgList, ComObj, dxScrollbarAnnotations, cxContainer, dxCore, cxDateUtils,
2025-09-24 13:59:21 +08:00
cxMaskEdit, cxImageList, cxCurrencyEdit, Vcl. Menus, Clipbrd, dxSkinsCore,
2026-04-10 17:30:29 +08:00
dxSkinsDefaultPainters, dxSkinWXI;
2025-09-08 10:53:41 +08:00
type
TfrmTradeMarketQtyInPut = class( TfrmBaseInput)
DS_1: TDataSource;
CDS_1: TClientDataSet;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
GPM_1: TcxGridPopupMenu;
CDS_LM: TClientDataSet;
pnl1: TPanel;
tlb1: TToolBar;
btn4: TToolButton;
pnl2: TPanel;
inPiece: TcxCurrencyEdit;
Label9: TLabel;
inQty: TcxCurrencyEdit;
Label13: TLabel;
TBSave: TToolButton;
TBClose: TToolButton;
Label1: TLabel;
GroupBox1: TGroupBox;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGridDBColumn8: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
btnAdd: TToolButton;
2025-09-29 09:23:46 +08:00
Tv1Column1: TcxGridDBColumn;
2026-06-13 16:49:18 +08:00
Tv1Column2: TcxGridDBColumn;
Tv1Column3: TcxGridDBColumn;
2025-09-08 10:53:41 +08:00
procedure FormClose( Sender: TObject; var Action: TCloseAction) ;
procedure FormShow( Sender: TObject) ;
procedure FromCoNameDblClick( Sender: TObject) ;
procedure inQtyKeyPress( Sender: TObject; var Key: Char ) ;
procedure TBCloseClick( Sender: TObject) ;
procedure TBSaveClick( Sender: TObject) ;
procedure btnAddClick( Sender: TObject) ;
procedure Tv1KeyDown( Sender: TObject; var Key: Word ; Shift: TShiftState) ;
procedure Tv1DblClick( Sender: TObject) ;
private
{ Private declarations }
function SaveData( ) : Boolean ;
2026-06-13 16:49:18 +08:00
function SaveData2( ) : Boolean ;
2025-09-08 10:53:41 +08:00
function Split( const s: string ; Separator: char ) : TStringDynArray;
public
{ Public declarations }
PMTMSId, PFTMMID: string ;
2025-10-21 09:32:05 +08:00
canshu4: string ;
2025-09-08 10:53:41 +08:00
FName, FColor, FColorNo: string ;
MTMSId, FTMMID: string ;
end ;
var
frmTradeMarketQtyInPut: TfrmTradeMarketQtyInPut;
implementation
uses
U_DataLink, U_RTFun, U_RPFun;
{$R *.dfm}
// <20> ָ<EFBFBD> <D6B8> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2026-06-13 16:49:18 +08:00
function TfrmTradeMarketQtyInPut. SaveData2( ) : Boolean ;
var
MBCIOID, Maxno: string ;
begin
try
ADOQueryCmd. Connection. BeginTrans;
CDS_1. DisableControls;
with CDS_1 do
begin
First;
while not eof do
begin
with ADOQueryTemp do
begin
Close;
sql. Clear;
sql. Add( 'select * from BS_Cloth_IO where BCIOID=' '' + Trim( CDS_1. fieldbyname( 'BCIOID' ) . AsString) + '' '' ) ;
Open;
end ;
MBCIOID : = Trim( ADOQueryTemp. fieldbyname( 'BCIOID' ) . AsString) ;
if Trim( MBCIOID) = '' then
begin
if not GetLSNo( ADOQueryCmd, Maxno, 'MC' , 'BS_Cloth_IO' , 4 , 1 ) then
raise Exception. Create( 'ȡȾɫ<C8BE> <C9AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ<EFBFBD> ܣ<EFBFBD> ' ) ;
end
else
begin
Maxno : = Trim( MBCIOID) ;
end ;
with ADOQueryCmd do
begin
Close;
sql. Clear;
sql. Add( 'select * from BS_Cloth_IO where BCIOID=' '' + Trim( Maxno) + '' '' ) ;
Open;
end ;
with ADOQueryCmd do
begin
if Trim( MBCIOID) = '' then
begin
Append;
FieldByName( 'Fillid' ) . Value : = Trim( Dcode) ;
FieldByName( 'Filler' ) . Value : = Trim( DName) ;
FieldByName( 'status' ) . value : = '0' ;
end
else
begin
Edit;
FieldByName( 'Editid' ) . Value : = Trim( Dcode) ;
FieldByName( 'Editer' ) . Value : = Trim( DName) ;
FieldByName( 'EditTime' ) . Value : = SGetServerDate( ADOQueryTemp) ;
end ;
RTSetSaveDataCDS( ADOQueryCmd, Tv1, CDS_1, 'BS_Cloth_IO' , 0 ) ;
Post;
end ;
// with ADOQueryCmd do
// begin
// Close;
// sql.Clear;
// sql.Add('Update BS_Cloth_IO Set StkPiece=(select Sum(isnull(Piece,0)*IOQtyFlag) from BS_Cloth_IO A where A.STKID=BS_Cloth_IO.BCIOID)');
//// sql.Add(',STKQty=(select Sum(isnull(Qty,0)*IOQtyFlag) from BS_Cloth_IO A where A.STKID=BS_Cloth_IO.BCIOID )');
// sql.Add(',StkQty=(select Sum([dbo].[F_UnitConversion](A.QTYUNIT,A.NETWeight ,A.Meter ,A.Yardage ) *IOQtyFlag) from BS_Cloth_IO A where A.STKID=BS_Cloth_IO.BCIOID )');
//
// sql.Add('where BCIOID=''' + Trim(CDS_1.fieldbyname('STKID').AsString) + '''');
// ExecSQL;
// end;
// with ADOQueryTemp do
// begin
// Close;
// sql.Clear;
// sql.Add('select * from BS_Cloth_IO where BCIOID=''' + Trim(CDS_1.fieldbyname('STKID').AsString) + '''');
// Open;
// end;
// if ADOQueryTemp.FieldByName('STKQty').Value < 0 then
// raise Exception.Create('<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ܱ<EFBFBD> <DCB1> 棡');
// with ADOQueryCmd do
// begin
// Close;
// Sql.Clear;
// Sql.Add('exec P_BS_Cloth_Move ');
// Sql.Add(' @BCIOID=' + quotedstr(Trim(Maxno)));
// Open;
// end;
// if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
// raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
with ADOQueryCmd do
begin
Close;
sql. Clear;
sql. Add( 'insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) ' ) ;
sql. Add( 'values(' 'ó<> ײ<EFBFBD> <D7B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ' ' ' ) ;
sql. Add( ',' + quotedstr( Maxno) ) ;
sql. Add( ',' '<27> <> <EFBFBD> <EFBFBD> ' ' ' ) ;
sql. Add( ',' + quotedstr( DName) ) ;
sql. Add( ',' + quotedstr( trim( self. Caption) ) ) ;
sql. Add( ',' + quotedstr( Maxno) ) ;
sql. Add( ') ' ) ;
ExecSQL;
end ;
Edit;
FieldByName( 'BCIOID' ) . Value : = Trim( Maxno) ;
Post;
Next;
end ;
end ;
CDS_1. EnableControls;
ADOQueryCmd. Connection. CommitTrans;
Result : = True ;
except
Result : = False ;
ADOQueryCmd. Connection. RollbackTrans;
application. MessageBox( PChar( Exception( ExceptObject) . Message ) , '<27> <> ʾ <EFBFBD> <CABE> Ϣ' , 0 ) ;
end ;
end ;
2025-09-08 10:53:41 +08:00
function TfrmTradeMarketQtyInPut. Split( const s: string ; Separator: char ) : TStringDynArray;
var
i, ItemIndex: Integer ;
len: Integer ;
SeparatorCount: Integer ;
Start: Integer ;
begin
len : = Length( s) ;
if len = 0 then
begin
Result : = nil ;
Exit;
end ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
SeparatorCount : = 0 ;
for i : = 1 to len do
if s[ i] = Separator then
Inc( SeparatorCount) ;
SetLength( Result , SeparatorCount + 1 ) ;
ItemIndex : = 0 ;
Start : = 1 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD>
for i : = 1 to len do
begin
if s[ i] = Separator then
begin
Result [ ItemIndex] : = Copy( s, Start, i - Start) ;
Inc( ItemIndex) ;
Start : = i + 1 ;
end ;
end ;
Result [ ItemIndex] : = Copy( s, Start, len - Start + 1 ) ;
end ;
procedure TfrmTradeMarketQtyInPut. btnAddClick( Sender: TObject) ;
begin
if CDS_1. IsEmpty = False then
begin
CopyAddRowCDS( CDS_1) ;
with CDS_1 do
begin
Edit;
FieldByName( 'TMSQID' ) . Value : = null;
post;
end ;
end
else
begin
with CDS_1 do
begin
Append;
//FieldByName('QtyUnit').Value := 'M';
Post;
end ;
end ;
end ;
procedure TfrmTradeMarketQtyInPut. FormClose( Sender: TObject; var Action: TCloseAction) ;
begin
inherited ;
Action : = caFree;
end ;
function TfrmTradeMarketQtyInPut. SaveData( ) : Boolean ;
var
Maxno, PTMSQID: string ;
2026-06-13 16:49:18 +08:00
// <20> <> <EFBFBD> ӣ<EFBFBD> <D3A3> ж<EFBFBD> <D0B6> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0>
bSkip: Boolean ;
2025-09-08 10:53:41 +08:00
begin
try
ADOQueryCmd. Connection. BeginTrans;
CDS_1. DisableControls;
with CDS_1 do
begin
First;
while not eof do
begin
2026-06-13 16:49:18 +08:00
// ====================== <20> <> <EFBFBD> <EFBFBD> <EFBFBD> жϣ<D0B6> Qty=0 <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> ======================
bSkip : = False ;
if FieldByName( 'Qty' ) . AsFloat = 0 then // <20> <> <EFBFBD> <EFBFBD> =0
2025-09-08 10:53:41 +08:00
begin
2026-06-13 16:49:18 +08:00
// <20> жϵ<D0B6> ǰ<EFBFBD> <C7B0> ¼<EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Append<6E> <64> ״̬
if ( CDS_1. State = dsInsert) or ( Trim( FieldByName( 'TMSQID' ) . AsString) = '' ) then
begin
bSkip : = True ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Next; // ֱ<> <D6B1> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB>
Continue; // <20> <> ִ<EFBFBD> б <EFBFBD> <D0B1> <EFBFBD>
end ;
end ;
// ======================================================================
2025-09-08 10:53:41 +08:00
2026-06-13 16:49:18 +08:00
with ADOQueryTemp do
begin
2025-09-08 10:53:41 +08:00
Close;
sql. Clear;
sql. Add( 'select * from Trade_Market_Sub_Qty where TMSQID=' '' + Trim( CDS_1. fieldbyname( 'TMSQID' ) . AsString) + '' '' ) ;
open;
end ;
PTMSQID : = Trim( ADOQueryTemp. fieldbyname( 'TMSQID' ) . AsString) ;
if Trim( PTMSQID) = '' then
begin
if GetLSNo( ADOQueryTemp, Maxno, 'MX' , 'Trade_Market_Sub_Qty' , 4 , 1 ) = False then
begin
Application. MessageBox( 'ȡ<> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ<EFBFBD> <CAA7> !' , '<27> <> ʾ ' , 0 ) ;
Exit;
end ;
end
else
begin
Maxno : = Trim( PTMSQID) ;
end ;
with ADOQueryCmd do
begin
Close;
sql. Clear;
SQL. Add( 'select * from Trade_Market_Sub_Qty where TMSQID=' '' + Trim( Maxno) + '' '' ) ;
Open;
end ;
with ADOQueryCmd do
begin
if Trim( PTMSQID) = '' then
begin
Append;
FieldByName( 'FillId' ) . Value : = Trim( DCode) ;
FieldByName( 'Filler' ) . Value : = Trim( DName) ;
FieldByName( 'TMSQID' ) . Value : = Trim( Maxno) ;
end
else
begin
Edit;
FieldByName( 'EditId' ) . Value : = Trim( DCode) ;
FieldByName( 'Editer' ) . Value : = Trim( DName) ;
FieldByName( 'EditTime' ) . Value : = SGetServerDateTime( ADOQueryTemp) ;
end ;
2026-06-13 16:49:18 +08:00
2025-09-08 10:53:41 +08:00
RTSetSaveDataCDS( ADOQueryCmd, Tv1, CDS_1, 'Trade_Market_Sub_Qty' , 0 ) ;
2025-10-21 09:32:05 +08:00
FieldByName( 'TMSQID' ) . AsString : = Trim( Maxno) ;
FieldByName( 'TMSId' ) . AsString : = CDS_1. FieldByName( 'TMSId' ) . AsString;
FieldByName( 'TMMId' ) . AsString : = CDS_1. FieldByName( 'TMMId' ) . AsString;
2025-09-08 10:53:41 +08:00
Post;
end ;
2026-06-13 16:49:18 +08:00
2025-09-08 10:53:41 +08:00
Next;
end ;
end ;
CDS_1. EnableControls;
2026-06-13 16:49:18 +08:00
2026-04-10 17:30:29 +08:00
with ADOQueryCmd do
begin
2026-06-13 16:49:18 +08:00
close;
SQL. Clear;
sql. Add( 'update Trade_Market_Sub set outqty = (select sum(qty) from Trade_Market_Sub_Qty X where X.TMSID = Trade_Market_Sub.TMSID) where TMSID = ' + QuotedStr( PMTMSId) ) ;
ExecSQL;
2026-04-10 17:30:29 +08:00
end ;
2026-06-13 16:49:18 +08:00
2025-09-08 10:53:41 +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 ;
procedure TfrmTradeMarketQtyInPut. FormShow( Sender: TObject) ;
begin
inherited ;
ReadCxGrid( '<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ' , Tv1, 'ó<> <C3B3> <EFBFBD> <EFBFBD> <EFBFBD> й<EFBFBD> <D0B9> <EFBFBD> ' ) ;
2026-06-13 16:49:18 +08:00
TBSave. Visible : = true ;
2025-09-08 10:53:41 +08:00
with ADOQueryTemp do
begin
Close;
SQL. Clear;
2025-09-29 09:23:46 +08:00
// sql.Add(' select A.* from Trade_Market_Sub_Qty A');
// sql.Add('where A.TMSId=''' + Trim(PMTMSId) + '''');
sql. Add( ' select * from Bs_Cloth_IO A inner join Trade_Market_Sub B on A.TMMID=B.TMMId and A.TMSId=B.TMSId' ) ;
sql. Add( 'where A.TMSId=' '' + Trim( MTMSId) + '' '' ) ;
// showmessage(sql.text);
2025-09-08 10:53:41 +08:00
Open;
end ;
SCreateCDS( ADOQueryTemp, CDS_1) ;
SInitCDSData( ADOQueryTemp, CDS_1) ;
2025-10-21 09:32:05 +08:00
if canshu4 = '<27> <> <EFBFBD> <EFBFBD> ' then
begin
pnl2. Visible : = true ;
btnAdd. Visible : = true ;
2026-06-13 16:49:18 +08:00
2025-10-21 09:32:05 +08:00
with ADOQueryTemp do
begin
Close;
SQL. Clear;
sql. Add( ' select A.* from Trade_Market_Sub_Qty A' ) ;
sql. Add( 'where A.TMSId=' '' + Trim( PMTMSId) + '' '' ) ;
// sql.Add(' select * from Bs_Cloth_IO A inner join Trade_Market_Sub B on A.TMMID=B.TMMId and A.TMSId=B.TMSId');
// sql.Add('where A.TMSId=''' + Trim(MTMSId) + '''');
// showmessage(sql.text);
Open;
end ;
SCreateCDS( ADOQueryTemp, CDS_1) ;
SInitCDSData( ADOQueryTemp, CDS_1) ;
end ;
2025-09-08 10:53:41 +08:00
end ;
procedure TfrmTradeMarketQtyInPut. FromCoNameDblClick( Sender: TObject) ;
begin
TcxButtonEdit( Sender) . Text : = '' ;
TcxButtonEdit( Sender) . Properties. LookupItems. Text : = '' ;
end ;
procedure TfrmTradeMarketQtyInPut. inQtyKeyPress( Sender: TObject; var Key: Char ) ;
var
i: Integer ;
MaxNo: string ;
begin
if Key = #13 then
begin
with CDS_1 do
begin
DisableControls;
for i : = 1 to StrToIntDef( inPiece. Text , 1 ) do
begin
Append;
FieldByName( 'Qty' ) . Value : = StrTofloatDef( inQty. Text , 0 ) ;
2025-10-21 09:32:05 +08:00
FieldByName( 'TMSQID' ) . Value : = MaxNo;
FieldByName( 'TMSId' ) . Value : = PMTMSId;
FieldByName( 'TMMId' ) . Value : = PFTMMId;
2025-09-08 10:53:41 +08:00
Post;
end ;
EnableControls;
end ;
inPiece. Text : = '1' ;
inQty. Text : = '' ;
end ;
end ;
procedure TfrmTradeMarketQtyInPut. TBSaveClick( Sender: TObject) ;
var
Maxno: string ;
begin
2026-06-13 16:49:18 +08:00
with cds_1 do
2025-09-08 10:53:41 +08:00
begin
2026-06-13 16:49:18 +08:00
while cds_1. Locate( 'Qty' , null, [ ] ) do
begin
cds_1. Delete
end ;
2025-09-08 10:53:41 +08:00
end ;
2026-06-13 16:49:18 +08:00
with cds_1 do
2025-09-08 10:53:41 +08:00
begin
2026-06-13 16:49:18 +08:00
while cds_1. Locate( 'Qty' , 0 , [ ] ) do
begin
cds_1. Delete
end ;
2025-09-08 10:53:41 +08:00
end ;
2026-06-13 16:49:18 +08:00
// if CDS_1.Locate('Qty', null, []) = True then
// begin
// Application.MessageBox('<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> !', '<27> <> ʾ ', 0);
// Exit;
// end;
// if CDS_1.Locate('Qty', 0, []) = True then
// begin
// Application.MessageBox('<27> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ0!', '<27> <> ʾ ', 0);
// Exit;
// end;
if canshu4 = '<27> <> <EFBFBD> <EFBFBD> ' then
2025-09-08 10:53:41 +08:00
begin
2026-06-13 16:49:18 +08:00
if SaveData( ) then
begin
Application. MessageBox( '<27> <> <EFBFBD> <EFBFBD> <EFBFBD> ɹ<EFBFBD> !' , '<27> <> ʾ ' , 0 ) ;
ModalResult : = 1 ;
2025-09-08 10:53:41 +08:00
2026-06-13 16:49:18 +08:00
end ;
end
else
begin
if SaveData2( ) then
begin
Application. MessageBox( '<27> <> <EFBFBD> <EFBFBD> <EFBFBD> ɹ<EFBFBD> !' , '<27> <> ʾ ' , 0 ) ;
ModalResult : = 1 ;
end ;
2025-09-08 10:53:41 +08:00
end ;
2026-06-13 16:49:18 +08:00
2025-09-08 10:53:41 +08:00
end ;
procedure TfrmTradeMarketQtyInPut. TBCloseClick( Sender: TObject) ;
begin
inherited ;
Close;
end ;
procedure TfrmTradeMarketQtyInPut. Tv1DblClick( Sender: TObject) ;
begin
with ADOQueryTemp do
begin
Close;
SQL. Clear;
sql. Add( 'delete Trade_Market_Sub_Qty where TMSQID=' + quotedstr( Trim( CDS_1. FieldByName( 'TMSQID' ) . AsString) ) ) ;
ExecSQL;
end ;
CDS_1. Delete;
end ;
procedure TfrmTradeMarketQtyInPut. Tv1KeyDown( Sender: TObject; var Key: Word ; Shift: TShiftState) ;
begin
2026-06-13 16:49:18 +08:00
if Key = VK_DOWN then
2025-09-08 10:53:41 +08:00
begin
2026-06-13 16:49:18 +08:00
btnAdd. Click( ) ;
2025-09-08 10:53:41 +08:00
end ;
2026-06-13 16:49:18 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> Ctrl+V
// if (Key = Ord('V')) and (Shift = [ssCtrl]) then
// begin
// pasteDatatTocxGrid(Tv1);
//
// end;
2025-09-08 10:53:41 +08:00
end ;
end .