Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Web Services, XML
Ciclo while ed istanze
martedì 11 luglio 2006 - 09.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 09:43
Ho un ultimo problema cioè:
Estraendo i dati con la select il risultato lo invio a valorizzare una Public Structure, però l'estrazione è all'interno di un ciclo while così:
While objReader2.Read
i = i + 1
'(compila.Com.valore è l'istanza della Public Structure)
compila.Com.Nome = objReader2.GetString(2) 'Sede
compila.Com.Indirizzo = objReader2.GetString(4) 'indirizzo
compila.Com.telefono = objReader2.GetString(5) 'telefono
compila.Com.Email = objReader2.GetString(8) 'email
compila.Com.Cap = CapCom
compila.Com.Comune = Comune
compila.Com.SiglaProvincia = Provincia
End If
End While
il mio problema è che istanziando la public structure con:
dim compila as new publicstructure
prima del ciclo while ad ogni giro del ciclo riscrive i valori nella struttura e quindi il risultato che mi appare alla fine è uno solo....
(il risultato della funzione poi lo richiamo con Return compila)
un aiutino su come istanziare una nuova istanza della struttura mantenendo tutti i risultati?
Grazie in anticipo
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 11 lug 2006 - 09:55
certo ovviemente ....potresti usare una matrice di Structure.
C'è solo un capitano !!!!!!
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 10:01
GRAZIE per la risposta
>certo ovviemente ....potresti usare una matrice di Structure.
>C'è solo un capitano !!!!!!
Così?
Private Structure guitar
Friend mmake As String
Friend mmodel As String
Friend myear As Short
Public Sub New(ByVal make, ByVal model, ByVal year)
Me.mmake = make
Me.mmodel = model
Me.myear = year
End Sub
Public Property make() As String
Get
make = mmake
End Get
Set(ByVal Value As String)
mmake = Value
End Set
End Property
End Structure
Private myStruct As guitar
Private al(2) As guitar
myStruct = New guitar("Gibson", "Les Paul", 1958)
al(0) = myStruct
myStruct = New guitar("Fender", "Jazz Bass", 1964)
al(1) = myStruct
myStruct = New guitar("Guild", "Bluesbird", 1971)
al(2) = myStruct
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 10:47
fatto ma mi da questo errore:
System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
in SERVS1Class.SERVS1(String ist)
L'ho creato così:
Dim Mystructure As NomeStruttura
Dim al() As NomeStruttura
inizio ciclo while--------
i = i + 1
Mystructure = New NomeStruttura
al(i) = Mystructure
al(i).Com.Cap = CapCom
al(i).Com.Comune = Comune
al(i).Com.SiglaProvincia = Provincia
fine ciclo while----------------
Return Mystructure
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 11 lug 2006 - 11:27
Private al(2) As guitar
al(0)= new guitar
C'è solo un capitano !!!!!!
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 11:48
Niente IDEM, ti incollo il codice non è tanto e magari è più esplicativo delle mie parole:
Public Function SERVS1(ByVal ist As String) As SERVS1Result
If Not risolvi = "" Then
Dim Mystructure As SERVS1Result '<----------------------
Dim al() As SERVS1Result '<-------------------------
Dim pc As String
Dim i As Integer = 0
Dim x As Integer = 0
Dim objCmd2 As New OleDbCommand("StringaConnessione", objConn)
Dim objReader2 As OleDbDataReader
objReader2 = objCmd2.ExecuteReader
While objReader2.Read
pc = (objReader2.GetString(9))
If pc = "Y" Then
i = i + 1
Mystructure = New SERVS1Result '<--------------------
al(i) = New SERVS1Result '<------------------------------
al(i).Com.Nome = objReader2.GetString(2) 'Sede
al(i).Com.Cap = CapCom
al(i).Com.Comune = Comune
al(i).Com.SiglaProvincia = Provincia
End While
objConn.Close()
objConn.Dispose()
al(i).NumeroCom = i
Return Mystructure '<-----------------------------
End If
End Function
La Public Structure che uso:
Public Structure SERVS1Result
Public NumeroCom As Integer
Public Com As SCom
Public Structure SCom
Public Nome As String
Public Cap As String
Public Comune As String
Public SiglaProvincia As String
End Structure
End Structure
Ti ringrazio della pazienza e del tempo
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 11 lug 2006 - 14:52
che errore ti da ???
C'è solo un capitano !!!!!!
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 16:33
System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
in SERVS1Class.SERVS1(String ist)
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mar 11 lug 2006 - 17:03
Ho fatto così
Dim Com As Array = Array.CreateInstance(GetType(SERVS1Result), 100)
ma mi da questo errore:
Assegnazione ad associazione tardiva a un campo di tipo di valore 'SComm' non valida quando il risultato di un'espressione ad associazione tardiva è 'SComm'.
quando arrivo qui:
while
Com(i).Commissariati.Nome = pec
end while
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mer 12 lug 2006 - 14:47
Perchè!!! mi manca solo questo poi ho finitoooooooooooo aaaaaah che urto!
altre idee?
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mer 12 lug 2006 - 14:55
scusa ma se fai
Dim al() As SERVS1Result
al(0) = new SERVS1Result
ti da errore ???
C'è solo un capitano !!!!!!
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mer 12 lug 2006 - 15:20
>scusa ma se fai
>
>Dim al() As SERVS1Result
>
>al(0) = new SERVS1Result
>
>
ma scusa, ma tu metti al(0) nel senso di al(i) nel ciclo while?
poi se dopo metto così :
Return Com()
mi dice :
Il numero di indici è inferiore al numero di dimensioni della matrice indicizzata.
comunque si mi dice:
Riferimento a un oggetto non impostato su un'istanza di oggetto.
kiwi
Profilo
| Newbie
45
messaggi | Data Invio:
mer 12 lug 2006 - 15:31
L'ho messo così:
Start of function>
[.....code....]
If Not risolvi = "" Then
objConn.Open()
Dim Com() As SERVS1Result '<---------------------------///
Dim pc As String
Dim i As Integer = 0
Dim x As Integer = 0
Dim c As Integer
Dim objCmd2 As New OleDbCommand("Stringa di connessione", objConn)
Dim objReader2 As OleDbDataReader
objReader2 = objCmd2.ExecuteReader
While objReader2.Read
pc = (objReader2.GetString(9))
If pc = "Y" Then
i = i + 1
Com(i) = New SERVS1Result'<-----------------------------------///
Com(i).Comm.Nome = objReader2.GetString(2) 'Sede
Com(i).Comm.Indirizzo = objReader2.GetString(4) 'indirizzo
Com(i).Comm.telefono = objReader2.GetString(5) 'telefono
Com(i).Comm.Email = objReader2.GetString(8) 'email
Com(i).Comm.Cap = CapCom
Com(i).Comm.Comune = Comune
Com(i).Comm.SiglaProvincia = Provincia
End If
End While
objConn.Close()
objConn.Dispose()
Com(i).NumeroComm = i '<------------------------------------------///
For c = 0 To Com.Length '<-------------------------------///
Return Com(c) '<-----------------------------///
Next
End If
End Function
<End Function>
<Start Public Structure>
Public Structure SERVS1Result
Public NumeroComm As Integer
Public Comm As SComm
Public Structure SComm
Public Nome As String
Public Indirizzo As String
Public Cap As String
Public Comune As String
Public SiglaProvincia As String
Public Email As String
Public telefono As String
End Structure
End Structure
Torna su
Stanze Forum
Elenco Threads
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 !