Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [vb for access] problemi recorset

    Salve ragazzi,
    mi sto avvicinando al linguaggio visual basic!

    Ho creato direttamente in access una maschera con un campo di input (nome_comune) ed un bottone.
    Al bottone ho associato questo codice:
    codice:
    Private Sub Comando57_Click()
        If IsNull(Me.nome_comune) Then
            ' il campo 'nome_comune' deve essere pieno
            messaggio = MsgBox("Devi inserire una città!", vbCritical)
            ' focus sul campo di input
            nome_comune.SetFocus
        End If
    
        ' crea un nuovo recordset
        Dim rs As New ADODB.Recordset
        Dim sql As String
        ' inserisce il comune
        sql = "INSERT INTO comuni (nome) VALUES ('" & Me.nome_comune & "')"
        ' apre il recordset
        rs.Open sql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
        ' distrugge il recorset
        Set rs = Nothing
        ' messagio di inserimento riuscito
        messaggio = MsgBox("Inserimento città riuscito!", vbInformation)
        ' campo di input vuoto
        nome_comune.Value = ""
        ' focus sul campo di input
        nome_comune.SetFocus
    
    End Sub
    Il codice funziona ma non del tutto!
    Infatti dopo aver inserito con successo una città se clicco sul bottone con il campo di input vuoto, viene dato un errore di run time in cui mi viene detto che il campo del db non accetta stringhe nulle!
    Perchè mi viene dato l'errore se io all'inizio dello script faccio un controllo proprio sul campo di input? Non dovrebbe comparire la finestra vbCritical?

    Naturalmente l'errore è su questa riga: rs.Open sql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic.

    Grazie a chi saprà dirmi qualcosa.

  2. #2
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, senza entrare nel dettaglio, miaVar="" è diversa da miaVar=null , l'oggetto textBox , se non ci inserisci niente, è sempre uguale a "" e non a null
    pertanto al posto di:
    If IsNull(Me.nome_comune) Then
    usa:
    If len(Me.nome_comune)=0 Then

    altro consiglio, per inserire un record nella tabella, usa questa forma:
    codice:
    sql = "INSERT INTO comuni (nome) VALUES ('" & Me.nome_comune & "')"
    CurrentProject.Connection.Execute sql, , adExecuteNoRecords
    Jupy

  3. #3
    Grazie Jupy64,
    modifico subito il codice secondo il tuo consiglio.


  4. #4
    Buon giorno a tutti!
    Avrei un'altra domanda da porvi.

    Faccio una piccola premessa. In HTML un menù a tendina si realizza con il tag <option value="1">testo</option>

    Attraverso codice vb come si realizza una cosa simile?
    Io sono riuscito solamente a riempire la casella combinata attraverso una istruzione sql (SELECT nome_campo FROM tabella); ma mi serve prelevare anche il campo_id che dovrei utilizzare come il "value" dell'HTML.

    Mi sarò spiegato? :master:

  5. #5
    Grazie lo stesso! Ho risolto da solo

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.