Sistema de Locadora
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.
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
Curtidas 0
Respostas
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
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
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
06/11/2012
Obrigado a todos, estava faltando o sequencia do campo id_cliente para fazer o auto-incremento.
Abraço
Abraço
GOSTEI 0
Marco Salles
06/11/2012
Obrigado a todos, estava faltando o sequencia do campo id_cliente para fazer o auto-incremento.
Abraço
Abraço
imaginei
[]sds
GOSTEI 0