Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74

    vb2010: confrontare due tabelle mdb

    Salve a tutti.
    Avrei la necessita di eseguire un confronto di tutti i valori di un campo di una tabella con tutti quelli di un'altra.

    Ho provato a scrivere questo codice:

    codice:
    Dim cn As OleDbConnection
            Dim cmd_inca, cmd_righe As OleDbCommand
            Dim dr_inca, dr_righe As OleDbDataReader
            Dim x As String
            Dim i, i2 As Integer
            cn = New OleDbConnection(stringaconn)
    
    
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
    
    
            cmd_t1 = New OleDbCommand("SELECT * FROM tab1", cn)
            cmd_t2 = New OleDbCommand("SELECT * FROM tab2", cn)
            dr_t1 = cmd_inca.ExecuteReader
            dr_t2 = cmd_righe.ExecuteReader
            While dr_t1.Read()
                i = i + 1
                While dr_t2.Read()
                    i2 = i2 + 1
                    If dr_t1("campo1") = dr_t2(campo2) Then
    
                        ' ... istruzioni
                    End If
                End While
            End While
    ma di fatti questo codice svolge un solo ciclo (ovvero quello interno) uscendo alla fine della lettura di tutti i record della tabella dr_t2.

    Non capisco come risolvere.
    Grazie
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Mi sembra di ricordare che una delle caratteristiche di ExecuteReader è che non si possono fare altre operazioni sulla connessione se prima non si è terminato di leggere tutti i record tramite la funzione Read.
    Tu hai (giustamente) collegato sia cmd_t1 sia cmd_t2 alla stessa connessione (cioè "cn") ma quando fai il primo Read su dr_t1 poi non puoi fare Read su dr_t2

    Se vai alla pagina http://msdn.microsoft.com/it-it/libr...vs.110%29.aspx a metà circa trovi scritto:

    codice:
    Notare che quando è aperto un oggetto DataReader,
    l'oggetto Connection viene utilizzato esclusivamente da quell'oggetto DataReader.
    Non sarà possibile eseguire alcun comando per l'oggetto Connection, 
    né creare un altro DataReader fino a quando il DataReader originale non viene chiuso.
    Devi quindi creare due connessioni.

    Sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    Devi quindi creare due connessioni.
    Oppure usare due datatable

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Ok. Grazie ad entrambi
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.