Newsgroup: it.comp.appl.access
Titolo: spostamento del cursore nel recordset

ciao a tutti
 
è possibile visualizzare 
lo spostamento tra i record
con movefirst, movenext ecc ?
come?
 
grazie


Si aggiorna il Bookmark della Form allineandolo al Bookmark del Recordset...
Me.Bookmark=OggettoRecordset.Bookmark
 
@Alex


ciao Alex
 
in una funzione,
ho un problema molto strano;
dove il Bookmark, posizionato in un punto
mi va bene per il numero
mentre nell'altro per la data...
 
With frm!SM_NumDocFornitori
 If rsCheck.BOF Then
  Campo1 = 0
 Else
  rsCheck.FindFirst "IsNull(" & "NumeroDocFo" & ")"
  Campo1 = IIf(rsCheck.NoMatch, 1, 0)
 
.Form.Bookmark = rsCheck.Bookmark ' segnalibro  <-- qui va bene se manca il numero
 
  rsCheck.FindFirst "IsNull(" & "DataDocFo" & ")"
  Campo2 = IIf(rsCheck.NoMatch, 1, 0)
 
'.Form.Bookmark = rsCheck.Bookmark ' segnalibro  <--qui va bene se manca la data

Per usare il Bookmark i 2 Recordset devono essere sostanzialmente confrontabili... ho paura nel tuo caso non lo siano... ma non c'è modo di capire se quel rsCheck sia la medesima origine della Form o meno... in tal caso si dvrebbe usare il RecordsetClone...!
 
In tutti i modi, se devi sincronizzarli, usa la PK nel tuo caso, non il Bookmark.
 
.Form.RecordsetClone.FindFirst "TuoCampo=" & rsCheck.Fields(TuoCampo).Value
If .Form.RecordsetClone.NoMatch=False then
   .Form.Bookmark=.Form.RecordsetClone.Bookmark
End If
 
Ciao
@Alex


grazie Alex
 
non mi spiego perchè mi da l'errore qui:
.Form.RecordsetClone.FindFirst "(Y) =" & rsCheck.Fields(" & Y & ").Value
elemento non trovato in quest'insieme
 
questo e' l'intero codice:
Public Function fctTesta_DocFo( _
  ByRef frm As Form) As Boolean
 
  Dim rsCheck As DAO.Recordset
  Dim strsCheckQL As String
  Dim Campo1 As Byte, Campo2 As Byte
  Dim TipoDocumento As String, X As String, Y As String
 
  strsCheckQL = "SELECT * FROM TbNumDocFornitori" _
    & " Where IdFatturaFo =" & frm!IdFatturaFo
  Set rsCheck = CurrentDb.OpenRecordset(strsCheckQL)
 
  TipoDocumento = IIf(frm!CboTipoDocumento = 1, "Fattura", "Nota Credito")
 
  With frm!SM_NumDocFornitori
    If rsCheck.BOF Then
      Campo1 = 0
    Else
      rsCheck.FindFirst "IsNull(" & "NumeroDocFo" & ")"
      Campo1 = IIf(rsCheck.NoMatch, 1, 0)
 
      rsCheck.FindFirst "IsNull(" & "DataDocFo" & ")"
      Campo2 = IIf(rsCheck.NoMatch, 1, 0)
 
      If rsCheck!DataDocFo < Forms("frmMenuPrincipale")!dal Then
        MsgBox "La 'data " & TipoDocumento & "' deve essere superiore al " _
          & Format(Forms("frmMenuPrincipale")!dal, "dd/mm/yy") & ".", _
          vbExclamation, "Attenzione!"
          fctTesta_DocFo = False
 
      End If
 
      If rsCheck!DataDocFo > Forms("frmMenuPrincipale")!al Then
        MsgBox "La 'data " & TipoDocumento & "' deve essere inferiore al " _
          & Format(Forms("frmMenuPrincipale")!al, "dd/mm/yy") & ".", _
          vbExclamation, "Attenzione!"
          fctTesta_DocFo = False
 
      End If
 
    End If
 
    X = IIf(Campo1 = 0, "e n° ", "") _
      & IIf(Campo2 = 0, "e data ", "")
 
    If (X) <> "" Then
      MsgBox "Attenzione manca: " & Mid(X, 2) & TipoDocumento & ".", vbExclamation, "Attenzione!"
    Else
      fctTesta_DocFo = True
 
    End If
 
    Y = IIf(Campo1 = 0, "NumeroDocFo", "DataDocFo")
 
    If (Y) <> "" Then
      If Not rsCheck.BOF Then
        .Form.RecordsetClone.FindFirst "(Y) =" & rsCheck.Fields(" & Y & ").Value
        If .Form.RecordsetClone.NoMatch = False Then
          .Form.Bookmark = .Form.RecordsetClone.Bookmark
 
        End If
 
      End If
 
      .SetFocus
      .Form(Y).SetFocus
 
    End If
 
  End With
 
  Set rsCheck = Nothing
 
