Подскажите пожалуйста как сделать так, чтобы не убирались ничего не значащие нули в целом числе...
Вот на всякий случай код модуля:
[more]unit CMR;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Oracle, AppUtils, Mask, ToolEdit;
type
TfrmCMR = class(TForm)
Label3: TLabel;
btnSend: TBitBtn;
BitBtn2: TBitBtn;
cmrText1: TMaskEdit;
cmrText2: TMaskEdit;
Label1: TLabel;
AddDate: TDateEdit;
Label2: TLabel;
procedure btnSendClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FCMRID: Integer;
FCMRStatus: Integer;
public
{ Public declarations }
procedure CreateCMR;
end;
var
frmCMR: TfrmCMR;
implementation
uses DBSess;
{$I TFS_Messages.pas}
{$R *.DFM}
procedure TfrmCMR.CreateCMR;
begin
FCMRID := 0;
FCMRStatus := 0;
AddDate.Date := 0;
end;
procedure TfrmCMR.btnSendClick(Sender: TObject);
begin
Close;
end;
procedure TfrmCMR.BitBtn2Click(Sender: TObject);
begin
Close;
end;
procedure TfrmCMR.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmCMR.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
newID,cmrSiries: Integer;
begin
if ModalResult = mrOk then
begin
if FCMRStatus = 1 then
begin
if MessageDlg('Ñîîáùåíèå óæå îòïðàâëåíî. Îòïðàâèòü ïîâòîðíî?',
mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
begin
CanClose := True;
Exit;
end;
end;
for cmrSiries := strtoint(cmrText1.Text) to strtoint(cmrText2.Text) do // значение cmrSiries вставляется в базу (многократно, цикл как вы видите, но если скажем значение cmrText1.Text или cmrText2.Text имеют вид 0043984, то нули убираются и вставляется только 43984)
with TOracleQuery.Create(Application) do
begin
Session := dbs;
if FCMRID = 0 then
begin
SQL.Add('SELECT DEVEL.SEQ_CMR.NEXTVAL ID FROM DUAL');
Execute;
newID := FieldAsInteger('ID');
SQL.Clear;
SQL.Add('INSERT INTO DEVEL.CMR(');
SQL.Add('CMRID, ADDDATE, CMRNUM');
SQL.Add(')VALUES(');
SQL.Add(':CMRID, :ADDDATE, :CMRNUM');
SQL.Add(')');
end else
begin
SQL.Add('UPDATE DEVEL.CMR SET');
SQL.Add('ADDDATE=:ADDDATE, CMRNUM=:CMRNUM, STATUS=NULL');
SQL.Add('WHERE CMRID=:CMRID');
end;
DeclareVariable('CMRID', otInteger);
DeclareVariable('ADDDATE', otDate);
DeclareVariable('CMRNUM', otString);
if FCMRID = 0 then
begin
SetVariable('CMRID', newID);
end else
begin
SetVariable('CMRID', FCMRID);
end;
SetVariable('ADDDATE', AddDate.Date);
SetVariable('CMRNUM', cmrSiries);
Execute;
dbs.Commit;
AppBroadcast(TFSM_REFRESH_CMRLIST, 1, 0);
end;
end;
end;
procedure TfrmCMR.FormCreate(Sender: TObject);
begin
FCMRID := 0;
end;
end.[/more]
Вот на всякий случай код модуля:
[more]unit CMR;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Oracle, AppUtils, Mask, ToolEdit;
type
TfrmCMR = class(TForm)
Label3: TLabel;
btnSend: TBitBtn;
BitBtn2: TBitBtn;
cmrText1: TMaskEdit;
cmrText2: TMaskEdit;
Label1: TLabel;
AddDate: TDateEdit;
Label2: TLabel;
procedure btnSendClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FCMRID: Integer;
FCMRStatus: Integer;
public
{ Public declarations }
procedure CreateCMR;
end;
var
frmCMR: TfrmCMR;
implementation
uses DBSess;
{$I TFS_Messages.pas}
{$R *.DFM}
procedure TfrmCMR.CreateCMR;
begin
FCMRID := 0;
FCMRStatus := 0;
AddDate.Date := 0;
end;
procedure TfrmCMR.btnSendClick(Sender: TObject);
begin
Close;
end;
procedure TfrmCMR.BitBtn2Click(Sender: TObject);
begin
Close;
end;
procedure TfrmCMR.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmCMR.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
newID,cmrSiries: Integer;
begin
if ModalResult = mrOk then
begin
if FCMRStatus = 1 then
begin
if MessageDlg('Ñîîáùåíèå óæå îòïðàâëåíî. Îòïðàâèòü ïîâòîðíî?',
mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
begin
CanClose := True;
Exit;
end;
end;
for cmrSiries := strtoint(cmrText1.Text) to strtoint(cmrText2.Text) do // значение cmrSiries вставляется в базу (многократно, цикл как вы видите, но если скажем значение cmrText1.Text или cmrText2.Text имеют вид 0043984, то нули убираются и вставляется только 43984)
with TOracleQuery.Create(Application) do
begin
Session := dbs;
if FCMRID = 0 then
begin
SQL.Add('SELECT DEVEL.SEQ_CMR.NEXTVAL ID FROM DUAL');
Execute;
newID := FieldAsInteger('ID');
SQL.Clear;
SQL.Add('INSERT INTO DEVEL.CMR(');
SQL.Add('CMRID, ADDDATE, CMRNUM');
SQL.Add(')VALUES(');
SQL.Add(':CMRID, :ADDDATE, :CMRNUM');
SQL.Add(')');
end else
begin
SQL.Add('UPDATE DEVEL.CMR SET');
SQL.Add('ADDDATE=:ADDDATE, CMRNUM=:CMRNUM, STATUS=NULL');
SQL.Add('WHERE CMRID=:CMRID');
end;
DeclareVariable('CMRID', otInteger);
DeclareVariable('ADDDATE', otDate);
DeclareVariable('CMRNUM', otString);
if FCMRID = 0 then
begin
SetVariable('CMRID', newID);
end else
begin
SetVariable('CMRID', FCMRID);
end;
SetVariable('ADDDATE', AddDate.Date);
SetVariable('CMRNUM', cmrSiries);
Execute;
dbs.Commit;
AppBroadcast(TFSM_REFRESH_CMRLIST, 1, 0);
end;
end;
end;
procedure TfrmCMR.FormCreate(Sender: TObject);
begin
FCMRID := 0;
end;
end.[/more]