GARANTIR DESCONTO

Fórum Problema Incrementar campo Numeric 10,0 Firebird 2.5 IBExpert #559742

31/07/2016

0

Boa Noite gostaria de saber como incrementar no Firebird IBExpert um campo numeric 10,2, porque com campos integer executa normalmente. Obrigado se puderem me ajudar

Tenho a Tabela Cidade:
Utilizo Firebird 2.5 Delphi 7


CREATE TABLE CIDADE (
EMPRESA NUMERIC(2,0) NOT NULL,
CODIGO DM_CHAVE_PRIMARIA NOT NULL /* DM_CHAVE_PRIMARIA = NUMERIC(10,0) CHECK (VALUE > 0) */,
NOME DM_NOME_DESCRICAO NOT NULL /* DM_NOME_DESCRICAO = CHAR(50) NOT NULL CHECK (VALUE <>'') */,
ESTADO DM_ESTADO NOT NULL /* DM_ESTADO = CHAR(2) NOT NULL CHECK (VALUE IN ('AM','AC','RR','RO','AP','PA','MA','PI','CE','RN','PE','PB','AL','SE','MT','MS','GO','TO','BA','MG','ES','RJ','SP','PR','SC','RS','DF')) */,
ISS DM_IMPOSTO DEFAULT 0 /* DM_IMPOSTO = NUMERIC(3,2) CHECK (VALUE > 0) */,
IPI DM_IMPOSTO DEFAULT 0 /* DM_IMPOSTO = NUMERIC(3,2) CHECK (VALUE > 0) */,
PIS DM_IMPOSTO DEFAULT 0 /* DM_IMPOSTO = NUMERIC(3,2) CHECK (VALUE > 0) */,
COFINS DM_IMPOSTO DEFAULT 0 /* DM_IMPOSTO = NUMERIC(3,2) CHECK (VALUE > 0) */,
ICMS DM_IMPOSTO DEFAULT 0 /* DM_IMPOSTO = NUMERIC(3,2) CHECK (VALUE > 0) */
);


Agora o Codigo no Delphi 7 que não incrementa no IBExpert:
Utilizo StoredProcedure para inclusao, exclusao, alteracao.




procedure TDMCadastro.CDS_CIDADEBeforePost(DataSet: TDataSet);
begin
with SP_CIDADE_IU do
begin
Params[0].AsInteger := CDS_CIDADEEMPRESA.AsInteger;
Params[1].AsInteger := CDS_CIDADECODIGO.AsInteger;
Params[2].AsString := CDS_CIDADENOME.AsString;
Params[3].AsString := CDS_CIDADEESTADO.AsString;
Params[4].AsCurrency:= CDS_CIDADEISS.AsCurrency;
Params[5].AsCurrency:= CDS_CIDADEIPI.AsCurrency;
Params[6].AsCurrency:= CDS_CIDADEPIS.AsCurrency;
Params[7].AsCurrency:= CDS_CIDADECOFINS.AsCurrency;
Params[8].AsCurrency:= CDS_CIDADEICMS.AsCurrency;
end;
end;




procedure TDMCadastro.CDS_CIDADENewRecord(DataSet: TDataSet);
begin
CDS_CIDADEEMPRESA.AsInteger := 0;
CDS_CIDADECODIGO.AsInteger := 0;
end;



procedure TDMCadastro.DSP_CIDADEBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
begin
if (SourceDS = SP_CIDADE_IU) and
(DeltaDS.FieldByName('CODIGO').NewValue < 0) and
(UpdateKind = ukInsert) then
begin
CDS_CIDADE.Edit;
SP_CIDADE_IU.Close;
SP_CIDADE_IU.Params[0].AsInteger := 1;
SP_CIDADE_IU.ExecProc;
DeltaDS.FieldByName('CODIGO').NewValue :=
SP_CIDADE_IU.Params[1].AsInteger;
end;

if DeltaDS.FindField('CODIGO') <> nil then
if UpdateKind = ukInsert then
begin
if (DeltaDS.FieldByName('CODIGO').NewValue < 0) then
DeltaDS.FieldByName('CODIGO').NewValue :=
SP_CIDADE_IU.Params[1].AsInteger;
end;
end;
Gilberto Moura

Gilberto Moura

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar