Visualizzare testo in textbox da db a seconda di un valore

martedì 28 ottobre 2008 - 00.26

ertulio Profilo | Senior Member

Salve, quando alcune cose non si fanno sempre si dimenticano e quindi devo ricorrere ancora una volta a voi. Qualche tempo fa feci una semplice pagina in vb.net che visualizzava in delle textbox i valori presi da un db a seconda di quello che cera visualizzato in una label. Oggi devo ripetere questa cosa, ma proprio non riesco a ricordarmi come feci, nessuna riga di codice ma feci tutto con le funzioni messe a disposizioni di visual studio. Qualcuno potrebbe aiutarmi??
Spiego meglio:

Ho dei record ID|Nome |Cognome|Citta|
5|peppe |Pallino| Roma
6|Anty| Prugna| lecce


quando apro la form cè una label che visualizza un valore preso dal db in questo caso l'ID ad esempio 5
Vorrei che nelle text box dela form nome textbox, cognometextbox e cittatextbox comparissero gli altri valori del record Come faccio?? non ricordo proprio

Grazie 1000




http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ciao
mi dici solo l'estensione del tuo db ed il nome della tabella da dove vuoi recuperare i dati?

Ciao

PS
è probabile che ti risponda domani

ertulio Profilo | Senior Member

Si scusa il db è access quindi mdb la tabella è per esempio utenti
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ciao
In allegato trovi un mini progetto in VB 2005 Express che ti spiega come:
1. Recuperare i dati da un db
2. Inserire i dati in db
3. Eliminare i dati dal db
4. Caricare i dati del db in una DataGridView

Se non ti è chiaro qualcosa chiedi pure
Ciao

ertulio Profilo | Senior Member

scusa ma questo esempio non centra nulla con quello che cerco io.

Io ho una label con un valore e delle textbox, vorrei che a seconda del valore della label vadano a finire nelle textbox i valori del db con indice il valore della label
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ciao

Spiego meglio:

Ho dei record ID|Nome |Cognome|Citta|
5|peppe |Pallino| Roma
6|Anty| Prugna| lecce

Per recuperare Peppe Pallino e Roma dalla tua tabella devi inviare al database una richiesta (query) così composta

query = "SELECT ID, Nome, Cognome, Citta FROM nome_tabella WHERE ID = @ID" oppure WHERE Nome = "peppe" oppure WHERE Cognome = "Pallino"

in questo caso @ID è un parametro che devi aggiungere al tuo Command che assumerà il valore della tua LABEL.

cmd.Parameters.Add("@ID", OleDbType.Integer).Value = MIA LABEL

dopodichè l'oggetto "Dim drCARRELLO As OleDbDataReader = cmd.ExecuteReader" ti restituisce 4 righe

drCARRELLO.Item(0).ToString = ID
drCARRELLO.Item(1).ToString = Nome
drCARRELLO.Item(2).ToString = Cognome
drCARRELLO.Item(4).ToString = Citta

non ti resta altro che assegnare questi oggetti alle tue TextBox

Me.cognometextbox.Text = drCARRELLO.Item(2).ToString

Questo e tutto ciò che ho scritto sul progetto che ti ho inviato, è quello che io utilizzo normalmente per recuperare i dati da un db.mdb (Access)

L'altra strada è quella di seguire gli automatismi che VB ti mette a disposizione, in tal caso leggiti questo:
http://msdn.microsoft.com/it-it/library/6ckyxa83.aspx

Ciao


ertulio Profilo | Senior Member

Scusa allora questa è la mia stringa di select

connection = New OleDbConnection
Dim connectionString As String = "Data Source=" + Application.StartupPath + "\Lavoro.mdb; Provider=Microsoft.Jet.OLEDB.4.0;" connection.ConnectionString() = connectionString
connection.Open()
Dim command As New OleDbCommand
command.Connection() = connection
command.CommandText() = "SELECT * FROM Lavoro WHERE ID = '" + Label3.Text + "'"


Ora come faccio ad assegnare la select alle textbox??
http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ciao
Ok
Allora:
con quella che hai scritto tu
command.CommandText() = "SELECT * FROM Lavoro WHERE ID = '" + Label3.Text + "'" 'Ad esempio = 6
Selezioni il Record completo
Quindi se la tua tabella è

