Oppure

Loading
01/12/10 16:15
spiderman
salve,
Vi espongo il mio problema, programmando con visual basic 2008 e sqlserver 2005 sto facendo una form clienti, che ha diversi textbox, e da una con il nome "COGNOMETextBox" ha una datagridview con il nome "DataGridView1" che si apre in base alla ricerca del cognome tramite una querry con un LIKE, alla ricerca del cognome posso avere la possibilità di andare con la freccia in giù è poter selezionare il cognome che desidero (di conseguenza si aggiorna anche una datagridview con il nome "CLIENTIDataGridView" posta in basso alla form) alla pressione del tasto invio,
i dati relativo a quel cognome si dovrebbero posizionare nelle textbox relativi è questo non avviene.
Ed un altro errore che non sono riuscito a risolvere che in presenza di dati vuoti nella tabella del database mi dice 'Cast non valido dal tipo DBnull al tipo string'.
Mi date una mano cortesemente Vi sarò grato!
vi posto il codice:


Private Sub COGNOMETextBox_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles COGNOMETextBox.KeyUp 


Dim Riga As DataGridViewRow 
Try 
If e.KeyCode = Keys.Escape Then 
DataGridView1.Visible = False 
Exit Sub 
End If 
If e.KeyCode = Keys.Enter Then 
Me.TAB1_CLIENTITableAdapter.Fill(Me.DataSet1.TAB1_CLIENTI) 
Riga = DataGridView1.CurrentRow() 
Me.COGNOMETextBox.Text = Riga.Cells(2).Value 

DataGridView1.Visible = False 
Exit Sub 
End If 
If e.KeyCode = Keys.Down Then 
DataGridView1.Focus() 
Else 

Me.TAB1CLIENTIBindingSource.Filter = "COGNOME LIKE '" & Replace(CStr(COGNOMETextBox.Text), "'", "''") & "%'" 
Me.TAB1CLIENTIBindingSource.Sort = "COGNOME Desc" 
DataGridView1.Visible = True 
End If 
Catch ex As Exception 
MessageBox.Show("Si è verificato il seguente errore: " & ex.Message, "Attenzione", MessageBoxButtons.OK) 
End Try 
End Sub 

Private Sub DataGridView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown 
Dim Riga As DataGridViewRow 

Try 
If e.KeyCode = Keys.Escape Then 
DataGridView1.Visible = False 
Exit Sub 
End If 
If e.KeyCode = Keys.Enter Then 
Me.TAB1_CLIENTITableAdapter.Fill(Me.DataSet1.TAB1_CLIENTI) 
Riga = DataGridView1.CurrentRow() 
Me.IDTextBox.Text = Riga.Cells(1).Value 
Me.COGNOMETextBox.Text = Riga.Cells(2).Value 
Me.NOMETextBox.Text = Riga.Cells(3).Value 
Me.DENOMINAZIONETextBox.Text = Riga.Cells(4).Value 
' Me.INDIRIZZO_RESIDENZATextBox.Text = Riga.Cells(4).Value 

DataGridView1.Visible = False 
Exit Sub 
End If 
If e.KeyCode = Keys.Down Then 
DataGridView1.Focus() 
Else 

Me.TAB1CLIENTIBindingSource.Filter = "COGNOME LIKE '" & Replace(CStr(COGNOMETextBox.Text), "'", "''") & "%'" 
Me.TAB1CLIENTIBindingSource.Sort = "COGNOME Desc" 
DataGridView1.Visible = True 
End If 
Catch ex As Exception 
MessageBox.Show("Si è verificato il seguente errore: " & ex.Message, "Attenzione", MessageBoxButtons.OK) 
End Try 


End Sub

vi allego anche una immagine
Ultima modifica effettuata da spiderman 01/12/10 16:20
aaa
02/12/10 9:32
Il Totem
Semplicemente non puoi stipare un dato ti tipo DBNull in un array di caratteri. Bisogna controllare prima che il campo non sia null, o alternativamente modificare il codice di design in modo che il valore restituito sia di tipo nullable (o semplicemente string in questo caso). Ecco un articolo a tal proposito:
dotnetlombardia.org/blogs/totem/archive/2010/11/06/…
aaa
05/12/10 8:44
spiderman
grazie totem per avermi risposto,
aspettavo a rispondere al messaggio per vedere se ci riuscivo ma mi sono accorto che ancora ho problemi, come dovvrei fare secondo te...
aaa