Inserire valori nella query di accodamento da txt nella maschera

di il
5 risposte

Inserire valori nella query di accodamento da txt nella maschera

Salve a tutti,
vi ringrazio in anticipo per la lettura e mi scuso per la mia totale inesperienza.
Sto cercando di scrivere il codice vba (è il prima volta che mi ci sbatto sopra) per un database.
Da una maschera devo utilizzare una query di accodamento che deve prendere i valori dalle caselle di inserimento disponibili alla compilazione per l'utente. Scendo più nel preciso. Per ogni campo da compilare per l'inserimento di un nuovo record ho inserito nella maschera una casella di testo, dopodichè pensavo bastasse usare (fatto il dimensionamento)
[code] NOME = Me.Testo2
area = Me.CasellaCombinata12
COGNOME = Me.Testo14
RUOLO = Me.Testo16
corsolaurea = CasellaCombinata20
PASSWORD = Me.Testo22
USERNAME = Me.Testo24
mySQL = "INSERT INTO PERSONALE ([NOME],[ID_AREA],[COGNOME],[RUOLO],[CORSO DI LAUREA],[PASSWORD],[USERNAME])"
mySQL = mySQL & "values(nome,area,"
mySQL = mySQL & "cognome,ruolo,corsolaurea,"
mySQL = mySQL & "password,username) "[/code]
in realtà le variabili ho visto in debug prendono il valore desiderato ma poi una volta inserite dentro "values" tornano ad essere variabili sconosciute per il quale vba mi chiede con un popup di inserire il loro valore.

