USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Validar relacionamento de tabelas (arquivos) ?
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 02/10/2009 17:24 hs         
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.

http://www.vilmarbro.com.br
   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 08/10/2009 17:47 hs         

ahhh, bolei um esquema legal de validação, 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

TÓPICO EDITADO
   
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página