Condividi tramite

Errore nel codice VBA

Anonimo
2017-02-20T16:32:49+00:00

Qualcuno mi può aiutare?

Ho un errore nel codice che mi restituisce un errore di sintassi nell'opzione UPDATE.

Mi sto accecando per trovare l'errore ma non lo vedo proprio.

UPDATE Fattura_Acquisto SET Data_Registrazione=01/01/2017,Numero_Ft_ACQ=1254754,Data_Ft_ACQ=01/01/2017,Imponibile_FT_ACQ=45757,5757,IVA_FT_ACQ=2452452,24242,Esenzione_FT_ACQ=0,Totale_FT_ACQ=2498209,81812,Residuo_Da_Pagare=424, WHERE ID_Registrazione=1254245

L'errore dovrebbe essere nella condizione di WHERE ma non riesco a risolvere.

Grazie a tutti.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2017-02-22T17:05:49+00:00

    Buonasera Sandro.

    Ho risolto con il codice in questo modo.

    Forse è un modo di scrivere arcaico, visto come mi hai scritto tu il codice, ma per non perdermi nella formattazione del testo ho gestito così.

    Sq = "UPDATE Fattura_Acquisto SET"

    Sq = Sq & " Data_Registrazione='" & D_Reg & "'"

    Sq = Sq & ",Numero_Ft_ACQ='" & NFA & "'"

    Sq = Sq & ",Data_Ft_ACQ='" & DFA & "'"

    Sq = Sq & ",Imponibile_FT_ACQ='" & IMFaAc & "'"

    Sq = Sq & ",IVA_FT_ACQ='" & IvFaAc & "'"

    Sq = Sq & ",Esenzione_FT_ACQ='" & EsFtAc & "'"

    Sq = Sq & ",Totale_FT_ACQ='" & ToFaAc & "'"

    Sq = Sq & ",Residuo_Da_Pagare='" & ImPaFaAc & "'"

    Sq = Sq & " WHERE ID_Registrazione=" & Me.ID_Registrazione

    DoCmd.SetWarnings False

    DoCmd.RunSQL Sq

    DoCmd.SetWarnings True

    Ora funziona tutto.

    Grazie ancora.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-02-20T18:12:51+00:00

    ciao Angelo,

    c'è una virgola prima della clausola where eliminala.

    [...]

    , WHERE ID_Registrazione="1254245"

    [...]

    ed i campi numeri non vanno tra virgolette e il separatore decimale è il punto e non la virgola.

    se esegui l'istruzione da vba modifca in questo modo :

    Dim strSql As String

    strSql = "UPDATE Fattura_Acquisto SET " & _

             "Data_Registrazione=#01/01/2017#, " & _

             "Numero_Ft_ACQ='1254754', " & _

             "Data_Ft_ACQ=#01/01/2017#, " & _

             "Imponibile_FT_ACQ=45757.5757, " & _

             "IVA_FT_ACQ=2452452.24242, " & _

             "Esenzione_FT_ACQ='0', " & _

             "Totale_FT_ACQ=2498209.81812, " & _

             "Residuo_Da_Pagare='424' " & _

             "WHERE ID_Registrazione ='1254245'"

    DBEngine(0)(0).Execute strSql, 128

    all'interno chiaramente di una sub, verificando se non hai altri campi numerici da modificare.

    Ricordati di invertire mese ed anno nello statement sql e/o di formattare correttamente la data ( meglio ) o di passare un longInt se il campo data  contiene solo la data ( meglio ancora!).

    Ulteriore nota è' bene non memorizzare totali nella tabelle, quasi sempre...

    [...]

    Avevo già fatto questa prova prima di contattarvi.

    Grazie mille per le indicazioni.

    non farti problemi a chiedere :-)

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2017-02-20T17:37:13+00:00

    Grazie Sandro.

    Ho provato a inserire in una struttura di query il seguente codice, modificato come mi hai indicato.

    UPDATE Fattura_Acquisto SET Data_Registrazione=#01/01/2017#,Numero_Ft_ACQ="1254754",Data_Ft_ACQ=#01/01/2017#,Imponibile_FT_ACQ="45757,5757",IVA_FT_ACQ="2452452,24242",Esenzione_FT_ACQ="0",Totale_FT_ACQ="2498209,81812",Residuo_Da_Pagare="424", WHERE ID_Registrazione="1254245"

    L'errore che ritorna è sempre legato alla condizione di WHERE.

    Il messaggio dice: errore di sintassi nell'istruzione di UPDATE

    Avevo già fatto questa prova prima di contattarvi.

    Avevo provato anche ad eseguire la query aggiornando un solo campo per ridurre le probabilità di errori di sintassi ma senza esito positivo.

    Grazie mille per le indicazioni.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-02-20T16:47:57+00:00

    ciao Angelo,

    faccio delle supposizioni basandomi sulla logica non conoscendo il tipo di campi, o non conoscendoli completamente.

    wrappa le date con # del tipo : Data_Registrazione=#01/01/2017# e

    i campi con le virgolette esempio :

    Numero_Ft_ACQ="1254754"

    dove sono di tipo testo, dove invece il campo è numerico non serve :ID_Registrazione=1254245.

    Facci sapere.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento