Errore query troppo complessa

giovedì 12 luglio 2007 - 13.48

denis.basei Profilo | Senior Member

Ho un'applicazione cscritta in vb 2005 che fra le varie cose che fa deve selezionare da una tabella di un db SQL server v.8 tutti i records dove un certo campo ha un valore pari ad uno dei valori contenuti in una stringa. Faccio un esempio

dim sql as string = "select CODPROG FROM PROG WHERE CODPROG IN (" & ElencoOrdini & ")"
cmd.commandText=sql
dim drProg as OleDBDataReader = cmd.ExecuteReader()


ElencoOrdini vale ad esempio "'10112456','10125896",..."


Qualche volta mi viene ritornato un errore "query troppo complessa". Premetto che il numero di valori contenuti in ElencoOrdini può essere anche un centinaio.


qualche suggerimento?


Grazie
Denis

lbenaglia Profilo | Guru

>Premetto che il numero di valori contenuti in ElencoOrdini può
>essere anche un centinaio.


>qualche suggerimento?
Rivedere DA ZERO tutta la questione, dato che una IN su 100 elementi ha veramente poco senso.

Altri suggerimenti non ne esistono

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

denis.basei Profilo | Senior Member

Ciao Lorenzo, perchè dici che una IN su 100 elementi ha poco senso?
Non ho salvato i numeri d'ordine su una tabella perchè il programma può essere eseguito contemporaneamente da n persone per cui dovrei avere tante tabelle dove salvare i numeri d'ordine quante sono le persone anche se, scrivendo, mi rendo contro che potrei associare ad ogni utente un codice, metterlo in chiave assieme al numero d'ordine, ed usare una sola tabella. Che ne dici?

Una curiosità... come fai ad essere sempre presente ed a rispondere alle domande così velocemente? Da quale pianeta arrivi? ... SCHERZO, parlo solo per invidia della tua sapienza!


Ciao

Denis

lbenaglia Profilo | Guru

>Ciao Lorenzo, perchè dici che una IN su 100 elementi ha poco
>senso?

Perché equivarrebbe a scrivere:

SELECT col1...coln FROM tabella WHERE colx = x OR colx = y OR colx = z.... per ben 100 volte

Il piano di esecuzione risultante sarebbe orribile

>Non ho salvato i numeri d'ordine su una tabella perchè il programma
>può essere eseguito contemporaneamente da n persone per cui dovrei
>avere tante tabelle dove salvare i numeri d'ordine quante sono
>le persone anche se, scrivendo, mi rendo contro che potrei associare
>ad ogni utente un codice, metterlo in chiave assieme al numero
>d'ordine, ed usare una sola tabella. Che ne dici?
Mi spiace, dovrei essere sul progetto per capire a fondo il problema...

>Una curiosità... come fai ad essere sempre presente ed a rispondere
>alle domande così velocemente?
Mi clono

>Da quale pianeta arrivi?
Brianza

>parlo solo per invidia della tua sapienza!
Oh mamma, si vede proprio che non mi conosci...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

mat_tgn Profilo | Newbie

Anche io ho problemi con questa storia della query troppo complessa su Vb.net 2010
non riesco a trovare soluzioni in nessun modo, chiedo il vostro aiuto!


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Dunque, aggiungendo una nuova riga funziona tutto correttamente ,
mentre invece cercando di aggiornare una riga già presente mi dà errore sull'update e non riesco a capire il perchè.
Ho provato anche a modificare solo 1 campo commentando i for per paura che non volesse aggiornare così tanti campi, invece mi dà errore anche modificando solo 1 campo. Non mi dà errore solo se chiamo l'update senza cambiare niente
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