Problema Incrementar campo Numeric 10,0 Firebird 2.5 IBExpert
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;
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
Curtidas 0