Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022

    Problema con clausola WHERE IN

    Proprio non capisco.
    Se scrivo questa semplice stringa SQL per l'update di una tabella di Access
    codice:
    "UPDATE frutta SET quantita = (quantita + 1) WHERE frutto IN ('arancia', 'mela', 'pera')"
    tutto funziona correttamente.

    Se invece scrivo
    codice:
    "UPDATE frutta SET quantita = (quantita + 1) WHERE frutto IN (" & listaFrutta & ")"
    dove listaFrutta è una stringa come la seguente: "'arancia', 'mela', 'pera'"

    In questo secondo caso viene aggiornato solo il record che fa riferimento ad arancia.
    Boh!

    Grazie per l'attenzione.

  2. #2
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    up!
    A nessuno di voi è mai capitata una cosa del genere? :master:

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    262
    allora fai nel primo modo, no ?

  4. #4
    Utente di HTML.it L'avatar di Ottavio
    Registrato dal
    Jul 2000
    Messaggi
    286
    non c'è motivo per non funzionare ...
    a meno che nn formatti male listaFrutta
    (tipo un apice di meno, di troppo....)
    postacelo
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Era un mondo adulto, si sbagliava da professionisti....
    <P.Conte>
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  5. #5
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Quella che segue è la funzione che uso allo scopo sopra indicato.

    codice:
    Function incr_decr_Aree(toDo As String, listaAree As String) As Boolean
    			
    Dim theQuery As String
    								
    Select Case toDo
    				
    Case "incr": 'incrementa
    
    theQuery = "UPDATE frutta SET quantita = (quantita + 1) WHERE frutto IN ('"  
    theQuery += listaAree.Replace(",", "', '")
    theQuery += "')"
     
    
    Case "decr": ' decrementa
    	' query in costruzione
    
    End Select
    			
    Dim areeCmd As new oleDbCommand(theQuery, Con)
    						
    							
    	Try
    		
     		Con.Open()
    				
    	Dim confirm As Integer	
    				
    	confirm = areeCmd.ExecuteNonQuery()
    					 
    		Con.Close()
    				
    If confirm > 0 Then
    				
    Return True
    
    Else
    
    Return False															
    End If	 	  	  				
    				
    	Catch
    
    
    End Try
    					
    	
    End Function
    Il primo parametro indica quale query utilizzare.
    Per ora sto testando la prima: "incr"
    Il secondo parametro (listaAree) rileva il risultato di una checkboxList, che ovviamente è del tipo: mela, pera, arancia ecc.
    Ho anche provato con un response write a stapare la query, ed è corretta! Ricevo cioè un risultato come questo

    codice:
    UPDATE frutta SET quantita = (quantita + 1) WHERE frutto IN ('mela', 'pera', 'arancia')
    ma come al solito viene aggiornato solo il record corrispondente al primo elemento, in questo caso 'mela'.
    Ci sto diventando matto. Anch'io non capisco come sia possibile.

    Grazie ragazzi.

  6. #6
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022

    Risolto

    Sono un coglio..

    L'errore era qui

    theQuery += listaAree.Replace(",", "', '")

    Non mi accorgevo che dopo la prima virgola mancava uno spazio
    La soluzione è questa:

    theQuery += listaAree.Replace(", ", "', '")

    Scusate

  7. #7
    Utente di HTML.it L'avatar di Ottavio
    Registrato dal
    Jul 2000
    Messaggi
    286
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Era un mondo adulto, si sbagliava da professionisti....
    <P.Conte>
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.