Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464

    Aggiornamento contemporaneo su 2 tabelle

    Ciao a tutti,
    sto cercando di inserire una nuova funzione che mi permetta di aggiornare in contemporanea 2 tabelle di un db access.
    Con il seguente codice riuscivo semplicemente a cancellare l'ordine del cliente dalla tabella "Ordini" ma ora vorrei aggiornare anche l'importo complessivo speso dal cliente e quindi cancellando un ordine non evaso voglio sottrarre anche l'importo dello stesso ordine dall'importo totale che il cliente ha speso. Dal codice vedrete che è piu semplice in asp che a spiegarlo....



    <%
    Dim QSID, QSUserID, QSTotale, SQL, RS, SQLagg, RSagg

    QSID = Request.QueryString("ID")
    QSUserID = Request.QueryString("UserID")
    QSTotale = Request.QueryString("Totale")

    'recupero gli importi gia spesi dal cliente
    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    Set RS = Conn.Execute(SQL)


    'aggiorno gli importi
    SQLagg = " UPDATE Utenti SET Importi = Importi - "& QS("Totale") &" WHERE UserID = "& QSUserID
    Set RSagg = Conn.Execute(SQLagg)


    'cancello l'ordine
    SQL = " DELETE FROM Ordini WHERE ID = " & QSID
    Set RS = Conn.Execute(SQL)


    Set RS = Nothing
    Conn.Close
    Set Conn = Nothing

    Response.Redirect "ok.asp"

    %>


    dovrebbe essere una cosa banalissima ma non ci riesco.
    Qualcuno potrebbe aiutarmi per favore?
    Grazie mille

    P.S.: l'errore che mi da così come scritto adesso è:
    Tipo di errore:
    Microsoft JET Database Engine (0x80040E10)
    Nessun valore specificato per alcuni parametri necessari.
    /italia/amministrazione/elimina_ordine.asp, line 20

    dove la linea 20 è:

    Set RS = Conn.Execute(SQL)

  2. #2
    come prima cosa fai un print della query in questione


    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    response.write SQL
    Set RS = Conn.Execute(SQL)


    seconda cosa QS("Totale") questo valore da dove arriva che non riesco a capire?

    terza cosa dopo che fai la prima query cosa te ne fai? visto che non la utilizzi più.


    'recupero gli importi gia spesi dal cliente
    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    Set RS = Conn.Execute(SQL)
    if not rs.eof then
    Importi = rs("importi")
    end if

    e dopo puoi utlizzare il valore importi se invece non ti serve puoi anche evitare di fare questa qry visto non la utlizzi da nessuna parte

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    Innanzitutto grazie per la risposta.


    QS("Totale") me lo porto dalla pagina precedente, quindi di riepilogo dell'ordine, passandolo per il link ed è il totale dell'ordine in questione da dover scalare dall'importo totale speso...


    per "prima quesry" ti riferisci a questa?

    'recupero gli importi gia spesi dal cliente
    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    Set RS = Conn.Execute(SQL)

    credevo fosse necessario recuperare il valore della colonna "Importi" per poi poterlo aggiornare con la sottrazione... non è così?

    grazie ancora per l'aiuto che vorrai darmi.

  4. #4
    QSTotale = Request.QueryString("Totale")
    .....
    SQLagg = " UPDATE Utenti SET Importi = Importi - "& QS("Totale") &" WHERE UserID = "& QSUserID


    trova la differenza

  5. #5
    Io sto guardando solo il codice non altro


    nelle variabili che ti riporti dalla pagina precedente hai scritto

    QSTotale

    invece nella query chiami QS("Totale")

    Questo campo sembra che deve prendere totale da una tabella il campo totale.

    La logica della query è corretta ma se noti no utilizzi da nessuna parte l'importo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    quindi non do
    quindi vuol dire che devo scrivere così:




    SQLagg = " UPDATE Utenti SET Importi = Importi - "& QSTotale &" WHERE UserID = "& QSUserID

    stasera proverò, grazie mille

  7. #7
    più o meno io farei in questo modo

    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    Set RS = Conn.Execute(SQL)
    if not rs.eof then
    Importi = rs("importi")
    end if

    importinuovo = Importi - QSTotale


    SQLagg = " UPDATE Utenti SET Importi = " & QSTotale &" WHERE UserID = "& QSUserID

    Comuqnue a te si blocca già sulla prima query per risolvere ti ricordo che devi vedere cosa restituisce e controllare che i campi siano tutti scritti correttamente

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    Scusa l'ignoranza ma a cosa mi serve creare "Importinuovo" se poi non lo utilizzo nell'aggiornare il db?

    stando ai tuoi consigli forse dovre fare così?

    SQLagg = " UPDATE Utenti SET Importi = " & importinuovo &" WHERE UserID = "& QSUserID

  9. #9
    si hai ragione ho sbagliato a scrivere la variabile

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    ho provato e tanto per iniziare ho fatto un print della query ma mi funziona solo se faccio così:

    <%
    Dim SQL, RS, QSID

    QSID = Request.QueryString("ID")

    SQL = " SELECT Importi FROM Utenti WHERE ID = "& QSID
    response.write SQL
    Set RS = Conn.Execute(SQL)

    %>

    mentre se al posto dell'ID voglio cercare il valore dell'UserID non mi funziona piu e cioè ho fatto così:

    <%
    Dim SQL, RS, QSUserID

    QSUserID = Request.QueryString("UserID")

    SQL = " SELECT Importi FROM Utenti WHERE UserID = "& QSUserID
    response.write SQL
    Set RS = Conn.Execute(SQL)

    %>


    come mai? la cosa mi fa pensare alla differenza dei campi numerici con quelli alfanumerici... in quanto il campo UserID è praticamente un campo alfanumerico nel quale l'utente registra la UserID che sceglie al momento dell'iscrizione... Può essere?

    P.S: la UserID la passo allo stesso modo come passo l'ID, quidni non in quello non dovrebbero esserci errori...

    grazie in anticipo

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.