VALIDAR RELACIONAMENTO DE TABELAS ARQUIVOS ?

VILMARBR 02/10/2009 17:22:52
#324279
Validar relacionamento de tabelas (arquivos) ?
Então, tentei bolar um esquema aqui, mas num tá dando certo ....
Pensei nisto:
- Tenho tabela filho e tabela pai;
- Faço um select count(campo_chave) da tabela filho p/ ver qtos. registros eu tenho retornados desta tabela;
- Faço outro select count(tab_filho.campo_chave) da tabela filho relacionada com tabela pai p/ ver qtos. registros eu tenho retornados deste relacionamento.

>> RESULTADO:
- No 2º select estão sendo retornados mais registros do que no 1º select !!


Como são arquivos soltos, num tenho como validar pelo relacionamento de um banco de dados, como SQL Server, Oracle, etc..


Código:

[ô]>>INÍCIO: Consistência tabela018->tabela019
strSQL = [Ô]select count(codigo) as cont from tabela018[Ô]
Set objRS = New ADODB.Recordset
Call objRS.Open(strSQL, g_objConexaoAccess, adOpenDynamic, adLockReadOnly, adCmdText)
lngContTabFilho = Val(objRS([Ô]cont[Ô]))
Set objRS = Nothing

strSQL = [Ô]select count(ix18.codigo) as cont from tabela018 ix18, tabela019 ix19 where [Ô] _
& [Ô](ix18.codigo = ix19.codigo)[Ô]

Set objRS = New ADODB.Recordset
Call objRS.Open(strSQL, g_objConexaoAccess, adOpenDynamic, adLockReadOnly, adCmdText)
lngContTabFilhoPai = Val(objRS([Ô]cont[Ô]))
Set objRS = Nothing

If lngContTabFilho = lngContTabFilhoPai Then
MsgBox [Ô]Consistência tabela018->tabela019: [Ô] & vbCrLf & [Ô]Dados validados com sucesso![Ô]
Else
MsgBox [Ô]Consistência tabela018->tabela019: [Ô] & vbCrLf & [Ô]Dados validados com problemas![Ô]
End If
[ô]>>FIM: Consistência tabela018->tabela019

Obs.: Tabela 019 é pai e tabela 018 é filho.

Grato.
TECLA 12/10/2009 21:03:50
#325107
Poste o CONTEÚDO (de teste) da tabela FILHO e da tabela PAI para tornar o tópico mais claro.
EDERMIR 13/10/2009 06:58:34
#325119
Resposta escolhida
Baseado nesta linha:
strSQL = [Ô]select count(ix18.codigo) as cont from tabela018 ix18, tabela019 ix19 where (ix18.codigo = ix19.codigo)[Ô]


Você está contando a tabela filho todas as vezes que encontrar um código na tabela pai. Portanto ACUMULANDO valores.

Qual validação você quer fazer?
Quer saber se todos os registros de FILHO tem relacionamento em PAI? Então tente este código:
strSQL = [Ô]select count(ix18.codigo) as cont from tabela018 ix18 where ix18.codigo IN (select * from tabela019 ix19)[Ô]

VILMARBR 05/10/2010 15:29:31
#354462
Obrigado!
Tópico encerrado , respostas não são mais permitidas