Problema com Foreign Key

Delphi

24/02/2014

Olá Pessoal,

Eu não sei o porque deste erro

Project CMS.exe raised exception class TDBXError with message 'violation of FOREIGN KEY constraint "FK_KIT_1" on table "KIT"
Foreign key reference target does not exist'.


Isso acontece toda vez que eu tento inserir na tabela KIT e também da tabela DETALLE_KIT tudo de uma vez. O código no qual utilizo é este:
procedure TF_FormKit.btnSalvarClick(Sender: TObject);
begin
  with DMPrin do
    begin
        //Cadastro do KIT
        cds_Cadkit.Open;
        cds_Cadkit.Append;
        cds_CadKitID_FUNCIONARIO.Value:= DMPesq.cds_PesqFuncionarioID_FUNCIONARIO.Value;
        cds_CadKitNOMBRE.AsString:= edtNomeKit.Text;
        cds_CadKitFECHA.AsDateTime := strtodate(formatdatetime('dd/mm/yyyy',now));
        cds_CadKitVALOR_TOTAL.AsFloat := StrToFloat(edtTotalValorKit.Text);

          // Cadastro do DETALLE_KIT

          cds_Itens.First;
          while not cds_Itens.eof do
          begin
            cds_CadDetalle_Kit.Append;
            cds_CadDetalle_KitID_PRODUCTO.Value:= cds_ItensID_Producto.Value;
            cds_CadDetalle_KitCANTIDAD.AsFloat:= cds_ItensQuantidade.AsFloat;
            cds_CadDetalle_KitPRECIO_COSTO.AsFloat:= cds_ItensPreco_Costo.AsFloat;
            cds_CadDetalle_KitPRECIO_MEDIO.AsFloat:= cds_ItensPreco_Medio.AsFloat;
            cds_CadDetalle_KitPRECIO_VENTA.AsFloat:= cds_ItensPreco_Venta.AsFloat;
            cds_CadDetalle_Kit.Post;
            cds_Itens.Next;
          end;

          cds_CadDetalle_Kit.ApplyUpdates(0);
          //cds_Itens.EmptyDataSet;
      end;
end;


OBS:
A tabela DETALLE_KIT tem uma chave estrangeira da tabela KIT, onde para o DETALLE_KIT pegar o ID Primario da Tabela KIT para a sua chave secunddaria é gerado no delphi (ou seja um codigo feito no data module) o codigo primario que vai ser inserido na tabela KIT antes de inserir para assim passar para a tabela DETALLE_KIT e ser inserido tudo de uma vez.

Alguem poderia me ajudar? Já não sei mais o que fazer...

Desde já agradecido!
Edson Vilhalba

Edson Vilhalba

Curtidas 0

Respostas

Marisiana Battistella

Marisiana Battistella

24/02/2014

Olá Edson!
Não estaria faltando este comando?
 cds_Cadkit.Post;


Pelo que sei , o Post é o que salva o registro no banco.
Então o erro poderia estar ocorrendo porque vc tá tentando referenciar um KIT na tabbela DETALHE_KIT que ainda não existe no banco de dados...
Imagino que seja uma possibilidade, me corrijam se eu estiver errada.
GOSTEI 0
Edson Vilhalba

Edson Vilhalba

24/02/2014

Olá Edson!
Não estaria faltando este comando?
 cds_Cadkit.Post;


Pelo que sei , o Post é o que salva o registro no banco.
Então o erro poderia estar ocorrendo porque vc tá tentando referenciar um KIT na tabbela DETALHE_KIT que ainda não existe no banco de dados...
Imagino que seja uma possibilidade, me corrijam se eu estiver errada.


Olá Marisiana,

Então testei dessa forma que você me indicou porém agora ele está mostrando um erro diferente

Project CMS.exe raised exception class EDBClient with message 'No corresponding master record found'.


Eu acredito que esse erro seja pelo fato de eu estar utilizando master detail, que no caso o TClientDataSet do KIT passa a ter um campo a mais alem de seus valores que é o TSELDataSet do DETALLE_KIT que é um tipo DataSet. Mais não sei como resolver isso.
GOSTEI 0
POSTAR