5 Risposte

  • Re: Inserire valori nella query di accodamento da txt nella maschera

    Ciao casuale,
    oltre a qualche piccolo errore dovuto all'inesperienza o alla poca conoscenza, le variabili per convenzione non si scrivono in maiuscolo poiché in questo modo si scrivono le costanti, credo che il tuo problema sia dovuto al fatto che con il codice che hai scritto non stai concatenando le variabili alla stringa mySQL.
    Prova a scrivere così
    nome = Me.Testo2
    area = Me.CasellaCombinata12
    ...
    mySQL = mySQL & "values(" & nome & "," & area ","
    ...
    
  • Re: Inserire valori nella query di accodamento da txt nella maschera

    mikelemm ha scritto:


    Ciao casuale,
    oltre a qualche piccolo errore dovuto all'inesperienza o alla poca conoscenza, le variabili per convenzione non si scrivono in maiuscolo poiché in questo modo si scrivono le costanti, credo che il tuo problema sia dovuto al fatto che con il codice che hai scritto non stai concatenando le variabili alla stringa mySQL.
    Prova a scrivere così
    nome = Me.Testo2
    area = Me.CasellaCombinata12
    ...
    mySQL = mySQL & "values(" & nome & "," & area ","
    ...
    
    grazie mille per la risposta veloce e precisa. Ora infatti ottengo in values i valori giusti
    mySQL = "INSERT INTO PERSONALE ([NOME],[ID_AREA],[COGNOME],[RUOLO],[CORSO DI LAUREA],[PASSWORD],[USERNAME])"
    mySQL = mySQL & "values(" & nome & "," & area & "," & cognome & "," & ruolo & "," & corsolaurea & "," & password & "," & username & " )"
    DoCmd.SetWarnings False
    DoCmd.RunSQL mySQL
    ciònonostante si verifica un'altra problematica, infatti ora mi chiede tramite popup di immettere valori ancora nelle variabili che però hanno assunto il nome dei vari inserimenti delle caselle della maschera.. Cioè se nella casella dedicata a nome inserissi luca, prima mi diceva immettere valore variabile "nome", ora mi inserisce immettere valore variabile "luca".. Mi scuso nuovamente se non sono riuscito a risolvere con la prima risposta
  • Re: Inserire valori nella query di accodamento da txt nella maschera

    Sinceramente non saprei che dirti. Di sicuro c'è qualcosa che non va altrove rispetto al pezzetto di codice che hai scritto. Devi postare tutto il codice della routine.
    Inoltre, stai utilizzando una maschera non collegata? Non è che stai utilizzando una Query per fare l'inserimento oltre al codice? Quello che descrivi nel primo post è un comportamento strano poiché, per quanto ne so io, il VBA non chiede niente tramite pop-up.
  • Re: Inserire valori nella query di accodamento da txt nella maschera

    mikelemm ha scritto:


    Sinceramente non saprei che dirti. Di sicuro c'è qualcosa che non va altrove rispetto al pezzetto di codice che hai scritto. Devi postare tutto il codice della routine.
    Inoltre, stai utilizzando una maschera non collegata? Non è che stai utilizzando una Query per fare l'inserimento oltre al codice? Quello che descrivi nel primo post è un comportamento strano poiché, per quanto ne so io, il VBA non chiede niente tramite pop-up.
    Private Sub Comando0_Click()
    
    Dim mySQL As String
    Dim nome, area, cognome, ruolo, corsolaurea, password, username As String
    nome = Me.Testo2
    area = Me.CasellaCombinata12
    cognome = Me.Testo14
    ruolo = Me.Testo16
    corsolaurea = CasellaCombinata20
    password = Me.Testo22
    username = Me.Testo24
    
    mySQL = "insert into PERSONALE ([NOME],[ID_AREA],[COGNOME],[RUOLO],[CORSO DI LAUREA],[PASSWORD],[USERNAME])"
    mySQL = mySQL & " values(" & nome & ", " & area & ", " & cognome & ", " & ruolo & ", " & corsolaurea & ", " & password & ", " & username & ")"
    
    DoCmd.SetWarnings False
    DoCmd.RunSQL mySQL
    Questo è tutto il codice, in origine dati non ho nulla (penso si riferisca a questo maschera collegata), vba mi risponde con una msgbox immettere valore parametro, forse mi soo espresso male prima...
  • Re: Inserire valori nella query di accodamento da txt nella maschera

    casuale ha scritto:


    mikelemm ha scritto:


    Sinceramente non saprei che dirti. Di sicuro c'è qualcosa che non va altrove rispetto al pezzetto di codice che hai scritto. Devi postare tutto il codice della routine.
    Inoltre, stai utilizzando una maschera non collegata? Non è che stai utilizzando una Query per fare l'inserimento oltre al codice? Quello che descrivi nel primo post è un comportamento strano poiché, per quanto ne so io, il VBA non chiede niente tramite pop-up.
    Private Sub Comando0_Click()
    
    Dim mySQL As String
    Dim nome, area, cognome, ruolo, corsolaurea, password, username As String
    nome = Me.Testo2
    area = Me.CasellaCombinata12
    cognome = Me.Testo14
    ruolo = Me.Testo16
    corsolaurea = CasellaCombinata20
    password = Me.Testo22
    username = Me.Testo24
    
    mySQL = "insert into PERSONALE ([NOME],[ID_AREA],[COGNOME],[RUOLO],[CORSO DI LAUREA],[PASSWORD],[USERNAME])"
    mySQL = mySQL & " values(" & nome & ", " & area & ", " & cognome & ", " & ruolo & ", " & corsolaurea & ", " & password & ", " & username & ")"
    
    DoCmd.SetWarnings False
    DoCmd.RunSQL mySQL
    Questo è tutto il codice, in origine dati non ho nulla (penso si riferisca a questo maschera collegata), vba mi risponde con una msgbox immettere valore parametro, forse mi soo espresso male prima...
    Intanto, per fare una dichiarazione corretta delle variabili, devi esplicitare il tipo di ogni variabile.
    Dim nome As String, area As String, cognome As String, ruolo As String, corsolaurea As String, password As String, username As String
    Come avevi scritto tu, solo username era dichiarata come String. Le altre Access le aveva automaticamente dichiarate Variant.
    Se non ci sono dimenticanze nella trascrizione o errori di battitura, nel codice che hai mostrato l'unico problema che vedo è questo
    corsolaurea = CasellaCombinata20
    in cui manca il riferimento all'oggetto, cioè il "Me".
    corsolaurea = Me.CasellaCombinata20
    Inoltre, ritengo che sia cosa buona ripristinare gli "Warnings" dopo l'esecuzione della SQL.
    DoCmd.SetWarnings False
    DoCmd.RunSQL mySQL
    DoCmd.SetWarnings True
    Un consiglio, evita gli spazi nei nomi
    ...,[CORSO DI LAUREA], ...
    Se proprio vuoi un nome articolato lo devi scrivere tutto attaccato oppure utilizzi il carattere trattino basso "_".
Devi accedere o registrarti per scrivere nel forum
5 risposte