Sto cercando di implementare un programma in VB il quale interfacciandosi su un database Access 2000,il quale mi permetta di effettuare un JOIN fra due entità una la quale mi identifica i Proprietari di esercizi commerciali e l'altra mi identifica gli Esercizi commerciali steffi; ovviamente si sta parlando di una relazione 1:N, inquanto un proprietario può avere èiù di un negozio. Lasciando stare comunque problematiche di carattere relazionale, le quali mi sembrano corrette, ho avuto due problemi durante l'implementazione di VB, le quali vengono di seguito riportate in elenco:

1.
Avrei voluto effettuare una connessione al database senza DSN, ma ho un messaggio d'errore il quale mi afferma: "IMPOSSIBILE TROVARE ISAM INSTALLABILE"; premetto che uso un SO Windows 2000 Prof. e che ho installato SP5, quindi in teoria non dovrei avere tale messaggio d'errore, comunque per ovviare temporaneamente a tale problematica ho effettuato una connessione DSN. Sotto viene riportata la sintassi accusata d'errore a Run-Time:

codice:
    'APRE LA CONNESSIONE
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=SchedaE.mdb"
    cn.ConnectionString = "Driver=Microsoft Access Driver (*.mdb);DBQ=SchedaE.mdb"
    cn.Open
2.
Nella visualizzazione di una sola tabella con una semplice SELECT non ho problemi, diversamente si verifica per il JOIN fra le entità Proprietari ed Esecizi inquanto al momento dell'esecuzione della query ho il seguente messaggio d'errore: "[Microsoft][Driver ODBC Microsoft Access] Parametri Insufficienti. Previsto 1."
Già vi anticipo che la riga incriminata è nel momento in cui si tenta di eseguire il metodoto Open dell'oggetto rs il quale identifica il recordset
codice:
Private Sub cmdEsercizi_Click()
    'CIUDO IL VECCHIO RECORDSET
    rs.Close
    
    'JOIN
    rs.Source = "SELECT * FROM Proprietari,Esercizi WHERE Proprietari.IdProprietaro = Esercizi.IdProprietario"
    rs.Open	'ERRORE!!!!
    rs.MoveFirst
    
    'VISUALIZZA IL CONTENUTO NEL FORM
    txtDenominazione.Visible = True
    txtDenominazione.Text = rs.Fields("Denominazione")
End Sub

Per completezza e maggior chiarezza sotto viene riportato l'intero listato del programma:

Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub Form_Load()
    'APRE LA CONNESSIONE
    Set cn = New ADODB.Connection
    'cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=SchedaE.mdb"
    'cn.ConnectionString = "Driver=Microsoft Access Driver (*.mdb);DBQ=SchedaE.mdb"
    cn.Open "DSN=SchedaE"
    
    'APRE UN RECORDSET
    Set rs = New ADODB.Recordset
    rs.ActiveConnection = cn
    rs.CursorType = adOpenStatic
    rs.Source = "SELECT * FROM Proprietari"
    rs.Open
    rs.MoveFirst
    
    'VISUALIZZA IL CONTENUTO NEL FORM
    DisplayCurrentRecord
End Sub

Private Sub cmdEsercizi_Click()
    'CIUDO IL VECCHIO RECORDSET
    rs.Close
    
    'JOIN
    rs.Source = "SELECT * FROM Proprietari,Esercizi WHERE Proprietari.IdProprietaro = Esercizi.IdProprietario"
    rs.Open
    rs.MoveFirst
    
    'VISUALIZZA IL CONTENUTO NEL FORM
    txtDenominazione.Visible = True
    txtDenominazione.Text = rs.Fields("Denominazione")
End Sub

Sub DisplayCurrentRecord()
    Dim i As Integer
    Dim s As String
    
    If rs.BOF Then rs.MoveFirst
    If rs.EOF Then rs.MoveLast
    
    Clear
    
    txtCognome.Text = rs.Fields("Cognome")
    txtNome.Text = rs.Fields("Nome")
    
End Sub

Private Sub cmdNext_Click()
    rs.MoveNext
    DisplayCurrentRecord
End Sub

Private Sub cmdPrevious_Click()
    rs.MovePrevious
    DisplayCurrentRecord
End Sub

Sub Clear()
    txtCognome.Text = ""
    txtNome.Text = ""
End Sub

Private Sub cmdEsci_Click()
    'CHIUDE TUTTO
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    End
End Sub
P.S. All'università usiamo MYSQL è possibile interfacciarlo con VB? Se si qualcuno ha qualche esempio da farmi studiare?