Avatar billede erik_l Juniormester
13. marts 2023 - 19:44 Der er 6 kommentarer og
2 løsninger

Fill empty cells

for ca 12½ år siden fik jeg det her stykke kode som virkede den gang, nu har jeg være ude af access gamet en rum tid og skiftet pc flere gange og formentlige også fået en nyere version af access, nu har jeg igen får behov for fylde nogle tomme celler med værdien fra cellen over, men jeg kan ikke få koden til at virke, er der en som kan hjælpe ?

Koden fra LKP er her:
*****************************************************************
Public Sub FillEmptyCells()

    Dim rst As ADODB.Recordset
    Dim strBuffer As Variant
 
    Set rst = New ADODB.Recordset
         
    rst.Open "Tabel1", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
 
    strBuffer = rst(1)
    rst.MoveNext
    Do While Not rst.EOF
        If VarType(rst(1)) = vbNull Then
            rst(1) = strBuffer
            rst.Update
        Else
            strBuffer = rst(1)
        End If
        rst.MoveNext
    Loop
 
End Sub
*****************************************************************

..erik
Avatar billede Gustav Ekspert
13. marts 2023 - 19:56 #1
Gå til menu Tools, References og sæt en reference til ADO:

Microsoft ActiveX Data Objects 6.1 Library
Avatar billede Keld Broe Seniormester
16. marts 2023 - 10:33 #2
Dim rst As DAO.Recordset
Dim strBuffer As Variant

Set rst = CurrentDb.OpenRecordset("Tabel1")
   
strBuffer = rst(1)
rst.MoveNext
Do While Not rst.EOF
    If IsNull(rst(1)) Then
        rst(1) = strBuffer
        rst.Update
    Else
        strBuffer = rst(1)
    End If
    rst.MoveNext
Loop

rst.Close
Set rst = Nothing
Avatar billede erik_l Juniormester
17. marts 2023 - 20:38 #3
Hej Keld
Tak for forsøget, af en eller anden grund så virker det ikke.
Den tabel der skal opdateres hedder "MyExcelImport" og det er den 2. kolonne i tabellen der skal opdateret, den har kolonne navnet "F2" og koden ser ud som herunder, kan du se om der er nogen fejl i det ?
..erik



Public Sub FillEmptyCells()

Dim rst As DAO.Recordset
Dim strBuffer As Variant

Set rst = CurrentDb.OpenRecordset ("MyExcelImport")
 
strBuffer = rst(1)
rst.MoveNext
Do While Not rst.EOF
    If IsNull(rst(1)) Then
        rst(1) = strBuffer
        rst.Update
    Else
        strBuffer = rst(1)
    End If
    rst.MoveNext
Loop

rst.Close
Set rst = Nothing

End Sub
Avatar billede erik_l Juniormester
17. marts 2023 - 21:33 #4
Når koden bliver kørt melder den run time error 3020 og ved "debug" bliver linjen
"        rst(1) = strBuffer" markeret gul ..... nogen gode forslag?
..erik

Public Sub FillEmptyCells()

Dim rst As DAO.Recordset
Dim strBuffer As Variant

Set rst = CurrentDb.OpenRecordset ("MyExcelImport")

strBuffer = rst(1)
rst.MoveNext
Do While Not rst.EOF
    If IsNull(rst(1)) Then
        rst(1) = strBuffer
        rst.Update
    Else
        strBuffer = rst(1)
    End If
    rst.MoveNext
Loop

rst.Close
Set rst = Nothing

End Sub
Avatar billede Gustav Ekspert
18. marts 2023 - 09:29 #5
Da du har skiftet fra ADO til DAO, mangler du en Edit:
Public Sub FillEmptyCells()

    Dim rst        As DAO.Recordset
    Dim Buffer      As Variant
   
    Set rst = CurrentDb.OpenRecordset("MyExcelImport")
   
    If rst.RecordCount > 0 Then
        rst.MoveFirst
        Buffer = rst(2).Value
        rst.MoveNext
       
        Do While Not rst.EOF
            If IsNull(rst(1).Value) Then
                rst.Edit
                    rst(1).Value = Buffer
                rst.Update
            Else
                Buffer = rst(1).Value
            End If
            rst.MoveNext
        Loop
    End If
    rst.Close
   
    Set rst = Nothing

End Sub
Avatar billede erik_l Juniormester
20. marts 2023 - 12:24 #6
Hej Gustav
Tak for din ihærdighed.
Der kommer ingen fejlmelding nu, men den fylder ikke stadig ikke cellerne i tabellen.

Er der flere tricks i ærmet ?

..erik
Avatar billede Gustav Ekspert
20. marts 2023 - 12:39 #7
Næh. Det fungerer fint her.
Husk at opdatere tabellen, hvis du har den åben.
Avatar billede erik_l Juniormester
20. marts 2023 - 21:56 #8
Tak for din ihærdighed
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester