Ir para conteúdo
Fórum Script Brasil
  • 0

Validar relacionamento de tabelas (arquivos) ?


vilmarbr

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

ahhh, bolei um esquema legal de validação usando access, onde os dados são postos apenas as chaves no momento que gravo no txt.

esquema montado junto com pessoal do trampo, segue abaixo.

grato por quem visitou o tópico.

-----

Private Sub Consistencia_t53_t52()

On Error GoTo Handle_Error

Dim objRS As ADODB.Recordset 'Objeto de recordset

Dim strSQL As String 'String com código SQL

'Criar tabelas temporárias, só para esta consistência

strSQL = "select codigo into tabela_053_t from tabela_053"

Call g_objConexaoAccess.Execute(strSQL)

strSQL = "select codigo into tabela_052_t from tabela_052"

Call g_objConexaoAccess.Execute(strSQL)

'Fazer a consistência

strSQL = "delete from tabela_053_t where codigo in (select codigo from tabela_052_t)"

Call g_objConexaoAccess.Execute(strSQL)

strSQL = "select codigo from tabela_053_t where codigo is not null"

Set objRS = New ADODB.Recordset

Call objRS.Open(strSQL, g_objConexaoAccess, adOpenForwardOnly, adLockReadOnly, adCmdText)

If Not objRS.EOF Then

While Not objRS.EOF

'Grava o log com problemas - NOK

strSQL = "insert into log_consistencia(consistencia,campo,valor,observacao) " _

& "values('TABELA053->TABELA052','codigo','" & Val(objRS("codigo")) & "','Consistência NOK')"

Call g_objConexaoAccess.Execute(strSQL)

objRS.MoveNext

Wend

ElseIf objRS.EOF Then

'Grava o log sem problemas - OK

strSQL = "insert into log_consistencia(consistencia,campo,valor,observacao) " _

& "values('TABELA053->TABELA052','','','Consistência OK')"

Call g_objConexaoAccess.Execute(strSQL)

End If

Set objRS = Nothing

'Apagar tabelas temporárias

strSQL = "drop table tabela_053_t"

Call g_objConexaoAccess.Execute(strSQL)

strSQL = "drop table tabela_052_t"

Call g_objConexaoAccess.Execute(strSQL)

Exit Sub

Handle_Error:

If Err.Number = -2147217865 Then 'Table 'xxxxx' does not exist.

Resume Next

Else

MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "frmConsistencia / Consistencia_t53_t522"

End If

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...