Loop dando erro de violação de key ao salvar segundo registro.
Galera, esta minha função abaixo está com um pequeno problema, no loop insere o primeiro registro e salva e gera um ID..o segundo registro insere, más ao salvar o segundo registro, dá um err de violation key..
begin
DM.Cds_CadItensPedido.Close;
DM.Cds_CadItensPedido.Open;
FCadVendas.Cds_iten_Compra.First;
while not FCadVendas.Cds_iten_Compra.eof do
begin
DM.Cds_CadItensPedido.Append;
// DM.Cds_CadItensPedidoID_PEDIDO.Value := Cds_CadPedidoID_PEDIDO.Value;
DM.Cds_CadItensPedidoID_PRODUTO.Value:= FCadVendas.Cds_iten_CompraID_PRODUTO.Value;
DM.Cds_CadItensPedidoVLR_ITEM.AsFloat:= FCadVendas.Cds_iten_CompraPRECO.AsFloat;
DM.Cds_CadItensPedidoQUANTIDADE.AsFloat:= FCadVendas.Cds_iten_CompraQNT.AsFloat;
DM.Cds_CadItensPedidoVLR_TOTAL.AsFloat:= FCadVendas.Cds_iten_CompraVALORTOTAL.AsFloat;
DM.Cds_CadItensPedidoVLR_DESCONTO.AsFloat := FCadVendas.Cds_iten_CompraDESCONTO.AsFloat;
DM.Cds_CadItensPedidoCONTA_ITEM.Value := FCadVendas.Cds_iten_CompraID_ITEN.Value;
DM.Cds_CadItensPedidoID_CLIENTE.Value := DMConsulta.Cds_Pesc_Pedido_ClienteID_CLIENTE.Value;
DM.Cds_CadItensPedidoID_EMPRESA.Value := CodEmpresa;
DM.Cds_CadItensPedido.Post;
DM.Cds_CadItensPedido.ApplyUpdates(0);
FCadVendas.Cds_iten_Compra.Next;
end;
DM. Cds_CadPedido.Post;
DM.Cds_CadPedido.ApplyUpdates(0);
DM. Cds_CadItensPedido.ApplyUpdates(0);
end;
Gilmar Moraes
Curtidas 0
Respostas
William
21/11/2012
Colega qual campo está definido como chave primária nessa tabela ItensPedido?
GOSTEI 0
Gilmar Moraes
21/11/2012
Colega qual campo está definido como chave primária nessa tabela ItensPedido?
por incrivel que parece nenhuma..
o campo é este aír debaixo e é auto incremento feito por tigers..uso firebird
ID_PEDIDO_ITEM
GOSTEI 0
Gilmar Moraes
21/11/2012
Colega qual campo está definido como chave primária nessa tabela ItensPedido?
por incrivel que parece nenhuma..
o campo é este aír debaixo e é auto incremento feito por tigers..uso firebird
ID_PEDIDO_ITEM
só salva o primeiro registro, no llop a tabela dá novo insert e só quando salva que dá este erro.
poderia ser talves um problema na triqger ? uso clientDataset
GOSTEI 0
William
21/11/2012
Acho difícil ser o trigger, fiz um teste montando uma tabela com 4 campos, sendo o ID auto_increment!!
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
GOSTEI 0
Gilmar Moraes
21/11/2012
Acho difícil ser o trigger, fiz um teste montando uma tabela com 4 campos, sendo o ID auto_increment!!
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Bom, conferí as configurações e esta tudo certo, exclui o datasetprovide, datasetclient e o sqldataset, tenho tenho 27 tabelas funcionando perfeitamente, más esta resolvel dá problema..acho que vou excluir a tabela PEDIDO_ITENS e refaze-la.
GOSTEI 0
William
21/11/2012
Acredito que não seja problema na tabela, pode ter passado alguma configuração no conjunto de componentes:
TSQLQUERY+DATASETPROVIDER+CLIENTDATASET+DATASOURCE
TSQLQUERY+DATASETPROVIDER+CLIENTDATASET+DATASOURCE
GOSTEI 0
Gilmar Moraes
21/11/2012
Acho difícil ser o trigger, fiz um teste montando uma tabela com 4 campos, sendo o ID auto_increment!!
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Bom, conferí as configurações e esta tudo certo, exclui o datasetprovide, datasetclient e o sqldataset, tenho tenho 27 tabelas funcionando perfeitamente, más esta resolvel dá problema..acho que vou excluir a tabela PEDIDO_ITENS e refaze-la.
vou fazer um debug usando showmessage (rsrsrs)
GOSTEI 0
Gilmar Moraes
21/11/2012
Acho difícil ser o trigger, fiz um teste montando uma tabela com 4 campos, sendo o ID auto_increment!!
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Inserindo uns 20 registros, foi tranquilo sem erros!
Deve ser outro problema, como está configurado seu DataSetProvider?
Bom, conferí as configurações e esta tudo certo, exclui o datasetprovide, datasetclient e o sqldataset, tenho tenho 27 tabelas funcionando perfeitamente, más esta resolvel dá problema..acho que vou excluir a tabela PEDIDO_ITENS e refaze-la.
vou fazer um debug usando showmessage (rsrsrs)
o problema realmente esta no em alguma parte que aciona o generator do banco de dados. fiz um função de captura o generatos do banco de dados e atribuí ete valor ao campo ID auto incremento e assim funciona sem problemas.. vou tentar resolver analizando os bancos de dados, más se não der vou deixar como está..rrsr
GOSTEI 0
Bruno Leandro
21/11/2012
Ola Gilmar eu dei uma olhada no seu codigo se voce tentar executar o comando abaixo eu coloquei o post e applyupdates do DM.Cds_CadPedido antes do while e removi o comentario que voce deveria informar o id_pedido
begin
DM.Cds_CadItensPedido.Close;
DM.Cds_CadItensPedido.Open;
DM.Cds_CadPedido.Post;
DM.Cds_CadPedido.ApplyUpdates(0);
FCadVendas.Cds_iten_Compra.First;
while not FCadVendas.Cds_iten_Compra.eof do
begin
DM.Cds_CadItensPedido.Append;
DM.Cds_CadItensPedidoID_PEDIDO.Value := Cds_CadPedidoID_PEDIDO.Value;
DM.Cds_CadItensPedidoID_PRODUTO.Value:= FCadVendas.Cds_iten_CompraID_PRODUTO.Value;
DM.Cds_CadItensPedidoVLR_ITEM.AsFloat:= FCadVendas.Cds_iten_CompraPRECO.AsFloat;
DM.Cds_CadItensPedidoQUANTIDADE.AsFloat:= FCadVendas.Cds_iten_CompraQNT.AsFloat;
DM.Cds_CadItensPedidoVLR_TOTAL.AsFloat:= FCadVendas.Cds_iten_CompraVALORTOTAL.AsFloat;
DM.Cds_CadItensPedidoVLR_DESCONTO.AsFloat := FCadVendas.Cds_iten_CompraDESCONTO.AsFloat;
DM.Cds_CadItensPedidoCONTA_ITEM.Value := FCadVendas.Cds_iten_CompraID_ITEN.Value;
DM.Cds_CadItensPedidoID_CLIENTE.Value := DMConsulta.Cds_Pesc_Pedido_ClienteID_CLIENTE.Value;
DM.Cds_CadItensPedidoID_EMPRESA.Value := CodEmpresa;
DM.Cds_CadItensPedido.Post;
DM.Cds_CadItensPedido.ApplyUpdates(0);
FCadVendas.Cds_iten_Compra.Next;
end;
end;
begin
DM.Cds_CadItensPedido.Close;
DM.Cds_CadItensPedido.Open;
DM.Cds_CadPedido.Post;
DM.Cds_CadPedido.ApplyUpdates(0);
FCadVendas.Cds_iten_Compra.First;
while not FCadVendas.Cds_iten_Compra.eof do
begin
DM.Cds_CadItensPedido.Append;
DM.Cds_CadItensPedidoID_PEDIDO.Value := Cds_CadPedidoID_PEDIDO.Value;
DM.Cds_CadItensPedidoID_PRODUTO.Value:= FCadVendas.Cds_iten_CompraID_PRODUTO.Value;
DM.Cds_CadItensPedidoVLR_ITEM.AsFloat:= FCadVendas.Cds_iten_CompraPRECO.AsFloat;
DM.Cds_CadItensPedidoQUANTIDADE.AsFloat:= FCadVendas.Cds_iten_CompraQNT.AsFloat;
DM.Cds_CadItensPedidoVLR_TOTAL.AsFloat:= FCadVendas.Cds_iten_CompraVALORTOTAL.AsFloat;
DM.Cds_CadItensPedidoVLR_DESCONTO.AsFloat := FCadVendas.Cds_iten_CompraDESCONTO.AsFloat;
DM.Cds_CadItensPedidoCONTA_ITEM.Value := FCadVendas.Cds_iten_CompraID_ITEN.Value;
DM.Cds_CadItensPedidoID_CLIENTE.Value := DMConsulta.Cds_Pesc_Pedido_ClienteID_CLIENTE.Value;
DM.Cds_CadItensPedidoID_EMPRESA.Value := CodEmpresa;
DM.Cds_CadItensPedido.Post;
DM.Cds_CadItensPedido.ApplyUpdates(0);
FCadVendas.Cds_iten_Compra.Next;
end;
end;
GOSTEI 0