Logo UGIdotNET

Discussione 'Table.Rowi[i].ItemArray[j]'

# Pubblicato il 06 set 2004 17.12 - Rispondi
Enrico Zerilli
Table.Rowi[i].ItemArray[j]
Ciao a tutti,
ho un comportamento un pò strano con l'array che contiene tutti gli elemnti di una riga di una tabella. La tabella in esame viene letta da un file XML. Ciclando su tutte le righe della tabella posso catturare gli elemnti della tabella quindi del file XML. Il problema è che i=0 ho la posizione prezzo al j=5 per i=1 ho la posizione prezzo per j=9. Come è possibile tutto ciò?
Dove stà l'errore?

Grazie ina anticipo

Enrico
# Pubblicato il 06 set 2004 17.28 - Rispondi
Enrico Zerilli
Re: Table.Rowi[i].ItemArray[j]
Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:

PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ;

ottengo tutte le informzioni inerenti ad una tabella di prezzi.

Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch ho notato che il valore che cerco è nella posizione 9, cioè per:

PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ;

Come mai?
Come posso risolvere questa situazione?

# Pubblicato il 06 set 2004 17.41 - Rispondi
Michele Betelli
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:
>
> PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ;
>
> ottengo tutte le informzioni inerenti ad una tabella di prezzi.
>
> Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il
> dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch
> ho notato che il valore che cerco è nella posizione 9, cioè per:
>
> PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ;
>
> Come mai?
> Come posso risolvere questa situazione?
>
ciao,
a te serve solo recuperare il valore o sbaglio?

cosi non funziona?
PREZZO = myDDTLine.Rows[i]["nome o indice colonna"] ;
# Pubblicato il 07 set 2004 21.20 - Rispondi
Raffaele Rialdi
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:
>
> PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ;
>
> ottengo tutte le informzioni inerenti ad una tabella di prezzi.
>
> Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il
> dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch
> ho notato che il valore che cerco è nella posizione 9, cioè per:
>
> PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ;
>
> Come mai?

Veramente non ho ancora capito.
Comunque ItemArray non dovrebbe servirti. myDDTLine.Rows[i][j] è l'espressione sufficiente.
Stampati tutta la riga (iterando j) e guardati i valori...

Raffaele
# Pubblicato il 07 set 2004 9.11 - Rispondi
Enrico Zerilli
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:41 Michele Betelli wrote:
> on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> > Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:
> >
> > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ;
> >
> > ottengo tutte le informzioni inerenti ad una tabella di prezzi.
> >
> > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il
> > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch
> > ho notato che il valore che cerco è nella posizione 9, cioè per:
> >
> > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ;
> >
> > Come mai?
> > Come posso risolvere questa situazione?
> >
> ciao,
> a te serve solo recuperare il valore o sbaglio?
>
> cosi non funziona?
> PREZZO = myDDTLine.Rows[i]["nome o indice colonna"] ;
anche con questa espressione ha lo stesso comportamento: per i=0 mi dà il dato,
per i=1,2,3 non mi legge alcun valore, anche se nel file XML è presente, per i=4 mi dà il dato corretto e infine per i=5 non mi legge alcun valore.

Mi puoi dare qualche altra idea?
# Pubblicato il 08 set 2004 10.01 - Rispondi
Enrico Zerilli
Re: Table.Rowi[i].ItemArray[j]
on 7. Sep 2004 21:20 Raffaele Rialdi wrote:
> on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> > Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:
> >
> > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ;
> >
> > ottengo tutte le informzioni inerenti ad una tabella di prezzi.
> >
> > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il
> > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch
> > ho notato che il valore che cerco è nella posizione 9, cioè per:
> >
> > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ;
> >
> > Come mai?
>
> Veramente non ho ancora capito.
> Comunque ItemArray non dovrebbe servirti. myDDTLine.Rows[i][j] è l'espressione
> sufficiente.
> Stampati tutta la riga (iterando j) e guardati i valori...
>
> Raffaele

il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il valore nella posizione corretta.

Sono stato più chiaro?
# Pubblicato il 08 set 2004 23.33 - Rispondi
Raffaele Rialdi
Re: Table.Rowi[i].ItemArray[j]
> il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la
> condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro
> la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il
> valore nella posizione corretta.
>
> Sono stato più chiaro?

Mi spiace ma sinceramente non ho proprio capito. Ma non puoi stamapre tutti i valori e vedere se sono stati caricati giusti? Tieni conto che ItemArray non ti serve a nulla (serve solo ad averli sotto forma di array, e quindi una copia dei dati).

Raffaele
# Pubblicato il 09 set 2004 8.45 - Rispondi
Enrico Zerilli
Re: Table.Rowi[i].ItemArray[j]
on 8. Sep 2004 23:33 Raffaele Rialdi wrote:
> > il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la
> > condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro
> > la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il
> > valore nella posizione corretta.
> >
> > Sono stato più chiaro?
>
> Mi spiace ma sinceramente non ho proprio capito. Ma non puoi stamapre tutti i valori e vedere se
> sono stati caricati giusti? Tieni conto che ItemArray non ti serve a nulla (serve solo ad averli
> sotto forma di array, e quindi una copia dei dati).
>
> Raffaele

il problema è appunto questo ... che i dati corretti non sono sempre nella stessa posizione. In un riga sono nella posizione 5 in altre nella posizione 9 ...

Enrico
# Pubblicato il 10 set 2004 10.55 - Rispondi
Raffaele Rialdi
Re: Table.Rowi[i].ItemArray[j]
> il problema è appunto questo ... che i dati corretti non sono sempre nella stessa posizione. In un riga
> sono nella posizione 5 in altre nella posizione 9 ...

Adesso ho capito ... finalmente :-)
Se i dati vengono caricati nella datatable nel modo sbagliato il problema è del file xml di partenza.
Ti consiglio di creare una datatable vuota, aggiungere le colonne a mano con Columns.Add, poi aggiungere qualche riga e infine salvare l'intero dataset su disco. A questo punto compari questo file con l'altro e vedi dov'è l'errore.

Raffaele

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185