PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Generator com a perna quebrada, pode ?! #39860

03/11/2003

0

Preciso mostrar ao usuario o codigo q o cliente será cadastrado, por isso coloquei o seguinte codigo no botão inserir:

procedure TfrmCliente.btnIncluirClick(Sender: TObject);
begin
inherited;
With RadioGroup1 do
begin
If ItemIndex = 1 Then
begin
AtivaControles;
LimpaControles;
edtDtCadastro.Text:= FormatDateTime(´dd/mm/yyyy´, Now);
edtDtCadastro.Enabled:= False;
edtNome.SetFocus;
IncrCod:=0;
IBStoredProc1.ParamByName(´PAR_TIPO´).Value:=´I´;
With IBQuery1 do
begin
Close;
With SQL do
begin
Clear;
Add(´SELECT GEN_ID(GEN_CLIENTE,1) FROM CLIENTE´);
end;
IBQuery1.Open;
end;
if IBQuery1.Fields[0].AsInteger <= 0 then
IncrCod:=1
else
begin
IncrCod:= IBQuery1.Fields[0].AsInteger;
end;
edtCod.Text:= IntToStr(IncrCod);
IBStoredProc1.Prepare;
...


O problema é que quando eu dou o select na tabela clientes, o genetrator incrementa 1 no codigo e qdo eu vou salavar o registro ele salva com outro valor. Ex:
o edit mostra q o valor do codigo do cliente é 2, salvo e qdo vou olhar no bd, o cod. do cliente é outro valor.
Este problema ocorre com ou sem trigger.
Vejam o codigo da procedure:

===============================================CREATE PROCEDURE SPC_CLIENTE (
PAR_TIPO CHAR(1),
PAR_CODCLIENTE INTEGER,
PAR_CODBAIRRO INTEGER,
PAR_CODCONTATO INTEGER,
PAR_RZSOCIAL VARCHAR(100),
PAR_NMFANTASIA VARCHAR(100),
PAR_IE VARCHAR(20),
PAR_CNPJ VARCHAR(20),
PAR_NOME VARCHAR(70),
PAR_CPF VARCHAR(20),
PAR_RG VARCHAR(20),
PAR_ENDERECO VARCHAR(100),
PAR_NUMERO VARCHAR(10),
PAR_CEP VARCHAR(15),
PAR_EMAIL VARCHAR(10),
PAR_TEL1 VARCHAR(15),
PAR_TEL2 VARCHAR(15),
PAR_DATACADASTRO VARCHAR(11),
PAR_SEXO VARCHAR(11),
PAR_ESTCIVIL VARCHAR(11),
PAR_DATANASCIMENTO VARCHAR(11),
PAR_NUMFILHOS VARCHAR(4))

RETURNS (
OUT_ERRO INTEGER)
AS

DECLARE VARIABLE CODX INTEGER;

BEGIN
/* SETA VARIÁVEL DE RETORNO DE ERRO */
OUT_ERRO = 1;

/* VERIFICA O TIPO DE AÇÃO DA OPERAÇÃO */

IF (:PAR_TIPO <> ´I´ AND :PAR_TIPO <> ´A´ AND :PAR_TIPO <> ´E´) THEN
BEGIN
EXCEPTION ERR_TIPO;
END

/*********************************
* ROTINA DE INCLUSÃO DE REGISTRO
**********************************/

IF (:PAR_TIPO = ´I´) THEN
BEGIN
CODX = GEN_ID(GEN_CLIENTE,1);


INSERT INTO CLIENTE (
CODCLIENTE,
CODBAIRRO,
CODCONTATO,
RZSOCIAL,
NMFANTASIA,
IE,
CNPJ,
NOME,
CPF,
RG,
ENDERECO,
NUMERO,
CEP,
EMAIL,
TEL1,
TEL2,
DATACADASTRO,
SEXO,
ESTCIVIL,
DATANASCIMENTO,
NUMFILHOS)
VALUES (
:CODX,
:PAR_CODBAIRRO,
:PAR_CODCONTATO,
:PAR_RZSOCIAL,
:PAR_NMFANTASIA,
:PAR_IE,
:PAR_CNPJ,
:PAR_NOME,
:PAR_CPF,
:PAR_RG,
:PAR_ENDERECO,
:PAR_NUMERO,
:PAR_CEP,
:PAR_EMAIL,
:PAR_TEL1,
:PAR_TEL2,
:PAR_DATACADASTRO,
:PAR_SEXO,
:PAR_ESTCIVIL,
:PAR_DATANASCIMENTO,
:PAR_NUMFILHOS);

OUT_ERRO = 0;
SUSPEND;
END

/*********************************
* ROTINA DE ALTERAÇÃO DE REGISTRO
**********************************/

IF (:PAR_TIPO = ´A´) THEN
BEGIN
UPDATE CLIENTE SET
CODBAIRRO = :PAR_CODBAIRRO,
CODCONTATO = :PAR_CODCONTATO,
RZSOCIAL = :PAR_RZSOCIAL,
NMFANTASIA = :PAR_NMFANTASIA,
IE = :PAR_IE,
CNPJ = :PAR_CNPJ,
NOME = :PAR_NOME,
CPF = :PAR_CPF,
RG = :PAR_RG,
ENDERECO = :PAR_ENDERECO,
NUMERO = :PAR_NUMERO,
CEP = :PAR_CEP,
EMAIL = :PAR_EMAIL,
TEL1 = :PAR_TEL1,
TEL2 = :PAR_TEL2,
DATACADASTRO = :PAR_DATACADASTRO,
SEXO = :PAR_SEXO,
ESTCIVIL = :PAR_ESTCIVIL,
DATANASCIMENTO = :PAR_DATANASCIMENTO,
NUMFILHOS = :PAR_NUMFILHOS
WHERE CODCLIENTE = :PAR_CODCLIENTE;
OUT_ERRO = 0;
SUSPEND;
END

/*********************************
* ROTINA DE EXCLUSÃO DE REGISTRO
**********************************/

IF (:PAR_TIPO = ´E´) THEN
BEGIN
DELETE FROM CLIENTE WHERE CODCLIENTE = :PAR_CODCLIENTE;
OUT_ERRO = 0;
SUSPEND;
END
END

Por favor, se alguem souber onde está o meu erro me ajude.

PS.: Perna Quebrada = Problema;


Aluiziostf

Aluiziostf

Responder

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

Aceitar