Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163

    [access - vb] problemi bottoni con query

    Buona sera a tutti!
    Vi espongo il mio problema: Ho creato una form che simula la pagina di un registro scolastico, che alla selezione di docente, classe e materia visualizza la lista degli alunni relativi; cliccando su uno dei nomi della lista viene visualizzata una nuova lista con i voti che l'alunno ha sul registro.
    Ho poi pensato a tre bottoni per inserire, modificare e cancellare i record dal db, utilizzando delle combobox; l'insert funziona senza problemi:
    codice:
    Private Sub btmInserisci_Click()
    Dim Agherbino As Database, qdf As QueryDef, strSQL As String
        Dim idmateria As Integer
            
        If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
            MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
        Else
            If lblVotiStudente.Caption = "" Then
                MsgBox "Selezionare uno Studente"
            Else
            
            'inserimento di un voto
            idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
            Dim rec As Recordset
            Set Agherbino = DBEngine(0)(0)
            strSQL = "INSERT INTO Valutazione_prova(Matricola, IdDocente, IdMateria, Data_prova, Quadrimestre, Tipo, Voto) VALUES (" & Me.ElnStudenti.Column(0) & ", " & Form_HomeDocente.txtID.Value & ", " & idmateria & ", '" & Me.cmbData.Value & "', " & Me.cmbQuadrimestre.Value & ", '" & Me.cmbTipo.Value & "', " & Me.cmbVoto.Value & ")"
            Agherbino.Execute strSQL
            strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
            MsgBox "Voto aggiunto correttamente!"
            
            'aggiorna la lista voti degli studenti
            Me.ElnVoti.Requery
            Me.cmbData = ""
            Me.cmbQuadrimestre = ""
            Me.cmbTipo = ""
            Me.cmbVoto = ""
            Agherbino.Close
            End If
            
        End If
        
    End Sub
    mentre l'aggiornamento (modifica) e la cancellazione no
    Ecco i bottoni:
    codice:
    Private Sub btmModifica_Click()
       'UPDATE mia_tabella SET telefono = '0244444444' WHERE nome = '%s' AND cognome = '%s';",nome,cognome);
     
        Dim Agherbino As Database, qdf As QueryDef, strSQL As String
        Dim idmateria As Integer
            
        If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
            MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
        Else
            If lblVotiStudente.Caption = "" Then
                MsgBox "Selezionare uno Studente"
            Else
            
            'inserimento di un voto
            idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
            Dim rec As Recordset
            Set Agherbino = DBEngine(0)(0)
            strSQL = "UPDATE Valutazione_prova SET Data_prova='" & Me.cmbData.Value & "'AND Quadrimestre= " & Me.cmbQuadrimestre.Value & " AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & " WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & ""
            Agherbino.Execute strSQL
           'strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
            MsgBox "Voto modificato correttamente!"
            
            'aggiorna la lista voti degli studenti
            Me.ElnVoti.Requery
            Me.cmbData = ""
            Me.cmbQuadrimestre = ""
            Me.cmbTipo = ""
            Me.cmbVoto = ""
            Agherbino.Close
            End If
            
        End If
    
    End Sub
    codice:
    Private Sub btmCancella_Click()
    
    ' DELETE FROM mia_tabella WHERE nome = '%s' AND cognome = '%s';",nome,cognome);
        Dim Agherbino As Database, qdf As QueryDef, strSQL As String
        Dim idmateria As Integer
            
        If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
            MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
        Else
            If lblVotiStudente.Caption = "" Then
                MsgBox "Selezionare uno Studente"
            Else
            
            'inserimento di un voto
            idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
            Dim rec As Recordset
            Set Agherbino = DBEngine(0)(0)
            strSQL = "DELETE FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & " AND Data_prova='" & Me.cmbData.Value & "' AND Quadrimestre= " & Me.cmbQuadrimestre.Value & " AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & ")"
            Agherbino.Execute strSQL
           'strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
            MsgBox "Voto eliminato correttamente!"
            
            'aggiorna la lista voti degli studenti
            Me.ElnVoti.Requery
            Me.cmbData = ""
            Me.cmbQuadrimestre = ""
            Me.cmbTipo = ""
            Me.cmbVoto = ""
            Agherbino.Close
            End If
            
        End If
        
    
    
    End Sub
    Vi ringrazio in anticipo per l'eventuale aiuto!

  2. #2
    strSQL = "UPDATE Valutazione_prova SET Data_prova='" & Me.cmbData.Value & "'AND Quadrimestre... eccetera

    strSQL = "DELETE FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column...eccetera

    il comando per l'esecuzione di una query di comando è DoCmd.RunQuery quindi :

    docmd.runsql(" UPDATE Valutazione_prova SET Data_prova='" & Me.cmbData.Value & "'AND Quadrimestre... eccetera")

    docmd.runsql("DELETE [valutazione_prova].* FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column...eccetera")

  3. #3
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163
    l'errore continua imperterrito a ripresentarsi ...
    L'erroe che mi dava e mi continua a dare anche facendo la modifica che mi hai consigliato è: "Tipi di dati non corrispondenti nell'espressione criterio" .. hai altri consigli???

  4. #4
    verifica se hai impostato giusto i tipi di dati nella query:
    - la data questa va racchiusa fra il simbolo # -----> #30/12/2010#
    - il testo tra apici ' ----> 'nome'
    - valori numerici non hanno bisogno di simboli

    purtroppo non posso dirti io quali sono e se ci sono quelli sbagliati perchè non conosco le impostazioni che hai dato ai vari campi.

    se anche così non funziona prova a postare il database che lunedì lo guardo (se puoi togli i dati reali e inserisci qualche dato di fantasia) sempre se qualcuno non mi precede.

  5. #5
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163
    ho controllato i dati nella query più volte, ma sembra che stiano bene.
    ti ripasso solo il codice della query. in pratica tutti i valori li prelevo da variabili, listbox e txt.
    codice:
    strDel = "DELETE * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = #" & Me.ElnVoti.Column(0) & "# AND Quadrimestre = " & Me.ElnVoti.Column(1) & " AND Tipo = '" & Me.ElnVoti.Column(2) & "' AND Voto = " & Me.ElnVoti.Column(3) & ";"
    in pratica ho provato anche a verificare che i valori passati siano quelli effettivi tramite la MsgBox ed effettivamente sono gli stessi e nel formato corretto.

    grazie per la tua disponibilità

  6. #6
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163
    Dopo quasi un giorno ho capito dov'era l'errore ...

    apici messi dove non dovevano esserci

    cmq adesso mi dà questo errore (img) ... e và in debug sulla linea di codice che mi hai postato tu

    codice:
      DoCmd.RunSQL ("DELETE [valutazione_prova].* FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & " AND Data_prova=#" & Me.cmbData.Value & "# AND Quadrimestre= '" & Me.cmbQuadrimestre.Value & "' AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & "")
    AIUTOOOOOOOOOOOOOOOOOOOOO!!!!
    Immagini allegate Immagini allegate

  7. #7
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163
    Ho notato un'altra cosa ... quando inserisco la data, tramite un calendario che associo ad una combobox legge in input mm/gg/aa, mentre il formato del dato in access è gg/mm/aa ... cosa posso fare??? in realtà non ho capito bene il meccanismo di questo calendario ... uso solo questo codice:

    codice:
    Private Sub Calendar3_Click()
       cmbData.Value = Calendar3.Value
       cmbData.SetFocus
       Calendar3.Visible = False
       Form.Recalc
    End Sub
    Insomma è come se faccia confusione ...

    Ad ogni modo ora non dà più errore ... quindi penso che risolvendo questo problema della data dovrei risolvere il tutto ...

  8. #8
    cmbData.Value = format(Calendar3.Value,"dd/mm/yyyy")

    in questo modo ti restituisce la data nel formato italiano

    edit: per curiosità se inserisci la data a mano che succede?

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da 1sirena
    Dopo quasi un giorno ho capito dov'era l'errore ...

    apici messi dove non dovevano esserci

    cmq adesso mi dà questo errore (img) ... e và in debug sulla linea di codice che mi hai postato tu

    codice:
      DoCmd.RunSQL ("DELETE [valutazione_prova].* FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & " AND Data_prova=#" & Me.cmbData.Value & "# AND Quadrimestre= '" & Me.cmbQuadrimestre.Value & "' AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & "")
    AIUTOOOOOOOOOOOOOOOOOOOOO!!!!
    Se vuoi cancellare record senza visualizzare quella schermata devi fare

    docmd.setwarnings false
    docmd.runsql tua_query
    docmd.setwarnings true

  10. #10
    Originariamente inviato da nicola75ss
    Se vuoi cancellare record senza visualizzare quella schermata devi fare

    docmd.setwarnings false
    docmd.runsql tua_query
    docmd.setwarnings true
    ciao nicolas75ss, suggerimento come sempre corretto ma credo che il problema sia che non riesce a eseguire in maniera corretta la query di eliminazione e di aggiornamento.

    se puoi dai un occhio ai messaggi postati e mi dici se i suggerimenti che ho dato sono completamente corretti o se ho toppato qualcosa? (per me sono giusti ma seguendo il forum da un pò conosco le tue capacità e magari imparo qualcosa di nuovo o una procedura più corretta)

    grazie

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.