Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Assurdo problema con query di UPDATE.

    Assurdo problema con query UPDATE.

    Salve, questo è il codice:

    codice:
    for each item in arr1
       arr2 = split(item,"-")
       A = arr2(0)
       B = arr2(1)
       C = arr2(2)
    
    nr_A = ubound(arr1)
    nr_B = ubound(arr2)
    nr_C = (UBound(arr1)-LBound(arr1)+1)
    
    strSQL = "UPDATE table set "
    strSql = strSql & " nr = "& nr_C &", "
    strSql = strSql & " nb = "& B &", " 
    strSql = strSql & " nc = '"& C &"', "
    strSql = strSql & " na = '"& A &"' "
    strSql = strSql & " where nr = "& strNr
    
    conn.execute strSQL
    next
    La query stampa regolarmente:

    codice:
    UPDATE table set nr = 3, nb = 102, nc = 'MASSIMINO', na = 'MASSIMINO, ALBERTO, GUALTIERO', where nr = 39
    
    UPDATE table set nr = 3, nb = 103, nc = 'ALBERTO', na = 'MASSIMINO, ALBERTO, GUALTIERO', where nr = 39
    
    UPDATE table set nr = 3, nb = 104, nc = 'GUALTIERO', na = 'MASSIMINO, ALBERTO, GUALTIERO', where nr = 39
    Ma nella table di access nel campo nc mi ritrovo soltanto GUALTIERO e nel campo nb soltanto 104, com'è possibile ????

  2. #2
    intanto toglierei la virgola prima del where

  3. #3
    scusa una cosa

    codice:
    where nr = 39
    tutti e tre gli update modificano il record con nr=39, e te ogni volta fai set nr=3...where nr=39...dopo la prima update non troiverà + nessun record con nr=39

  4. #4
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da santino83_11_04
    scusa una cosa

    codice:
    where nr = 39
    tutti e tre gli update modificano il record con nr=39, e te ogni volta fai set nr=3...where nr=39...dopo la prima update non troiverà + nessun record con nr=39
    Non ho capito... in sostanza dal form modifica mi arriva questo valore:

    codice:
    I-101-ALESSANDRO, O-102-ALBERTO, I-103-PAOLO
    Splitto per - e per virgola sino ad ottenere:

    codice:
    I
    101
    ALESSANDRO
    
    O
    102
    ALBERTO
    
    I
    103
    PAOLO
    Questi valori devono sostiturie quelli già presenti nei record nr = 39.

    Mi segui? La query si stampa correttamente e poi nella table che non so che succede mi aggiorna tutti e tre record con l'ultimo...

  5. #5
    e allora perchè questo?:

    codice:
    set nr = 3
    e poi se il campo è lo stesso ogni volta andrà a sovrascrivere no? ovvero la seconda update sovrascrive la prima e la terza la seconda...

  6. #6
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Scusa mi accorgo di un errore nel copia/incolla della query che è questa (quella giusta):

    codice:
    for each item in arr1
       arr2 = split(item,"-")
       A = arr2(0)
       B = arr2(1)
       C = arr2(2)
    
    nr_A = ubound(arr1)
    nr_B = ubound(arr2)
    nr_C = (UBound(arr1)-LBound(arr1)+1)
    
    strSQL = "UPDATE table set "
    strSql = strSql & " nr = "& nr_C &", "
    strSql = strSql & " nb = "& B &", " 
    strSql = strSql & " nc = '"& C &"', "
    strSql = strSql & " na = '"& A &"' "
    strSql = strSql & " where nr_Reg = "& strNr
    
    conn.execute strSQL
    next
    Spero che l'immagine di aiuti a capire, grazie.
    Immagini allegate Immagini allegate

  7. #7
    ma quale sarebbe il CAMPO CHE SI DEVE MODIFICARE? solo na o anche nb nr e nc?

  8. #8
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da santino83_11_04
    ma quale sarebbe il CAMPO CHE SI DEVE MODIFICARE? solo na o anche nb nr e nc?
    na, nb, nc ed nr sono i campi da modificare; dopo la modifica mi aspetto una situazione del genere se dal form arriva questo valore:

    codice:
    I-107-ANTONIO, O-108-VINCENZO, I-109-GIUSEPPE
    Immagini allegate Immagini allegate

  9. #9
    direttamente non puoi:

    proviamo a spiegarlo a parole...

    devi estrarti dal db l'id dei record che hanno nr_Reg=39 ordinati per id asc

    codice:
    set rs=conn.execute("select id from tabella where nr_Reg=" & strNr & " order by id asc")
    
    i=0
    while not rs.eof
    
    arr2 = split(arr1(i),"-")
       A = arr2(0)
       B = arr2(1)
       C = arr2(2)
    
    nr_A = ubound(arr1)
    nr_B = ubound(arr2)
    nr_C = (UBound(arr1)-LBound(arr1)+1)
    
    strSQL = "UPDATE table set "
    strSql = strSql & " nr = "& nr_C &", "
    strSql = strSql & " nb = "& B &", " 
    strSql = strSql & " nc = '"& C &"', "
    strSql = strSql & " na = '"& A &"' "
    strSql = strSql & " where nr_Reg = "& strNr & " and id=" & rs("id")
    
    conn.execute strSQL
    
    i=i+1
    rs.movenext
    wend
    
    set rs=nothing
    o qualcosa del genere

  10. #10
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da santino83_11_04
    direttamente non puoi:
    o qualcosa del genere
    Mago... Santino è un Mago... sono senza parole... funziona quasi...

    infatti se dal form arriva:

    codice:
    O-104-MARIO, O-105-GUALTIERO
    risponde con:

    Error Type:
    Microsoft VBScript runtime (0x800A0009)
    Indice non incluso nell'intervallo.: 'i'


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.