Sistema de Locadora

Delphi

06/11/2012

Caros estou fazendo o curso do sistema de locadora da Devmedia, e estou com o seguinte problema no formulario de clientes, ao tentar incluir um novo cliente, quando tento salvar o registro o mesmo me retorna o seguinte erro abaixo. alguém já passou por este problema ou não, que possa me dar uma dica. Já analisei a procedure, Datamodule, clientdataset e storedprocedure do dbexpress e não consegui localizar o erro. segue trecho do codigo tambem.

Poup debug erro:
Project Locadora.exe raised exception class TDBXError with message 'validation error for column ID_CLIENTE, value "0"
At procedure 'CLIENTES_IU'.

Codigo DModule
procedure TDM.cdsClientesBeforePost(DataSet: TDataSet);
begin
{: Atualiza ou insere cliente }
Start;
try
with spCliente do
begin
Params[0].AsInteger := cdsClientesID_CLIENTE.AsInteger;
Params[1].AsString := cdsClientesNOME_CLIENTE.AsString;
Params[2].AsString := cdsClientesENDERECO.AsString;
Params[3].AsString := cdsClientesBAIRRO.AsString;
Params[4].AsString := cdsClientesCIDADE.AsString;
Params[5].AsString := cdsClientesUF.AsString;
Params[6].AsString := cdsClientesCEP.AsString;
Params[7].AsString := cdsClientesCNPJ.AsString;
Params[8].AsString := cdsClientesTELEFONE_01.AsString;
Params[9].AsString := cdsClientesTELEFONE_02.AsString;
Params[10].AsString := cdsClientesFAX.AsString;
Params[11].AsString := cdsClientesRESPONSAVEL.AsString;
Params[12].AsString := cdsClientesCPF.AsString;
Params[13].AsString := cdsClientesRG.AsString;
{ Params[14].AsString := cdsClientesLIMITE.AsString;}
ExecProc;
Comit;
end;
except
Rollback;
end;
end;

procedure TDM.cdsClientesNewRecord(DataSet: TDataSet);
begin
{: indica o valor 0 para o ID quando inserir novo registro }
cdsClientesID_CLIENTE.AsInteger := 0;
end;

Desde já meu muito obrigado.
Djean Figueira

Djean Figueira

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

06/11/2012

Aparentemente está tentando inserir o valor '0' no campo citado, e este não é um valor válido.
GOSTEI 0
Djean Figueira

Djean Figueira

06/11/2012

Como poderia alterar no caso para auto-incremento via codigo, pois o parametro :=0, codigo de inserir leva somente o valor 0.
GOSTEI 0
Marco Salles

Marco Salles

06/11/2012

Como poderia alterar no caso para auto-incremento via codigo, pois o parametro :=0, codigo de inserir leva somente o valor 0.


mas altera será que vai resolver ...

Pelo que tudo indica este valor deve ser analizado dentro sa Sp para indicar que se trata de uma inclusão e la mesmo
realizar o autoincremento

pq vc mesmo disse

procedure TDM.cdsClientesNewRecord(DataSet: TDataSet);
begin
{: indica o valor 0 para o ID quando inserir novo registro }
cdsClientesID_CLIENTE.AsInteger := 0;
end;
GOSTEI 0
Djean Figueira

Djean Figueira

06/11/2012

Obrigado a todos, estava faltando o sequencia do campo id_cliente para fazer o auto-incremento.

Abraço
GOSTEI 0
Marco Salles

Marco Salles

06/11/2012

Obrigado a todos, estava faltando o sequencia do campo id_cliente para fazer o auto-incremento.
Abraço


imaginei

[]sds
GOSTEI 0
POSTAR