Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[VBA Access] spostamento tra records e EOF

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[VBA Access] spostamento tra records e EOF

Postdi edozio » 02/12/06 17:57

Scusate per la solita domanda da superprincipiante imbranato:
Ho un recordset di nomi e indirizzi basato su una tabella Access.
Mi sposto al record successivo con DoCmd.GoToRecord , , acNext. ma come ultimo record mi mostra sempre un record vuoto, anziche fermarsi all’ultimo record valido. Se invece faccio DoCmd.GoToRecord , , acLast va giusto all'ultimo record valido.
Ho provato ad usare EOF ma non riesco ad impostare il codice giusto. Il recordset è di tipo DAO. Ho provato a settarlo come ADODB ma non me lo accetta. Ho provato a copiare codice da vari esempi che ho trovato ma non funziona.
Lo so che sono un casinista ma .... datemi una mano lo stesso!. Prima o poi imparerò ... :(
"Ho fatto cose... discutibili. Cose per cui il Dio della biomeccanica non mi farebbe entrare in paradiso. "
edozio
Utente Senior
 
Post: 217
Iscritto il: 04/04/04 16:11
Località: 45°51' N 9°24' E

Sponsor
 

Postdi archimede » 04/12/06 13:17

Un pezzo di codice si può vedere?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi edozio » 04/12/06 16:31

Codice: Seleziona tutto
Option Explicit
Option Compare Database

Private Sub Form_Current()

    Me!lbl_visita_scaduta.Visible = False
    ' Se il valore della casella di testo ultima_visita è superiore alla data odierna + 365, visualizza
    ' in rosso il valore della casella di testo ultima_visita. Se invece mancano meno di 30 giorni visualizza in giallo
    If Now() < (Me!ultima_visita + 335) Then
        Me!ultima_visita.BackColor = 65280
       
    ElseIf Now() > (Me!ultima_visita + 365) Then
            Me!ultima_visita.BackColor = 255
            Me!lbl_visita_scaduta.Visible = True
     ' Altrimenti, visualizza normalmente il valore nella casella di testo ultima_visita
    ' e nasconde l'etichetta lbl_visita_scaduta.
       
               
    Else
        Me!ultima_visita.BackColor = 970451
        Me!lbl_visita_scaduta.Visible = False
    End If

End Sub

Sub CheckRSType()

'    Dim rs As Object

'    Set rs = Forms![msk_anagrafica_input].Recordset
'    If TypeOf rs Is DAO.Recordset Then
'        MsgBox "DAO Recordset"
'    ElseIf TypeOf rs Is ADODB.Recordset Then
'        MsgBox "ADO Recordset"
'    End If
End Sub

Private Sub iscrizione_anno_GotFocus()

    If IsNull(Me!N_tessera) Then
        MsgBox "INSERIRE Numero di Tessera !!!", vbExclamation + vbOKOnly
        close_mask.SetFocus
        N_tessera.SetFocus
        Exit Sub
    End If

End Sub

Private Sub N_tessera_LostFocus()
   
    If IsNull(Me!N_tessera) Then
        MsgBox "INSERIRE Numero di Tessera !!!", vbExclamation + vbOKOnly
        close_mask.SetFocus
        N_tessera.SetFocus
        Exit Sub
    End If

End Sub

Private Sub Cognome_AfterUpdate()
    Cognome = StrConv(Me.Cognome, vbProperCase)
End Sub
Private Sub Nome_AfterUpdate()
    Nome = StrConv(Me.Nome, vbProperCase)
End Sub

Private Sub Indirizzo_AfterUpdate()
    Indirizzo = StrConv(Me.Indirizzo, vbProperCase)
End Sub

Private Sub Luogo_nascita_AfterUpdate()
    Luogo_nascita = StrConv(Me.Luogo_nascita, vbProperCase)
End Sub

Private Sub Residenza_AfterUpdate()
    Residenza = StrConv(Me.Residenza, vbProperCase)
End Sub

Private Sub Squadra_AfterUpdate()
    Squadra = StrConv(Me.Squadra, vbProperCase)
End Sub

Private Sub record_precedente_Click()
On Error GoTo Err_record_precedente_Click
   
    DoCmd.GoToRecord , , acPrevious

Exit_record_precedente_Click:
    Exit Sub

Err_record_precedente_Click:
    MsgBox "Questo è il primo atleta della lista", vbExclamation, "Avviso"
    Resume Exit_record_precedente_Click
   
End Sub

Private Sub record_successivo_Click()
On Error GoTo Err_record_successivo_Click
       
      DoCmd.GoToRecord , , acNext
       
Exit_record_successivo_Click:
    Exit Sub

Err_record_successivo_Click:
    MsgBox "Questo è l'ultimo atleta della lista", vbExclamation, "Avviso"
    'MsgBox Err.Description
    Resume Exit_record_successivo_Click
   
End Sub
Private Sub aggiungi_atleta_Click()
On Error GoTo Err_aggiungi_atleta_Click

    DoCmd.GoToRecord , , acNewRec
    Me!N_tessera.SetFocus

    If IsNull(Me!N_tessera) Then
        MsgBox "INSERIRE Numero di Tessera !!!", vbExclamation + vbOKOnly
        close_mask.SetFocus
        N_tessera.SetFocus
        Exit Sub
    End If
   
  Dim rst As DAO.Recordset
  Dim strSearchCode As String

  Set rst = Me.RecordsetClone
    strSearchCode = Str(Me!N_tessera)
    rst.FindFirst "N_tessera = " & strSearchCode
   
    If rst.NoMatch Then
        rst.Close
        Exit Sub
    Else
        If MsgBox("Numero di Tessera già in elenco.", vbExclamation + vbOKOnly, _
                "Avviso di Errore") = vbOK Then
        close_mask.SetFocus
        N_tessera.SetFocus
        Else:
            Dim FlagCancel As Boolean
            FlagCancel = True
            close_mask.SetFocus
        End If
    End If
 
    rst.Close
   
Exit_aggiungi_atleta_Click:
    Exit Sub

Err_aggiungi_atleta_Click:
    MsgBox Err.Description
    Resume Exit_aggiungi_atleta_Click
   
End Sub
Private Sub torna_anagrafica_Click()
On Error GoTo Err_torna_anagrafica_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "msk_anagrafica"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_torna_anagrafica_Click:
    Exit Sub

Err_torna_anagrafica_Click:
    MsgBox Err.Description
    Resume Exit_torna_anagrafica_Click
   
End Sub
Private Sub close_mask_Click()
On Error GoTo Err_close_mask_Click
   

    DoCmd.Close

Exit_close_mask_Click:
    Exit Sub

Err_close_mask_Click:
    MsgBox Err.Description
    Resume Exit_close_mask_Click
   
End Sub
Private Sub ELIMINA_ATLETA_Click()
On Error GoTo Err_ELIMINA_ATLETA_Click

    MsgBox "ATTENZIONE! Stai per eliminare DEFINITIVAMENTE l'atleta!", vbExclamation, "ATTENZIONE! Eliminazione definitiva!"
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Exit_ELIMINA_ATLETA_Click:
    Exit Sub

Err_ELIMINA_ATLETA_Click:
    MsgBox Err.Description
    Resume Exit_ELIMINA_ATLETA_Click
   
End Sub

Private Sub cmd_undo_edit_Click()
On Error GoTo Err_cmd_undo_edit_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Exit_cmd_undo_edit_Click:
    Exit Sub

Err_cmd_undo_edit_Click:
    MsgBox Err.Description
    Resume Exit_cmd_undo_edit_Click
   
End Sub
Private Sub btnLastRecord_Click()
On Error GoTo Err_btnLastRecord_Click

    DoCmd.GoToRecord , , acLast

Exit_btnLastRecord_Click:
    Exit Sub

Err_btnLastRecord_Click:
    MsgBox Err.Description
    Resume Exit_btnLastRecord_Click
End Sub
"Ho fatto cose... discutibili. Cose per cui il Dio della biomeccanica non mi farebbe entrare in paradiso. "
edozio
Utente Senior
 
Post: 217
Iscritto il: 04/04/04 16:11
Località: 45°51' N 9°24' E

Postdi archimede » 06/12/06 15:11

Avevo chiesto solo un pezzo di codice, cioè quello rilevante per il problema...

Credo che la cosa più semplice sia identificare un campo che DEVE essere valorizzato in ogni record e scrivere qualcosa tipo:
Codice: Seleziona tutto
Private Sub record_successivo_Click()
   DoCmd.GoToRecord , , acNext
   If isnull(Me![CampoObbligatorio]) Then
      DoCmd.GoToRecord , , acPrevious
      MsgBox "Questo è l'ultimo atleta della lista", vbExclamation, "Avviso"
   End If
End Sub
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi edozio » 07/12/06 13:52

archimede ha scritto:Avevo chiesto solo un pezzo di codice, cioè quello rilevante per il problema...

hai ragione, scusami! :oops:

archimede ha scritto:Credo che la cosa più semplice sia identificare un campo che DEVE essere valorizzato in ogni record e scrivere qualcosa tipo:
Codice: Seleziona tutto
Private Sub record_successivo_Click()
   DoCmd.GoToRecord , , acNext
   If isnull(Me![CampoObbligatorio]) Then
      DoCmd.GoToRecord , , acPrevious
      MsgBox "Questo è l'ultimo atleta della lista", vbExclamation, "Avviso"
   End If
End Sub
HTH.

Alessandro

perfetto! funziona benissimo.
Grazie mille, anche per la pazienza. :)
"Ho fatto cose... discutibili. Cose per cui il Dio della biomeccanica non mi farebbe entrare in paradiso. "
edozio
Utente Senior
 
Post: 217
Iscritto il: 04/04/04 16:11
Località: 45°51' N 9°24' E


Torna a Programmazione


Topic correlati a "[VBA Access] spostamento tra records e EOF":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti