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:
2.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
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
P.S. All'università usiamo MYSQL è possibile interfacciarlo con VB? Se si qualcuno ha qualche esempio da farmi studiare?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