Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363

    [VBA] Trovare record (aiuto!)

    Ho un problema con VBA su Access2000
    Questo codice non funziona (mi crea solo un record nella tabella "Marche"):
    codice:
    Dim db As Database
    Dim origine As DAO.Recordset
    Dim marche As DAO.Recordset
    Dim strCriterio As String
    
    Set db = CurrentDb
    
    Set origine = db.OpenRecordset("AUTOXX", dbOpenDynaset)
    Set marche = db.OpenRecordset("Marche", dbOpenDynaset)
    
    origine.MoveFirst
    Do Until origine.EOF
        strCriterio = "txtMarca = '" & origine!MARCA & "'"
        marche.FindFirst strCriterio
        If marche.EOF Then 
            marche.AddNew
            marche!txtMarca = CStr(origine!MARCA)
            marche.Update
        End If
        origine.MoveNext
    Loop
    
    marche.Close
    origine.Close
    Set marche = Nothing
    Set origine = Nothing
    Questo codice invece funziona perfettamente: tutte le marche vengono riportate (una volta sola) dalla tabella "origine" alla tabella "marche".
    codice:
    Dim db As Database
    Dim origine As DAO.Recordset
    Dim marche As DAO.Recordset
    Dim strCriterio As String
    
    Set db = CurrentDb
    
    Set origine = db.OpenRecordset("AUTOXX", dbOpenDynaset)
    Set marche = db.OpenRecordset("Marche", dbOpenDynaset)
    
    origine.MoveFirst
    Do Until origine.EOF
        strCriterio = "txtMarca = '" & origine!MARCA & "'"
        If IsNull(DLookup("idMarca", "Marche", strCriterio)) Then 
            marche.AddNew
            marche!txtMarca = CStr(origine!MARCA)
            marche.Update
        End If
        origine.MoveNext
    Loop
    
    marche.Close
    origine.Close
    Set marche = Nothing
    Set origine = Nothing
    Qualcuno mi sa dare qualche consiglio? Non riesco a capire perchè il primo codice non funziona. Grazie!

  2. #2
    al posto di Marche.EOF prova ad usare MArche.NoMatch (insica se non sono stati trovati record:
    codice:
    ...
    Do Until origine.EOF
        strCriterio = "txtMarca = '" & origine!MARCA & "'"
        marche.FindFirst strCriterio
        If marche.NoMatch  Then 
            marche.AddNew
            marche!txtMarca = CStr(origine!MARCA)
            marche.Update
        End If
        origine.MoveNext
    Loop
    ...

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.