Array

venerdì 06 gennaio 2006 - 20.23

Marc1982 Profilo | Newbie

Buona sera a tutti,
Ho un classe "Contatti" all'interno di questa classe oltre ai vari get set degli attributi c'è anceh un metedo "RicercaNome" il quale mi restituisce un Vettore di tipo CONTATTI.
Il metodo funziona perfettamente il problema sorge quando dal risultato della ricerca non esce fuori nulla.Io ho ovviato a questo inconveniete semplicemente facendo tronare un solo elemento di tipo CONTATTI vuoto.
Vorei però sapere se c'è un modo diverso perche si io facevo:

Dim c As Contatti
msgbox(c.RicercaNome("PIPPO").Length
Mi da il seguente errore:
Riferimento a un oggetto non impostato su un'istanza di oggetto.

Come posso fare per non far uscire quest'errore e non dover passare un elemento nel vettore VUOTO???

Grazie MIlle
Marco
LAscio sotto il pezzo di classe in questione



Public Function RicercaNome(ByVal NomeR As String) As Contatti()
Dim Connessione As OleDbConnection
Connessione = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Documents and Settings\Administrator\Desktop\Prove_Vb\Agenda\Agenda.mdb")
Try
Connessione.Open()
Catch Errore As Exception
MsgBox(Errore.Message)
End Try
Dim sqlRicerca As String = "Select * From Rubrica where Nome='" + Replace(NomeR, "'", "''") + "'"
Dim rs As OleDbDataReader
Dim Cmd As OleDbCommand
Try
Cmd = New OleDbCommand(sqlRicerca, Connessione)
rs = Cmd.ExecuteReader
Dim VettoreContatti() As Contatti
Dim DimVet As Integer = 0
Dim flag As Boolean = False

While rs.Read
ReDim Preserve VettoreContatti(DimVet)
VettoreContatti(DimVet) = New Contatti(rs("nome"), rs("cognome"), rs("tipologia"))
If rs("telefono").GetType.ToString <> "System.DBNull" Then
VettoreContatti(DimVet).Telefono = rs("telefono")
End If
If rs("indirizzo").GetType.ToString <> "System.DBNull" Then
VettoreContatti(DimVet).Get_Set_Indirizzo = rs("indirizzo")
End If
If rs("cellulare").GetType.ToString <> "System.DBNull" Then
VettoreContatti(DimVet).Get_Set_Cellulare = rs("Cellulare")
End If
flag = True
DimVet = DimVet + 1
End While
If flag = False Then
ReDim Preserve VettoreContatti(DimVet)
VettoreContatti(DimVet) = New Contatti("", "", 0)
End If
Return VettoreContatti
Catch Errore As Exception
MsgBox(Errore.Message)
End Try
End Function

Cteniza Profilo | Guru

Ti consiglio di provare con un dataset / dataview.
Ho preparato un piccolo esempio risolto con solo 2 righe di codice, tempo di realizzazione 5 minuti.



Cteniza Profilo | Guru

Dimenticavo, per fare la prova hai bisogno del database "northwind" di access versione italiana.


Marc1982 Profilo | Newbie

Grazie mille....funziona perfettamente :)

Marco

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