Cel doortrekken

Status
Niet open voor verdere reacties.

bertje123

Gebruiker
Lid geworden
13 nov 2007
Berichten
57
Hoi :).

Ik heb net een TXT file in mijn acces database geimporteerd maar zou graag enkele wijzigingen erop uitvoeren.

ik heb nu volgende data in mijn tabel:

1111 123
null 456
null 789
null 147
null 258
null 369
222 100
null 200
null 300
null 400
null 500
null 600
333 951
null 753
null 984
null 651
null 937

nu wil ik volgende data krijgen


1111 123
1111 456
1111 789
1111 147
1111 258
1111 369
222 100
222 200
222 300
222 400
222 500
222 600
333 951
333 753
333 984
333 651
333 937

Ik zal niet sorteren, het is gewoon dat ik (zoals je hierboven ziet), het getal van de linkse kollom doorgeef aan de volgende lege cel, als er dan geen lege cel is neem dan de bestaande waarde.

Is dit mogelijk in acces?

Groeten :)
 
Als het al zou kunnen, dan kost dat vermoedelijk een hoop tijd om te maken. Waarom niet de tabel naar Excel exporteren, daar de gegevens aanpassen met cel doordtrekken, vervolgens de tabel weer importeren en met een bijwerkquery de kolom met de verkeerde waarden bijwerken?
 
De vba-code om dit te doen is op zich niet zo moeilijk. Je kunt onderstaande code eens proberen:

Code:
Public Sub testnummer()
Dim rst As DAO.Recordset
Dim strGetal As String
Set rst = CurrentDb.OpenRecordset("SELECT jouwveldnaam FROM tblTabelnaam")
Do Until rst.EOF
    If Left(rst!jouwveldnaam, 4) = "null" Then
        rst.Edit
        rst!testveld = strGetal & Mid(rst!jouwveldnaam, 5)
        rst.Update
    Else
        strGetal = Left(rst!jouwveldnaam, InStr(1, rst!jouwveldnaam, " ") - 1)
    End If
    rst.MoveNext
Loop
End Sub

Er wordt hierbij vanuit gegaan dat de gegevens in één veld staan en dat het eerste record begint met getallen ipv van null.


Rebmog
 
In Excel is echt geen mogelijkheid :). 3 miljoen records ofzo ^^

Wel vraag ik me nu af hoe ik dit in vba post.
Ik werk er wel af en toe mee, maar heb nog geen ervaring met tabellen en access (normaal werk ik met sql server :p).

Hoe kan ik deze code toewijzen aan de tabel? en waar klik ik best op (sorry voor de noob vraag :). )

Bedankt !
 
Je kunt inderdaad dan niet in Excel de aanpassing maken... Maak een formulier aan, zonder daar een tabel of zo aan te koppelen, zet daar een knop op met de wizard, gelijk annuleren als de knop op het formulier staat. Vervolgens ga je naar de eigenschap van de knop, en ga je naar het tabblad Gebeurtenis. Vervolgens selecteer je de optie <Bij Klikken>, en kies je daar de optie <Gebeurtenis opbouwen>. Dan kom je, als het goed is, in het VBA scherm.
Daar staat de cursor tussen de regels Private Sub command....() en End Sub. Tussen die regels typ je het commando: Call testnummer.

Onderaan, dus in ieder geval onder de End Sub, plak je de (aangepaste) code van de vorige post. Ik heb 'm niet getest, maar zie er zo gauw geen echte fout in, dus hij zou best kunnen werken. Ik heb zelf ook wel soortgelijke code gemaakt en gebruikt. Het formulier kun je nu openen in de normale weergave, en dan kun je op de knop klikken.
Maak wel eerst een kopie van de tabel, zodat je he origineel nog hebt voor als het fout gaat... De code is onomkeerbaar...
 
Andere code

Bedankt voor de Feedback iedereen :). Kreeg wel errors dus heb even de code wat vergemakkelijkt.

Code:
Public Sub testnummer()

Dim rst As DAO.Recordset
Dim strGetal As String
Dim X
Set rst = CurrentDb.OpenRecordset("SELECT Field1 FROM  Test")

    strGetal = ""
    Do Until rst.EOF
        
    If IsNull(rst!Field1) Then

            rst.Edit
            rst!Field1 = X
            rst.Update
                   
    Else
    
             X = rst!Field1

    End If
    
    rst.MoveNext
    
    Loop

End Sub

Nu is mijn volgende stap de gegevens in een andere tabel te plaatsen :-). Even zoeken dus
 
Valt wel mee; dat kun je doen met een INSERT commando. Of, als je een query wilt gebruiken, een Toevoegquery als je aan een bestaande tabel wilt toevoegen, of een Tabelmaakquery als je een nieuwe tabel wilt maken.
Je kunt, als je de SQL wilt vertalen naar VBA, bijvoorbeeld een Tabelmaak query maken, en dan via <Beeld>, <SQL> de syntax van de query kopieëren naar je VBA code en daar aanpassen.
 
Hey Octa :)

Bedankt voor de tip, ik heb al dit geprobeerd
Code:
Option Compare Database

Private Sub Command0_Click()
Call testnummer
End Sub

Public Sub testnummer()

Dim rst As DAO.Recordset
Dim strGetal As String
Dim X
Set rst = CurrentDb.OpenRecordset("SELECT Field3 FROM  ALLTT")
Set tdfNew = CurrentDb.CreateTableDef("ALLTT_Edit")

    With tdfNew
    
        .Fields.Append .CreateField("TT", dbText)
        .Fields.Append .CreateField("PN", dbText)
        rst.field3 = tdfNew.TT
        rst.field44 = tdfNew.PN
     strGetal = ""
     Do Until rst.EOF
        
     If IsNull(rst!field3) Then

              rst.Edit
              rst!field3 = X
              rst.Update
                   
        Else
        
             X = rst!field3
    End With
    
    
        End If
    
    rst.MoveNext
    
    Loop

End Sub

Maar met Insert lukt het misschien beter, ik zou gewoon willen dat de gewijzigde data in een nieuwe tabel komt. Omdat mijn oorspronkelijke tabel gelinkt is aan een TXT file kan ik daar geen wijzigingen in brengen.
Zit momenteel wel vast, dus heb jij een idee :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan