View Full Version : [VB.NET] Prima connessione ad ACCESS - aiutooooo
OrcaAssassina
19-02-2007, 15:05
Oggi è il primo giorno di vb.net
Gia sono in difficoltà
Non riesco a collegare un semplice DB in ACCESS
Ho letto in giro, ma non ho capito molto bene.
In VB6 utilizzavo questo metodo, codice nel modulo:
-------------------------------------------------------
Option Explicit
Public CnConnessioni As ADODB.Connection
Public rsRecordSetConnessioni As ADODB.Recordset
-------------------------------------------------------
Sub ApriConn()
Dim strCONN As String
Dim Connessione As String
strCONN = "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=xxxx;"
strCONN = strCONN & "Data Source=" & App.Path & "\Archivio.mdb;"
strCONN = strCONN & "Jet OLEDB:Engine Type=5;"
Set CnConnessioni = New ADODB.Connection
CnConnessioni.Open strCONN
End Sub
-------------------------------------------------------
Poi nella form MDI aprivo la connessione
Private Sub MDIForm_Load()
ApriConn
End Sub
-------------------------------------------------------
Cosi non mi funziona
Io adesso sto provando tutto nella form principale senza usare i moduli, una volta fatta la prima connessione posso dividere il codice e creare un modulo da utilizzare per tutti i progetti
Riuscite a farmi un esempio pratico, di connessione
Ciao e grazieeeeeee
miguelito
19-02-2007, 16:25
Purtroppo VB.NET è completamente diverso da VB6, quindi le difficoltà sono normali non preoccuparti. :)
Le indicazioni che ti do si riferiscono all'apertura di una connessione ad un database OLEDB in tecnologia ADO.NET:
-----------------------------------------------------------------------
Imports System.Data.OleDb
Dim connessioneDatabase As New OleDbConnection()
connessioneDatabase.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=NomeDelTuoDatabaseCompletoDiPath.mdb"
Try
connessioneDatabase.Open()
Catch ex As OleDbException
erroreDatabase = "Errore Occorso nell'apertura della connessione"
End Try
-----------------------------------------------------------------------
Mi raccomando ad inserire il nome del tuo database completo di percorso affinche possa essere aperto correttamente. Metti un breakpoint sul try vai in debug e controlla, step by step, se per caso vai in catch. Se così fosse accertati che il database non sia protetto da password, nel qual caso dovrai modificare la stringa di connessione aggiungendo nome utente e password.
Spero che tutto fili per il meglio. Ciao :D
OrcaAssassina
19-02-2007, 16:34
Purtroppo VB.NET è completamente diverso da VB6, quindi le difficoltà sono normali non preoccuparti. :)
Le indicazioni che ti do si riferiscono all'apertura di una connessione ad un database OLEDB in tecnologia ADO.NET:
-----------------------------------------------------------------------
Imports System.Data.OleDb
Dim connessioneDatabase As New OleDbConnection()
connessioneDatabase.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=NomeDelTuoDatabaseCompletoDiPath.mdb"
Try
connessioneDatabase.Open()
Catch ex As OleDbException
erroreDatabase = "Errore Occorso nell'apertura della connessione"
End Try
-----------------------------------------------------------------------
Mi raccomando ad inserire il nome del tuo database completo di percorso affinche possa essere aperto correttamente. Metti un breakpoint sul try vai in debug e controlla, step by step, se per caso vai in catch. Se così fosse accertati che il database non sia protetto da password, nel qual caso dovrai modificare la stringa di connessione aggiungendo nome utente e password.
Spero che tutto fili per il meglio. Ciao :D
Ok ottimo funziona
Per non utilizzare un percorso assoluto ma uno relativo????
Ciao e grazieeeeeeeee
ho visto che nel tuo esempio che non ti funzionava usavi
app.path
adesso devi utilizzare
Application.StartupPath
per sapere la path dell'eseguibile del tuo programma. ;)
OrcaAssassina
23-02-2007, 08:54
Ok ottimo funziona
Per non utilizzare un percorso assoluto ma uno relativo????
Ciao e grazieeeeeeeee
Niente....falso allarme
Non mi funziona....ho scritto cosi
-----------------------------------------------
Imports System.Data
Imports System.Data.OleDb
-----------------------------------------------
Dim connessioneDatabase As New OleDbConnection()
connessioneDatabase.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDBatabase Password=Ciao; Data Source=H:\Documenti\Database\VB\Vb.net\Prove\Connessione\Connessione\Archivio.mdb"
Try
connessioneDatabase.Open()
Catch ex As OleDbException
erroreDatabase = "Errore Occorso nell'apertura della connessione"
End Try
---------------------------------------------------------
Cosi facendo non si connette
In pratica quando si connette ad un DB di access nella stessa cartella si vede il file che crea access di accesso ai dati, con l'icona di un DB con un lucchetto, a me questa iconcina non la crea, quindi significa che non sono connesso
Non capisco dove sbaglio
Ciao e grazieeeeee
Ascolta....proprio se non ti chiedo tanto....potresti realizzarmi un miniprogetto.
DB + form con connessione e me la mandi????
Ciao e grazieeeeeeeee
miguelito
24-02-2007, 10:02
Nell'esempio che mi proponi, vedo che il database è protetto da password, ed è questo il vero problema perchè se non lo fosse, l'esempio che ti ho dato funzionerebbe perfettamente. Spulciando l'MSDN ho infatti notato che la stringa di connessione al provider, nel caso di un file protetto da password varia nel seguente modo:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb; Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;
Nella stringa c'è l'aggiunta di un campo che come vedi fa riferimento ad un file con estensione mdw. Tale file non contiene altro che l'impostazione di accesso al database per i vari utenti che lo andranno poi ad utilizzare. Esso può essere creato In Access cliccando su: Strumenti-->Protezione-->Impostazione Guidata Protezione. Si avvierà così un wizard che ti guiderà passo passo nell'impostazione di tutti i criteri di protezione (Nome utente, password) da attribuire al database e a tutti gli oggetti (tabelle, query ...) in esso contenuti. Creato questo file modifica la stringa di connessione come su citato e vai in esecuzione, dovrebbe funzionare tutto a dovere. In tutti i casi ti ricordo che la connessione va testata SEMPRE in debug verificando che non vada in catch, e non andando a spulciare se vengano aperti o meno file temporanei da parte del motore Microsoft Jet.
Fammi sapere, Ciaoooooooooo :D
OrcaAssassina
24-02-2007, 10:25
Ci sono riuscito!!!!!!
Leggendo qua e là, ho scoperto che il file di access va messo in bin/debug
cosi facendo posso usare i percorso relativo.
------------------------------------------------------
Imports System.Data
Imports System.Data.OleDb
Module Connessione
Public CnConnessioni As OleDbConnection
Sub ApriConn()
Dim connStr As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=Ciao;"
connStr &= "Data Source=" & Application.StartupPath & "\Archivio.mdb;"
connStr &= "Jet OLEDB:Engine Type=5;"
CnConnessioni = New OleDbConnection(connStr)
CnConnessioni.Open()
' MsgBox(connStr)
End Sub
End Module
Cosi adesso mi funziona.....ho un problema adesso con una query
rsRecordSet = New ADODB.Recordset
rsRecordSet.Open("SELECT * From [Utenti] order by [NomeCognome]", CnConnessioni, ADODB.CursorTypeEnum.adOpenStatic, TrueDataLite80.LockTypeEnum.adLockOptimistic)
Mi dice che TrueDataLite80 non è stata dichiarata
Hai un altro modo per scrivere tale query????
Ciao e grazieeeeeeee
Stiwy.NET
27-02-2007, 10:40
Ci sono riuscito!!!!!!
Leggendo qua e là, ho scoperto che il file di access va messo in bin/debug
cosi facendo posso usare i percorso relativo.
------------------------------------------------------
Imports System.Data
Imports System.Data.OleDb
Module Connessione
Public CnConnessioni As OleDbConnection
Sub ApriConn()
Dim connStr As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=Ciao;"
connStr &= "Data Source=" & Application.StartupPath & "\Archivio.mdb;"
connStr &= "Jet OLEDB:Engine Type=5;"
CnConnessioni = New OleDbConnection(connStr)
CnConnessioni.Open()
' MsgBox(connStr)
End Sub
End Module
Cosi adesso mi funziona.....ho un problema adesso con una query
rsRecordSet = New ADODB.Recordset
rsRecordSet.Open("SELECT * From [Utenti] order by [NomeCognome]", CnConnessioni, ADODB.CursorTypeEnum.adOpenStatic, TrueDataLite80.LockTypeEnum.adLockOptimistic)
Mi dice che TrueDataLite80 non è stata dichiarata
Hai un altro modo per scrivere tale query????
Ciao e grazieeeeeeee
prova così:
Dim cn As New OleDb.OleDbConnection("stringa connessione")
cn.Open()
Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM Tabella", cn)
Dim ds As New DataSet
da.Fill(ds, "nomeTabella")
Informati sul funzionamento dei DataSet, Datatable e DataRow sono degli oggetti comodissimi per quanto riguarda l'uso dei dati provenienti da Database/XML o altro.
OrcaAssassina
27-02-2007, 11:34
prova così:
Dim cn As New OleDb.OleDbConnection("stringa connessione")
cn.Open()
Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM Tabella", cn)
Dim ds As New DataSet
da.Fill(ds, "nomeTabella")
Informati sul funzionamento dei DataSet, Datatable e DataRow sono degli oggetti comodissimi per quanto riguarda l'uso dei dati provenienti da Database/XML o altro.
Dopo provo il tutto che adesso vado al lavoro
Intanto ti faccio un'altra richiesta cosi provo il tutto
Adesso che in teoria ho il mio recordset lo devo passare ad una griglia
Io uso la JANUS.
Il componenti è GridEx1....come faccio a passargli i dati????
In Vb6 cois li passavo
Set GridEX1.ADORecordset = rsRecordSet
Ciao e grazieeeeee
Stiwy.NET
27-02-2007, 14:46
Dopo provo il tutto che adesso vado al lavoro
Intanto ti faccio un'altra richiesta cosi provo il tutto
Adesso che in teoria ho il mio recordset lo devo passare ad una griglia
Io uso la JANUS.
Il componenti è GridEx1....come faccio a passargli i dati????
In Vb6 cois li passavo
Set GridEX1.ADORecordset = rsRecordSet
Ciao e grazieeeeee
:mbe: cos'è la JANUS? :eek:
GridEx??? sarebbe un datagrid?
prova con il databind...
OrcaAssassina
27-02-2007, 23:03
:mbe: cos'è la JANUS? :eek:
GridEx??? sarebbe un datagrid?
prova con il databind...
Si è una griglia...uno spettacolo
Questo è il link se vuoi vedere cosa riesce a fare
http://www.janusys.com/
miguelito
28-02-2007, 15:55
Il componenti è GridEx1....come faccio a passargli i dati????
In Vb6 cois li passavo
Set GridEX1.ADORecordset = rsRecordSet
Ciao e grazieeeeee
Ho avuto a che fare con la griglia Janus ;) , e se ricordo bene la sintassi dovrebbe rimanere invariata.
TrusterDesa
02-03-2007, 10:14
scusate l'ignoranza più totale (sto apprendendo Vb.net da pochi giorni) ma ho visto che ci sono delle parti guidate per collegarsi con il metodo ADO.NET direttametne dalle finestre di vb.net, non si fa prima che non stendere il codice?
Stiwy.NET
02-03-2007, 13:00
scusate l'ignoranza più totale (sto apprendendo Vb.net da pochi giorni) ma ho visto che ci sono delle parti guidate per collegarsi con il metodo ADO.NET direttametne dalle finestre di vb.net, non si fa prima che non stendere il codice?
Io ho sempre fatto tutto via codice, non so neanche se si possa fare da finestra di progettazione.
TrusterDesa
02-03-2007, 13:54
bhe sul lato destro della finestra di progettazione c'e' l'opzione per interagire e connettersi al database....però penso che per l'estrazione dei singoli dati forse serve usare il codice!
Io sono alle prime armi...ho solo provato ad importare una data base access in Vb2005 (anche perchè in quanto ad estrazioni dati in base al valore ancora non ne so niente)
Stiwy.NET
02-03-2007, 16:57
ahhh ma tu parli dell'esplora server... no, non serve per programmare, può essere utile per i gestire i file XSD, ma non credo che serva ad altro...
se trovi il modo di utilizzarlo diversamente dillo perchè sono curioso.bhe sul lato destro della finestra di progettazione c'e' l'opzione per interagire e connettersi al database....però penso che per l'estrazione dei singoli dati forse serve usare il codice!
Io sono alle prime armi...ho solo provato ad importare una data base access in Vb2005 (anche perchè in quanto ad estrazioni dati in base al valore ancora non ne so niente)
TrusterDesa
02-03-2007, 19:25
Consente di stabilire la connessione a un database e scegliere gli oggetti di database per l'applicazione. L'opzione crea un dataset
dicevo questo :) non so la mia era una supposizione.... sono ancora sn alle prime armi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.