End Function

ma cosa sono le parentesi tonde sul campo Y...?
Hai inventato una nuova sintassi...?
 
Franco....
 
@Alex 


grazie Alex
ho corretto
.Form.RecordsetClone.FindFirst "Y =" & rsCheck.Fields(" & Y & ").Value
ma l'errore rimane lo stesso

e le virgolette dopo a cosa servono... in quel modo...???????? nemmeno un Compila per rilevare gli errori fai..?
Sinceramente non capisco, commetti errori talmente BANALI che fatico a capire come tu possa scrivere codice... quindi se é questione di disattenzione sarebbe ora ti dessi una sveglia e facessi debug seriamente purché così non si fa 1mm.
Se invece sono basi che mancano... beh... posso suggerirti di studiare ma poi devi farlo...
@Alex


ciao Alex
 
cosi sembra funzionare...
Public Function fctTesta_DocFo( _
  ByRef frm As Form) As Boolean
 
  Dim rsCheck As DAO.Recordset
  Dim TipoDocumento As String, X As String
  Dim CheckArray(1 To 2) As String, J As Byte
 
  With frm!SM_NumDocFornitori
    Set rsCheck = .Form.RecordsetClone
 
    TipoDocumento = "Fattura"
    CheckArray(2) = "NumeroDocFo"
    CheckArray(1) = "DataDocFo"
 
    For J = 1 To 2
    rsCheck.FindFirst "IsNull(" & CheckArray(J) & ")"
 
    If Not rsCheck.NoMatch Then
      TipoDocumento = IIf(rsCheck.Fields("IdTipoDocumento").Value = 1, _
        "Fattura", "Nota Credito")
      X = IIf(CheckArray(J) = "NumeroDocFo", "n° ", "") _
      & IIf(CheckArray(J) = "DataDocFo", "data ", "")
 
      .Form.Bookmark = .Form.RecordsetClone.Bookmark
      .SetFocus
      .Form(CheckArray(J)).SetFocus
 
    End If
    Next
 
    If .Form.RecordsetClone.BOF Or .Form.NewRecord Then
      X = "n° e data "
    Else
      If rsCheck!DataDocFo < Forms("frmMenuPrincipale")!dal Then
        MsgBox "La 'data " & TipoDocumento & "' deve essere superiore al " _
          & Format(Forms("frmMenuPrincipale")!dal, "dd/mm/yy") & ".", _
          vbExclamation, "Attenzione!"
          fctTesta_DocFo = False
 
      End If
 
      If rsCheck!DataDocFo > Forms("frmMenuPrincipale")!al Then
        MsgBox "La 'data " & TipoDocumento & "' deve essere inferiore al " _
          & Format(Forms("frmMenuPrincipale")!al, "dd/mm/yy") & ".", _
          vbExclamation, "Attenzione!"
          fctTesta_DocFo = False
 
      End If
 
    End If
 
  End With
 
  If (X) <> "" Then
    MsgBox "Attenzione manca: " & X & TipoDocumento & ".", vbExclamation, "Attenzione!"
  Else
    fctTesta_DocFo = True
 
  End If
 