>Ho dei record ID|Nome |Cognome|Citta|
>5|peppe |Pallino| Roma
>6|Anty| Prugna| lecce

Prima mandi in esecuzione il command e predisponi un DataReader per leggere i dati

Dim myDataReader As OleDbDataReader = command.ExecuteReader

Poi vai a leggere i risultati della query

myDataReader .Item(0).ToString = ID 'Dovrebbe essere = 6
myDataReader .Item(1).ToString = Nome 'Dovrebbe essere = Anty
myDataReader .Item(2).ToString = Cognome 'Dovrebbe essere = Prugna
myDataReader .Item(4).ToString = Citta 'Dovrebbe essere = lecce

quindi

myTextBoxCitta.Text = myDataReader .Item(4).ToString

e così per gli altri

Se invece vuoi che ti restituisca (ad esempio) solo la citta

command.CommandText() = "SELECT Citta FROM Lavoro WHERE ID = '" + Label3.Text + "'" 'Ad esempio = 6
Dim myDataReader As OleDbDataReader = command.ExecuteReader

Avrai un DataReader con una colonna ed un record

Quindi

myTextBoxCitta.Text = myDataReader .Item(0).ToString 'Prima l'Item era 4

Ti consiglio di dare anche un'occhiata qui:
http://msdn.microsoft.com/it-it/library/haa3afyz(VS.80).aspx

Inoltre come ormai ho imparato anch'io ti consiglio di usare le query con paramtri

command.CommandText() = "SELECT * FROM Lavoro WHERE ID = '" + Label3.Text + "'" 'Ad esempio = 6
diventa:
command.CommandText() = "SELECT * FROM Lavoro WHERE ID = @ID" 'Ad esempio = 6
command.Parameters.Add("@ID", OleDbType.Integer).Value = Label3.Text

Qui trovi le spiegazioni
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx


Ciao





ertulio Profilo | Senior Member

Ma quando scrivo


myDataReader.Item(0).ToString = ID
myDataReader.Item(1).ToString = Nome
myDataReader.Item(2).ToString = Cognome
myDataReader.Item(4).ToString = Citta


Mi dice l'espressione è un valore non può essere la destinazione di un assegnazione



http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ciao

Mai, era solo per spiegarti la corrispondenza tra il DataReader e le colonne del db
Per ottenere i valori divi assegnare alle textbox il valore del DataReader corrispondente

myTextBox.Text = myDataReader .Item(X).ToString

dove X è l'indice della "colonna" ovvero nel tuo caso:

myTextBoxID.Text = myDataReader .Item(0).ToString
myTextBoxNome.Text = myDataReader .Item(1).ToString
myTextBoxCognome.Text = myDataReader .Item(2).ToString
myTextBoxCitta.Text = myDataReader .Item(3).ToString

Ciao


ertulio Profilo | Senior Member

Ho scritto cosi:

connection = New OleDbConnection
Dim connectionString As String = "Data Source=" + Application.StartupPath + "\Lavoro.mdb; Provider=Microsoft.Jet.OLEDB.4.0;" connection.ConnectionString() = connectionString
connection.Open()


Dim command As New OleDbCommand
command.Connection() = connection
command.CommandText() = "SELECT * FROM Lavoro WHERE ID = '" + Label3.Text + "'"


Dim myDataReader As OleDbDataReader = command.ExecuteReader

nomeTextBox.Text = myDataReader.Item(0).ToString
cognomeTextBox.Text = myDataReader.Item(1).ToString


ma alla riga

"Dim myDataReader As OleDbDataReader = command.ExecuteReader" dice

Tipi di dati non corrispondenti nell'espressione criterio.

http://www.risorsefantacalcio.it

Risorse per tutti gli appassionati di fantacalcio da cui prelevare news, probabili formazioni, voti del corriere e gazzetta e tanhto altro.

alexmed Profilo | Guru

Ti ho "stravolto" un pò le cose seguendo un mio schema

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

Così non dovresti avere problemi!
Ciao
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