Array per passare valori ad una query

venerdì 16 giugno 2006 - 01.04

ricky Profilo | Junior Member

Ciao a tutti, ho due problemini che non riesco a risolvere...

prima riassumo la situazione

ho una griglia, in questa griglia ho un check che consente all'utente di selezionare determianati elementi (DDT), al click di un pulsante io devo emettere automaticamente una fattura per tutti gli elementi selezionati

quindi vorrei salvare in un array gli ID dei DDT e poi eseguire la query di select per tutti elementi (ID) contenuti nell'array

primo problema:

come posso fare in modo che vettElencoDDT contenga solo elementi uguali a true??

come ho fatto io (usando j) mi ritrovo in una situazione del tipo
vettElencoDDT[0] null
vettElencoDDT[1] null
vettElencoDDT[2] 27
vettElencoDDT[3] null
vettElencoDDT[4] 50

in invece vorrei avere
vettElencoDDT[0] 27
vettElencoDDT[1] 50


for (int j = 0; j < elencoDDT; j++)
{
DataRowView rigaDDT = (DataRowView)gwDDT.GetRow(j);
if (Convert.ToBoolean(rigaDDT["Chk"]) == true)
vettElencoDDT [j] = rigaDDT["ID"].ToString();
}


detto questo, il mio vero problema è:

come posso associare all'array una query del tipo

select * from .... where Data <= dataprova and ID = ... elementi dell'array vettElencoDDT


Grazie a tutti!

Brainkiller Profilo | Guru

>for (int j = 0; j < elencoDDT; j++)
>{
>DataRowView rigaDDT = (DataRowView)gwDDT.GetRow(j);
>if (Convert.ToBoolean(rigaDDT["Chk"]) == true)
>vettElencoDDT [j] = rigaDDT["ID"].ToString();
>}

Ciao,
in questo caso ti basta usare un altro contatore ossia trasformare il tuo codice in questo modo:

int q=0; for (int j = 0; j < elencoDDT; j++) { DataRowView rigaDDT = (DataRowView)gwDDT.GetRow(j); if (Convert.ToBoolean(rigaDDT["Chk"]) == true) vettElencoDDT [q++] = rigaDDT["ID"].ToString(); }

Così non ci saranno più i valori null.

>detto questo, il mio vero problema è:
>come posso associare all'array una query del tipo
>select * from .... where Data <= dataprova and ID = ... elementi
>dell'array vettElencoDDT

In questo caso non ci sono molti modi per farlo, devi fare un ciclo sul vettore vettElencoDDT e concatenare le condizioni in modo che la stringa risulti del tipo:

= 35 and ID = 48 and ID = 49 and ID = 51 ecc.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

ricky Profilo | Junior Member

Grazie David,

per la prima risposta: ok perfetto

per la seconda volevo fare qualche cosa del tipo WHERE... IN (ID1, ID2, ID3 ... elementi dell'array) è corretto?? (mi sembra piu "leggibile" rispetto ai vari AND su ogni ID)

il mio problema è ottenere una stringa con ID,ID,ID,ID, partendo dal mio array

Thanks

Brainkiller Profilo | Guru

>il mio problema è ottenere una stringa con ID,ID,ID,ID, partendo
>dal mio array

Fai un ciclo for da i=0 a i < array.Length e concateni una stringa.

string a = "";
a = a + " ID = " + (valore dall'array);

ecc.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

ricky Profilo | Junior Member

Grazie per l'aiuto!!

Ora mi è chiaro come generare il ciclo

ma tu consigli di usare X AND (come nel tuo esempio) oppure un WHERE IN (...)

Thanks
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5