PDA

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

lanello
20-02-2007, 00:29
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