Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Istruzioni fields e findfirst

  1. #1
    BennyB non è in linea Scolaretto
    Post
    184
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno.

    Da buon novellino mi sono impantanato sul facile.
    Però, dopo aver cercato variamente sulle altre pagine e su altri siti, non ho trovato risposta al mio problema. Arrivo ad esporvelo.

    Ho una tabella, denominata "Tabella1" (un esempio creato in fretta per capire la logica delle istruzioni). Ha 3 campi:
    RIF (indice e chiave primaria)
    NOME (Testo)
    COGNOME (Testo)

    Ho inserito 3 record, e di fatto la numerazione di RIF riporta 1,2,3.
    Poi, ho aggiunto un modulo con il seguente codice:
    Sub test()
    
    Dim rs As DAO.Recordset
    Dim db As Database
    Dim fld As Field
    '
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Tabella1", dbOpenDynaset)
    rs.MoveLast
    Debug.Print rs.RecordCount
    For Each fld In rs.Fields
        Debug.Print fld.Value
    Next
    ld = 2
    sCrit = "[RIF] = " & ld
    Debug.Print sCrit
    With rs
     .FindFirst (sCrit)
        If Not .NoMatch Then
             MsgBox "OK"
        End If
    End With
    
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    End Sub
    
    Quello che accade mi stupisce: il ciclo for...each elenca solo i campi del 1° record; il recordcount mi da 3 (correttamente); .findfirst non trova un tubo (ma RIF=2 dovrebbe essere il 2° record).

    Vorrei capire dove sbaglio e/o qual è il problema.

    Ringrazio anticipatamente chi avrà la pazienza di rispondermi.

  2. #2
    sasy_80 non è in linea Scolaretto
    Post
    270
    Like Inviati  
    0
    Like Ricevuti  
    0
    ma forse è meglio che spieghi "tu" cosa intendi fare, anche perché se il codice lo hai preso da qualche parte può darsi che dei valori non si adattino al tuo caso cosi come è scritta oppure che il codice non vada bene per ciò che ti serve (ma per questo bisogna che ce lo dici)

  3. #3
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,502
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Forse stai facendo un po' di confusione tra "campi" e "record" ...
    ℹ️ Leggi di più su AntonioG ...

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,815
    Like Inviati  
    0
    Like Ricevuti  
    23
    Commetti un sacco di erorri concettuali...!

    Prima di tutto apri un RS e ti SPOSTI ALL'ULTIMO RECORD..!!!
    Ne consegue che il Ciclo sulla Collection Fields, agisce SOLO sul Record puntato, visto che non lo muovi, ed è l'ultimo non il 1° di certo...!

    Poi ricordandoti che sei sempre all'ultimo, il FINDFIRST non troverà NULLA se quello che cerchi è prima...!!!
    Prima del [.FindFirst] fai un MoveFirst del Rs di partenza, in quanto avendo spostato il Bookmark alla fine è normale che se hai superato il tuo dato non venga trovato...!
    Sub test()
    
    Dim rs As DAO.Recordset
    Dim db As Database
    Dim fld As Field
    '
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Tabella1", dbOpenDynaset)
    rs.MoveLast
    Debug.Print rs.RecordCount
    rs.MoveFirst
    Do Until rs.Eof
        For Each fld In rs.Fields
           Debug.Print fld.Value
        Next
        rs.MoveNext
    Loop
    Rs.MoveFirst
    ld = 2
    sCrit = "[RIF] = " & ld
    Debug.Print sCrit
    With rs
     .FindFirst (sCrit)
        If Not .NoMatch Then
             MsgBox "OK"
        End If
    End With
    
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    End Sub
    
    ℹ️ Leggi di più su @Alex ...

  5. #5
    BennyB non è in linea Scolaretto
    Post
    184
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ringrazio tutti.
    Prendo atto che devo approfondire la mia conoscenza in merito.
    tra l'altro sottolineo che gli errori principali si manifestavano nel .findfirst con un recordset aperto con opzione 'dbOpenTable'; cercherò di analizzare il materiale in rete prima di disturbarvi ancora. Nel caso, aprirò un altro 3D.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Intercettare rst fields
    Da SILVIO nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 27-12-2020, 19:51
  2. Problema istruzioni
    Da antonio_81 nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 13-11-2020, 12:58
  3. istruzioni su powerpoint.
    Da mandrak nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 10-10-2010, 22:32
  4. errore su contatore con rs.fields(0)
    Da amatorevt nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 25-08-2009, 11:16
  5. rs.fields e campo vuoto
    Da bizio nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 23-02-2005, 13:44