Fórum Integridade Referencial #219834
11/03/2004
0
Pessoal !!!!
Como faço uma integridade referencial usando interbase IBX e também usando o interbase dbexpress
EX: Tenho um cadastro de clientes
Tenho lançamento de pedidos para este cliente
Se caso eu excluir este cliente e houver pedido para este cliente como poderia tratar no banco ou no programa dizendo que existem pedidos para este cliente
Rogério
Como faço uma integridade referencial usando interbase IBX e também usando o interbase dbexpress
EX: Tenho um cadastro de clientes
Tenho lançamento de pedidos para este cliente
Se caso eu excluir este cliente e houver pedido para este cliente como poderia tratar no banco ou no programa dizendo que existem pedidos para este cliente
Rogério
Rogeranalista
Curtir tópico
+ 0
Responder
Posts
11/03/2004
Cabelo
Uma das saídas seria vc criar chaves estrangeiras nos campos que as tabelas se relacionam..
Por exemplo :
Se vc Tiver uma Tabela de Emissão de Ordem de Serviços OS0100 com o campo C_COD_CLI, entre outros..
e uma tabela CA0100 de Cadastro de Clientes com o campo primário C_COD_CLI..
vc deveria criar uma ForeingKey na tabela OS0100, com o campo C_COD_CLI fazendo referência á tabela CA0100 no campo C_COD_CLI..
se vc tiver clientes cadastrados na tabela OS0100 e tentar excluir da tabela CA0100 o cliente do respectivo código, o banco de dados irá emitir uma mensagem falando sobre a foreingKey e não irá deixar excluir enquento houver registros na tabela OS0100 que contém o campo C_COD_CLI = ao que vc está tentando excluir..
Depois disso é só vc tratar o erro..
sem mais
Cabelo
Por exemplo :
Se vc Tiver uma Tabela de Emissão de Ordem de Serviços OS0100 com o campo C_COD_CLI, entre outros..
e uma tabela CA0100 de Cadastro de Clientes com o campo primário C_COD_CLI..
vc deveria criar uma ForeingKey na tabela OS0100, com o campo C_COD_CLI fazendo referência á tabela CA0100 no campo C_COD_CLI..
se vc tiver clientes cadastrados na tabela OS0100 e tentar excluir da tabela CA0100 o cliente do respectivo código, o banco de dados irá emitir uma mensagem falando sobre a foreingKey e não irá deixar excluir enquento houver registros na tabela OS0100 que contém o campo C_COD_CLI = ao que vc está tentando excluir..
Depois disso é só vc tratar o erro..
sem mais
Cabelo
Responder
Gostei + 0
11/03/2004
Rômulo Barros
Utilizando DbExpress e Interbase, faça o seguinte:
Código do botão para excluir um cliente:
:twisted: :twisted: :twisted: :twisted:
Ou ainda:
Adicione ´SQLExpr´ na cláusula USES:
Código do botão para excluir um cliente:
... Procedure BtnDelCli.Click(Sender : TObject); Begin If(TabelaDetalhesPedidos.Locate(´Cod_Cli´),TabelaClientesCOD_CLI.AsInteger,[])Then showmessage(´Não pode excluir. Existem Associações´) Else TabelaClientes.Delete; End; ...
Ou ainda:
Adicione ´SQLExpr´ na cláusula USES:
Procedure BtnDelCli.Click(Sender : TObject); Var Qry : TSqlQuery; Begin Qry := TSqlQuery.Create(Nil); Try Qry.SqlConnection := DataModule.Conexao; Qry.Sql.Add(´SELECT * FROM TABELA_DETALHES_PEDIDOS´); Qry.Sql.Add(´WHERE COD_CLI = :parCOD_CLI´); Qry.Params.ParamByName(´parCOD_CLI´).AsString := TabelaClientesCOD_CLI.AsString; Qry.Open; If(Qry.RecordCount > 0)Then ShowMessage(´Não pode excluir. Manter consistencia´) Else TabelaClientes.Delete; Except On Exc : Exception Do Showmessage(´Erro: ´+Exc.Message); End; End;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)