"Select" con il database Acces utilizzando VB.Net

mercoledì 22 agosto 2007 - 14.16

guli Profilo | Junior Member

Salve a tutti, non so come si fa la select di due dati in un database access utilizzando Visual basic Dot net...io ho scritto del codice che cmq nn è funzionante

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

sapete come si fa?
Grazie e ciaooooo

Ciciu Profilo | Senior Member

Ciao.
Guarda la modifica alla "if" qui sotto. BTW, se metti un breakpoint dopo aver creato il Reader (ExecuteReader) , puoi verificare il contenuto del reader stesso, che dovrebbe contenere i dati relativi alla tabella PERSONA.
Non sono sicurissimo della sintassi VB, non lo conosco un gran che...
Ciao - FabioG

> Dim m_conn As OleDbConnection
>m_conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
>Data Source=C:\Documents and Settings\utente\Documenti\UTENTI.mdb;Persist
>Security Info=False")
> Dim m_cmd As OleDbCommand
>
>
> m_cmd = m_conn.CreateCommand
>
> m_conn.Open()
> m_cmd = m_conn.CreateCommand
> If m_conn IsNot Nothing Then
> Dim username As String
> Dim password As String
>
>
>
>username = "SELECT Username FROM Persona WHERE [Username]='"
>+ TextBox1.Text + "' AND [Pass] ='" + TextBox2.Text + "'"
>password = "SELECT Password FROM Persona WHERE [Username]='"
>+ TextBox1.Text + "' AND [Pass] ='" + TextBox2.Text + "'"
>
>Dim OleDbCommand = New OleDbCommand("SELECT * FROM Persona WHERE
>[Username]='" + TextBox1.Text + "' AND [Passw] ='" + TextBox2.Text
>+ "'", m_conn)
>Dim myReader As OleDbDataReader = OleDbCommand.ExecuteReader
> If myReader.HasRows Then

Questa "if" non ha alcun senso. Stai confrontando il codice utente con un comando SQL !

>If ((TextBox1.Text.ToString = username) And (TextBox2.Text.ToString
>= password)) Then

If (TextBox1.Text = myReader(0).tostring()) and (TextBox2.Text = myReader(1).toString()) then

>Dim Utente_Reagistrato As New Form_Utente
> Me.Visible() = False
> Utente_Reagistrato.Show()
>end if
>
>sapete come si fa?
>Grazie e ciaooooo

Fabio G

guli Profilo | Junior Member

Ciao, allora innanzitutto si ferma su
If (TextBox1.Text = myReader(0).ToString()) And (TextBox2.Text = myReader(1).ToString()) T
e mi da l'eccezzione "Nessun dato esistente per la riga/colonna.."
Poi se faccio come dici tu vedendo il valore mi da "Nothing".....
Bhooooooooooooo

Ciciu Profilo | Senior Member

Prova a sostituire il codice così (nota l'utilizzo della variabile "cmd") :

>Dim cmd as OleDbCommand = New OleDbCommand("SELECT * FROM Persona WHERE
>[Username]='" + TextBox1.Text + "' AND [Passw] ='" + TextBox2.Text
>+ "'", m_conn)

>Dim myReader As OleDbDataReader = cmd.ExecuteReader()

Così dovrebbe funzionare. Tu avevi scritto solo "Dim OleDbCommand = new..."

E non puoi, ovviamente, scrivere "OleDbCommand.ExecuteReader()", poiché non è istanziata.
Ciao - FabioG

Se hai ancora problemi fai un reply, ma non posso risponderTi prima di domani (sono in vacanza e connesso via GPRS...).

Fabio G

guli Profilo | Junior Member

allora secondo me il problema sta su questo pezzo di codice
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Persona WHERE [Username]='" + TextBox1.Text + "' AND [Pass] ='" + TextBox2.Text + "'", m_conn)

xkè il suo valore è nothing, e poi sull' istruzione
If (TextBox1.Text = myReader(0).tostring()) and (TextBox2.Text = myReader(1).toString()) then

mi da "Nessun dato esistente per la riga/colonna."...


Ciciu Profilo | Senior Member

Ciao.
Anziché testare myReader.HasRows, devi caricare il reader. Questo puoi farlo con myReader.Read(), che restituisce un boolean : True se ha trovato dati.
Altrimenti, l'interrogazione del reader stesso Ti restituisce un'exception, in quanto non è carico.

If myReader.Read() Then
Console.WriteLine(myReader.Item(1).ToString)
End If

Ti conviene comunque fare una modifica alla Tua query : anziché reperire TUTTI i dati della tabella, recupera solo ciò che Ti serve effettivamente, quindi UserName e Password, in modo da poterli indirizzare come indice 0 e 1. In questo modo, eventuali modifiche aklla struttura della tabella non Ti obbligheranno a rivisitare il codice.

Ciao - FabioG
Fabio G

guli Profilo | Junior Member

Scusami nuovamente ma trovo un altro errore nell'istruzione
m_cmd.ExecuteNonQuery()
e mi da "Testo del comando non impostato per l'oggetto comando."
Ti scrivo il codicexkè nn capisco dove può essere l'errore:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie sempre e ciao

guli Profilo | Junior Member

allora errore trovato il codice giusto è...per chi gli interessa

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5