78 messaggi dal 27 ottobre 2006
Ho due tabelle, Categorie e Articoli.
Il risultato che voglio ottenere è questo:
Categoria 1
- Articolo 1
- Articolo 2
- Articolo 3

Categoria 2
- Nessun articolo inserito

Categoria 3
- Articolo 4
- Articolo 5


Il codice che uso è questo:

Dim comm2 As New System.Data.OleDb.OleDbCommand()
comm2.CommandText = "SELECT *FROM Categorie order by Ordine;"

Dim objReaderXML As OleDbDataReader = comm2.ExecuteReader()

Dim Categoriaa As String
Dim IdCategoria As Integer

While objReaderXML.Read

Categoriaa = objReaderXML.Item("Categoria")
IdCategoria = objReaderXML.Item("IDCategoria")

Dim commArt As New System.Data.OleDb.OleDbCommand()
commArt.CommandText = "SELECT * FROM Articoli WHERE IdCategoria= @IdCategoria"
commArt.Parameters.AddWithValue("@Idcategoria", IdCategoria)

Dim objReaderXML2 As OleDbDataReader = commArt.ExecuteReader()

Dim Articolo As String

If Not objReaderXML2.Read Then
response.write("No articoli")
Else
While objReaderXML2.Read
Articolo = objReaderXML2.Item("Articolo")
End While
End If
End While
======================================================================

Se tolgo il controllo dell'objreaderxml2.read ovviamente non mi scriverà mai "nessun articolo", se al contrario lo lascio invece mi viene saltato il primo articolo di ogni categoria..
mi sa che mi sto perdendo in un bicchiere d'acqua!
72 messaggi dal 04 agosto 2008
Ciao,
quando scrivi
If Not objReaderXML2.Read Then 

stai comunque facendo andare avanti di un record il reader per cui, quando ci sono articoli, la lettura successiva ovvero la prima del ciclo
While objReaderXML2.Read 

sarà già al secondo articolo.

Hai sicuramente molti modi per ovviare al problema: io proverei a togliere
If Not objReaderXML2.Read Then
response.write("No articoli")
Else 

e nel ciclo While mettere un contatore.

Finito il ciclo While se il contatore è rimasto a zero vuol dire che non c'erano record e puoi stampare "No articoli".

Spero di essere stato chiaro.

Salvo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.