Avatar billede akr Nybegynder
27. april 1999 - 00:00 Der er 8 kommentarer og
1 løsning

Ændre data i Access-tabel med makro

Hvordan laver jeg en makro der automatisk skifter ekelte karakterer ud i en given tabel og erstatter dem med en anden karakter ??

F.e.ks
"låge" rettes til "laage"
Avatar billede jbc Nybegynder
27. april 1999 - 09:48 #1
Har du prøvet med en opdaterings forespørgelse?
Husk at lave en kopi af datebasen før du køre en sådan forespørgelse.

mvh
Jørgen
Avatar billede akr Nybegynder
27. april 1999 - 10:07 #2
Ja - det har jeg prøvet - men jeg kan ikke finde ud af at få den til at ændre det enkelte bogstav - som jo vil stå et vilkårligt sted i ordet.

Har du en løsning til det ?
Avatar billede jbc Nybegynder
27. april 1999 - 10:39 #3
Hvis det er hver gang der står "aa" skal have det ændret til "å" og f.eks. "oe" til "ø", kan du måske gøre det ved at indlæse den i excell, og så bruge søg og erstat. Jeg er ikke helt sikker på du kan gøre dette i access.
Efter du har køret dette i excell kan du herefter åbne den igen i access.
Jørgen
Avatar billede jgc Nybegynder
27. april 1999 - 12:00 #4
Du kan bare åbne tabellen og vælge rediger - erstat.

Hvis du skal erstatte enkelte bogstaver/tegn inden i feltværdier skal du fjerne hakket i "Hele feltet". Du kan også vælge om du vil lave søg og erstat på et enkelt felt eller på alle felter. For at få ændret alle poster trykker du bare "Erstat alle".

Hvis du ikke har brug for at køre denne erstatning automatisk (flere gange) så burde dette være nok. Ellers kan man nok lave en makro til det også.
Avatar billede akr Nybegynder
28. april 1999 - 09:22 #5
Søg / erstat fungerer fint - men det er jo netop automatisk = med en makro jeg gerne vil prøve. Hvordan gør jeg det ??
Avatar billede hnteknik Novice
29. april 1999 - 14:52 #6
Prøv denne istedet for en macro (det er noget skidt). Du kan selv forbedre den med procedurekald etc. Henrik

Sub Opdaterrecord()
    Dim DB As Database
    Dim Rst1 As Recordset
    Dim strSearch As String, StrErstat As String
    Dim Crst1 As Integer, StrToSearch As String
    Dim I As Integer, IntWhere As Integer
   
    Set DB = CodeDb()
    Set Rst1 = DB.OpenRecordset("tabel1")
    strSearch = "æ"
    StrErstat = "a"
   
    If Not Rst1.EOF Then
        Rst1.MoveLast
        Crst1 = Rst1.RecordCount
        Rst1.MoveFirst
       
        For I = 1 To Crst1
        StrToSearch = Rst1![tekstfelt]
            'søg efter teksten
            IntWhere = 1
            Do While IntWhere
                IntWhere = InStr(StrToSearch, strSearch)
       
                If IntWhere Then
                    Rst1.Edit
                    Mid(StrToSearch, IntWhere, Len(strSearch)) = StrErstat
                    Rst1![tekstfelt] = StrToSearch
                    Rst1.Update
                End If
               
            Loop
            Rst1.MoveNext
        Next I
       
    Rst1.Close
    End If
    MsgBox " tabellen er nu opdateret"
End Sub
Avatar billede hnteknik Novice
29. april 1999 - 16:59 #7
Jeg ser nu, at du vil udskrifte æ med ae og ø med oe etc., så jeg har elaboreret lidt på rutinerne:
Jeg syntes ikke, at den caseSenxitive del virker, men god fornøjelse med den.

Henrik


Sub startsøgogreplace()
    Opdaterrecord "tabel1", "øl", "YtMedøl", True
End Sub

Sub Opdaterrecord(table As String, strSearch As String, StrErstat As String, fCS As Boolean)
    Dim DB As Database
    Dim Rst1 As Recordset
    Dim Crst1 As Integer, StrToSearch As String
    Dim I As Integer, IntWhere As Integer, intCS As Integer
   
    Set DB = CodeDb()
    Set Rst1 = DB.OpenRecordset(table)
   
    ' Konverter ja/nej til en integer brugbar for InStr()
    intCS = IIf(fCS, 2, 1)

   
    If Not Rst1.EOF Then
        Rst1.MoveLast
        Crst1 = Rst1.RecordCount
        Rst1.MoveFirst
       
        For I = 1 To Crst1
            StrToSearch = Rst1![tekstfelt]
            'søg efter teksten
            IntWhere = InStr(1, StrToSearch, strSearch, intCS)
            Do While IntWhere
                ' Udbyt nu med den fundne streng
                StrToSearch = Left$(StrToSearch, IntWhere - 1) & _
                StrErstat & _
                Mid$(StrToSearch, IntWhere + Len(strSearch))
                ' Find den næste forekomst
                IntWhere = InStr(IntWhere + Len(StrErstat), _
                StrToSearch, _
                strSearch, _
                intCS)
            Loop
            Rst1.Edit
            Rst1![tekstfelt] = StrToSearch
            Rst1.Update
            Rst1.MoveNext
        Next I
       
    Rst1.Close
    End If
    MsgBox " tabellen er nu opdateret"
End Sub
Avatar billede hnteknik Novice
29. april 1999 - 17:06 #8
Hov lad mig lige lave det til et rigtigt modul :

ret følgende:

Opdaterrecord "tabel1", "tekstfelt", "YtMedøl", "ØL", True

Sub Opdaterrecord(table As String, strfield As String, strSearch As String, StrErstat As String, fCS As Boolean)
   
Henrik
StrToSearch = Rst1(strfield) 'Rst1![tekstfelt]

Avatar billede akr Nybegynder
03. maj 1999 - 08:59 #9
Kære hnteknik,

1000-tak !

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