📄 storetickets.~pas
字号:
unit StoreTickets;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BaseFrm, StdCtrls, ExtCtrls, ComCtrls;
type
TFormStoreTicket = class(TFormBase)
pnlClient: TPanel;
pnlBottom: TPanel;
Label1: TLabel;
EdtStartTicketNo: TEdit;
Label2: TLabel;
Label3: TLabel;
EdtEndTicketNo: TEdit;
BtnStore: TButton;
GroupBox1: TGroupBox;
lvHistory: TListView;
Label4: TLabel;
cbArea: TComboBox;
Label5: TLabel;
EdtCount: TEdit;
procedure BtnStoreClick(Sender: TObject);
procedure EdtStartTicketNoKeyPress(Sender: TObject; var Key: Char);
function isExistTicketNoParam(ATicketNo: string): Boolean;
procedure LoadStoreTicketInfo;
procedure FormShow(Sender: TObject);
procedure EdtCountMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormStoreTicket: TFormStoreTicket;
implementation
uses SystemDM, systemPH, CommonFuncLib;
{$R *.dfm}
procedure TFormStoreTicket.BtnStoreClick(Sender: TObject);
var
StartTicketNo, EndTicketNo: Double;
I, nTicketCount: Integer;
sSqlStr: String;
oListItem: TListItem;
begin
inherited;
if not IsNumeric(EdtStartTicketNo.Text) then
begin
ShowMessage('起始票号含有非法数字');
EdtStartTicketNo.SetFocus;
Exit;
end;
if not IsNumeric(EdtEndTicketNo.Text) then
begin
ShowMessage('结束票号含有非法数字');
EdtEndTicketNo.SetFocus;
Exit;
end;
if Trim(EdtStartTicketNo.Text) = '' then
begin
ShowMessage('起始票号不能为空');
EdtStartTicketNo.SetFocus;
Exit;
end;
if Trim(EdtEndTicketNo.Text) = '' then
begin
ShowMessage('结束票号不能为空');
EdtEndTicketNo.SetFocus;
Exit;
end;
StartTicketNo := StrToFloatDef(Trim(EdtStartTicketNo.Text), 0);
EndTicketNo := StrToFloatDef(Trim(EdtEndTicketNo.Text), 0);
if EndTicketNo < StartTicketNo then
begin
ShowMessage('结束号不能小于起始号!');
EdtEndTicketNo.SetFocus;
Exit;
end;
if isExistTicketNoParam(Trim(EdtStartTicketNo.Text))then
begin
ShowMessage('此号段已经存在于库表中!');
Exit;
end;
try
Screen.Cursor := crHourGlass;
nTicketCount := Round(EndTicketNo - StartTicketNo);
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_START_UPDATE, nTicketCount);
for I := 0 to nTicketCount do
begin
sSqlStr := 'INSERT INTO TICKET_NUMBER(PrintCode, isUsed, StoreDate, UserArea)VALUES' +
'(' + #39 + FloatToStr(StartTicketNo) + #39 + ','
+ '0' + ','
+ #39 + FormatDateTime('YYYY-MM-DD hh:nn:ss', Now) + #39 + ','
+ IntToStr(cbArea.ItemIndex) + ')';
if not DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr) then
DMSystem.Qry_Temp.SQL.SaveToFile('TICKET_NUMBER_SQL.TXT');
StartTicketNo := 1 + StartTicketNo;
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_PLAYING_UPDATE, I);
Application.ProcessMessages;
end;
sSqlStr := 'INSERT INTO TICKET_NUMBER_HISTORY(AGENTID, STARTPRINTCODE, TICKETCOUNT, OPERATEDATE, USERAREA)' +
'VALUES(' + IntToStr(COMPANYAGENTID) + ','
+ #39 + Trim(EdtStartTicketNo.Text) + #39 + ','
+ IntToStr(nTicketCount + 1) + ','
+ #39 + FormatDateTime('YYYY-MM-DD hh:nn:ss', Now) + #39 + ','
+ IntToStr(cbArea.ItemIndex) + ')';
if not DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr) then
DMSystem.Qry_Temp.SQL.SaveToFile('TICKET_NUMBER_HISTORY_SQL.TXT');
finally
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_FINISHED_UPDATE, 0);
ShowMessage('号段入库完毕');
oListItem := lvHistory.Items.add;
oListItem.Caption := IntToStr(lvHistory.Items.Count);
oListItem.SubItems.Add(EdtStartTicketNo.Text);
oListItem.SubItems.Add(IntToStr(nTicketCount + 1));
oListItem.SubItems.Add(FormatDateTime('YYYY-MM-DD hh:nn:ss', Now));
oListItem.SubItems.Add(cbArea.Text);
EdtStartTicketNo.Text := '';
EdtEndTicketNo.Text := '';
EdtCount.Text := '';
Screen.Cursor := crDefault;
GlobalStoreCount := GlobalStoreCount + nTicketCount + 1;
end;
end;
procedure TFormStoreTicket.EdtStartTicketNoKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
// if not (Sender is TEdit) then Exit;
// if not (Key in ['0'..'9', #8]) or ((Length(TEdit(Sender).Text) >=10) and (Key <> #8)) then Key := #0;
end;
function TFormStoreTicket.isExistTicketNoParam(ATicketNo: string): Boolean;
var
sSqlStr: string;
begin
Result := False;
sSqlStr := 'SELECT ID FROM TICKET_NUMBER WHERE PRINTCODE = ' + #39 + ATicketNo + #39;
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
Result := True;
end;
procedure TFormStoreTicket.LoadStoreTicketInfo;
var
sSqlStr: string;
oListItem: TListItem;
nIndex: Integer;
begin
lvHistory.Clear;
sSqlStr := 'SELECT * FROM TICKET_NUMBER_HISTORY WHERE AGENTID =' + IntToStr(COMPANYAGENTID);
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
with DMSystem.Qry_Temp do
try
First;
while not Eof do
begin
oListItem := lvHistory.Items.Add;
oListItem.Caption := IntToStr(lvHistory.Items.Count);
oListItem.SubItems.Add(Trim(FieldByName('STARTPRINTCODE').AsString));
oListItem.SubItems.Add(FieldByName('TICKETCOUNT').AsString);
oListItem.SubItems.Add(FieldByName('OPERATEDATE').AsString);
nIndex := FieldByName('USERAREA').AsInteger;
if nIndex <cbArea.Items.Count then
oListItem.SubItems.Add(cbArea.Items[nIndex]);
Next;
Application.ProcessMessages;
end;
finally
end;
end;
procedure TFormStoreTicket.FormShow(Sender: TObject);
begin
inherited;
LoadStoreTicketInfo;
end;
procedure TFormStoreTicket.EdtCountMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
EdtCount.Text := FloatToStr(Abs(StrToFloatDef(EdtEndTicketNo.Text, 0) -
StrToFloatDef(EdtStartTicketNo.Text, 0)) + 1);
end;
procedure TFormStoreTicket.FormCreate(Sender: TObject);
begin
inherited;
cbArea.ItemIndex := 0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -