[Risolto] Query di aggiornamento in vba

di il
19 risposte

[Risolto] Query di aggiornamento in vba

Buongiorno a tutti,
sto creando una query di aggiornamento in vba non riesco a risolvere un problema cioè

il codice è
Dim Dbl As Database
Set Dbl = CurrentDb
Dim sqlaggList As String
sqlaggList = "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = Left([Perizia],3)"  & "/" &  " Right([Perizia],2)"
Dbl.Execute (sqlaggList)
dove la perizia la ricevo con un numero 12345 e la devo convertire in 123/45 in una tabella con tipo dati "Testo"

se la scrivo così ovviamente Access me la restituisce con il numero 2.73 che è il calcolo 123 diviso 45.
ho provato a mettere le apici(e sicuramente è qui che sbaglio) e modifico il codice in
Dim Dbl As Database
Set Dbl = CurrentDb
Dim sqlaggList As String
sqlaggList = "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = Left([Perizia],3)" & " ' " & "/" & " ' " & " Right([Perizia],2)"
Dbl.Execute (sqlaggList)
mi dà di debug errore di sintassi (operatore mancante)
ho provato variare la posizione delle apici (un pò a caso) ma non trovo il problema
chi mi da una mano?
Ps. ovviamente la tempvars è un numero

19 Risposte

  • Re: [Risolto] Query di aggiornamento in vba

    Ovviamente sai che "123/45" non è un numero ma testo... e come tale la Formattazione da applicare è quella prevista per i Campi Testo, di conseguenza l'avviso che ti viene segnalato è corretto.
  • Re: [Risolto] Query di aggiornamento in vba

    Si infatti nella tabella ho messo tipo di dati "testo", se non sbaglio per dire a vba che non deve considerare un valore come numero o in questo caso come calcolo devo mettere davanti le apici
    o devo fare qualcos altro?
  • Re: [Risolto] Query di aggiornamento in vba

    Certo gli apici agli estremi.
  • Re: [Risolto] Query di aggiornamento in vba

    Ho provato a scrivere cosi
    Dim Dbl As Database
    Set Dbl = CurrentDb
    Dim sqlaggList As String
    sqlaggList = "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = '" Left([Perizia],3)" & "/" & " Right([Perizia],2)" &"'"
    Dbl.Execute (sqlaggList)
    ma mi da comunque errore
  • Re: [Risolto] Query di aggiornamento in vba

    Perizia = '" Left([Perizia]
    ?
  • Re: [Risolto] Query di aggiornamento in vba

    Direi che manca la corretta concatenazione delle parti stringa un Po in diversi punti...

    Mi chiedo però perché non fai un debug dei passaggi e magari ti stampi in Finestra Immediata il.predocato SQL... riusciresti ad accorgerti in autonomia di queste cose che sono banali.
  • Re: [Risolto] Query di aggiornamento in vba

    Si infatti il problema sta nelle concatenazioni solo che non riesco a capire come concatenarle, se non sbaglio "LEFT(Perizia,3)" non è una stringa quindi per logica devo mettere l' apice dopo ma ovvimanete non è cosi.
    Ho provato a fare il debug ma non lo so usare bene
  • Re: [Risolto] Query di aggiornamento in vba

    Senza non puoi scrivere codice.
    Prova a leggere questa guida:
    "forum.masterdrive.it/access-79/access-debug-44533/"
  • Re: [Risolto] Query di aggiornamento in vba

    Ok, certo un indizio per questo problema mi farebbe comodo, ti prometto che ora mi studio il tuo tutorial
  • Re: [Risolto] Query di aggiornamento in vba

    Secondo te la query finale come dovrebbe essere? Intendo la frase completa, da far eseguire ad access.
  • Re: [Risolto] Query di aggiornamento in vba

    Allora nella query di access se scrivo perizia = left(perizia,3)&"/"& righ(perizia,2) mi da il risultato desiderato, in vba dovrei mettere le apici per non fare riconoscere la / come calcolo quindi dovrei scrivere perizia = left(perizia,3) la concateno dicendo che é un testo quindi "'"&"/"&"'" e poi collego right(perizia,2) ma ovviamente sbaglio
  • Re: [Risolto] Query di aggiornamento in vba

    
    "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = '" & Left([Perizia],3) & "/" & Right([Perizia],2) & "'"
    
  • Re: [Risolto] Query di aggiornamento in vba

    oregon ha scritto:


    
    "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = '" & Left([Perizia],3) & "/" & Right([Perizia],2) & "'"
    
    Credo possa non funzionare così... in quanto la risoluzione ESPLICITA di [Perizia] interna alle funzioni Left/Right come ipotizzato, richiederebbe che il dato fosse reperibile da Form per la risoluzione..., mentre ho il sospetto lui lo riferisca a quello del Campo di Tabella..., ne consegue che andrebbe rivista credo in questi termini:
    
    "UPDATE Listino" & TempVars![CodCliente] & " SET Perizia = ''' + Left([Perizia],3) + '/' + Right([Perizia],2) + '''"
  • Re: [Risolto] Query di aggiornamento in vba

    Buongiorno,
    purtroppo i codici che mi avete mandanto non funzionano!
    Il primo che avevo già provato come risultato mi da solo "/"
    il secondo non mi restituisce nessun risultato nella tabella.
    Intanto ringrazio Alex che grazie a lui mi sto facendo un bibblioteca.
    Pensavo, è evidente che le funzioni Left e right in questo caso non sono adatte, se provassi con la funzione Mid? ora ci provo e vi dico, se nel frattempo avete qualche altro consiglio serebbero il benvenuto
Devi accedere o registrarti per scrivere nel forum
19 risposte