Avatar billede jensen363 Forsker
25. januar 2006 - 20:27 Der er 6 kommentarer og
3 løsninger

Søg og Erstat funktion

Har netop modtaget 1,9 mio rækker med gadenavne og husnumre. Min fil-everandør har problemer med Æ,Ø og Å ( såvel STORE og små ).

En smart søg/erstat rutine eftersøges
Avatar billede ffsoft Praktikant
25. januar 2006 - 21:41 #1
Hvis det kun er en gang du skal gøre det så brug den indbyggede
søg og erstat (ctrl+h)
Er det noget der skal ske ofte skal du gennemløbe tabellen
og bruge replace()
Avatar billede jensen363 Forsker
25. januar 2006 - 21:48 #2
ffsoft > den er jeg opmærksom på, men der må være en limit på, hvor mange rækker den kan gennemløbe og foretage erstatninger for ... den stopper ihvertfald når den har finder og udskifter omkring 10.000 poster pr.gang, hvorefter man skat starte rutinen op igen ...

Jeg søger en modulkode, hvor jeg kan indsætte de 6 varianter der findes af specialtegn som skal udskiftet af korrekte tegn, og så sætte rutinen igang ...

Det er princippielt lige gyldigt hvor lang tid det tager at afvikle rutinen, bare resultatet er endeligt når rutinen er færdig
Avatar billede jensen363 Forsker
25. januar 2006 - 21:59 #3
Ok, fandt lige en fejl i Replace() modulkode
Avatar billede jesperfjoelner Nybegynder
25. januar 2006 - 23:07 #4
Hej Jensen >

Jeg har brugt denne tidligere ved import at en tekstfil. Måske kan du bruge den.

Du bruger den således:

= fixtegn("dintekst",1)
for at konvertere til normalt tekst.

Function FixTegn(tekst As String, Normal1Speciel2 As Integer) As String
'   = Ø
'  › = ø
'  † = å
'   = Å
'  ‘ = æ
'  ’ = Æ
'  ™ = ö
'  Ž = Ä

If Normal1Speciel2 = 1 Then
    'til normal
    tekst = Replace(tekst, "›", "ø")    '155/248
    tekst = Replace(tekst, "", "Ø")    '157/216
    tekst = Replace(tekst, "†", "å")    '134/229
    tekst = Replace(tekst, "", "Å")
    tekst = Replace(tekst, "‘", "æ")
    tekst = Replace(tekst, "’", "Æ")
    tekst = Replace(tekst, "™", "ö")
    tekst = Replace(tekst, "Ž", "Ä")
End If

If Normal1Speciel2 = 2 Then
    'til special
    tekst = Replace(tekst, "ø", "›")    '248/155
    tekst = Replace(tekst, "Ø", "")    '216/157
    tekst = Replace(tekst, "å", "†")    '229/134
    tekst = Replace(tekst, "Å", "")
    tekst = Replace(tekst, "æ", "‘")
    tekst = Replace(tekst, "Æ", "’")
    tekst = Replace(tekst, "ö", "™")
    tekst = Replace(tekst, "Ä", "Ž")
End If
'Debug.Print tekst
FixTegn = tekst
End Function
Avatar billede fynbohans Nybegynder
25. januar 2006 - 23:59 #5
Hvis du sender hvilke tegn du får i stedet for ÆØÅæøå (evt.ASCII), sender jeg en komplet opdaterings-rutine? Det udvidede tegnsæt har ændret sig i tidens løb.
Avatar billede fynbohans Nybegynder
26. januar 2006 - 00:35 #6
Det er strengt taget ikke nødvendigt at jeg kender tegnene.
Tegnene er her erstattet med tallene 1-6.
Koden lægges i en formular, der som du kan se, lukker sig selv, når processen er slut.
Formularen indeholder de to felter [ID] = atuonummerering og [GADENAVN].
Hvis du ønsker flere felter, By velsagtens, tilføjer du blot feltet og i koden endnu en
FOR/NEXT.

Private Sub Form_Open(Cancel As Integer)
        Dim SidsteNr As Long
        Dim Alfa(1:2,1:6) As String
        Dim Text as String
        Dim a As String
        Dim i aS Long


        Alfa(1,1) = "1"
        Alfa(2,1) = "2"
        Alfa(3,1) = "3"
        Alfa(4,1) = "4"
        Alfa(5,1) = "5"
        Alfa(6,1) = "6"

        Alfa(1,2) = "Æ"
        Alfa(2,2) = "Ø"
        Alfa(3,2) = "Å"
        Alfa(4,2) = "æ"
        Alfa(5,2) = "ø"
        Alfa(6,2) = "å"


        DoCmd.GoToRecord , , acLast
        SidsteNr = [ID]

        DoCmd.GoToRecord , , acFirst
       
             
        Do
            Text = [GADENAVN]

            FOR i = 1 TO 6
                Replace(Text,Alfa(i,1),Alfa(i,2))
            NEXT i
           
            If SidsteNr = [ID] Then Exit Do
            DoCmd.GoToRecord , , acNext
        Loop

        DoCmd.Close
End Sub
Avatar billede fynbohans Nybegynder
26. januar 2006 - 00:39 #7
Dim a As String er overflødig og Dim Alfa(1:2,1:6) As String skal erstattes af
Dim Alfa(1:6,1:2) As String.
Avatar billede fynbohans Nybegynder
26. januar 2006 - 00:42 #8
Og hvor lang tid tog det så?
Avatar billede jensen363 Forsker
26. januar 2006 - 09:41 #9
Takker for jeres indsats ... jeg havde allerede denne modulkode

Function DataVask()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()

    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""µ"",""æ"");"
        db.Execute strSQL
    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""°"",""ø"");"
        db.Execute strSQL
    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""Õ"",""å"");"
        db.Execute strSQL
    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""ã"",""Æ"");"
        db.Execute strSQL
    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""Ï"",""Ø"");"
        db.Execute strSQL
    strSQL = "UPDATE tblRutehusData SET tblRutehusData.Gade = Replace([Gade],""+"",""Å"");"
        db.Execute strSQL
       
    MsgBox ("Datavask er foretaget.")
       
End Function

.... men af een eller anden årsag, ville den ikke afvikles af een gang .... det virkede som om, at den kun løb 100.000 poster igennem, og fejlede ... dvs. stoppede og opdaterede så kun de poster den fandt blandt de 100.000 ....

... men har fået den til at køre tilfredsstillende ....

Tak for jeres iver ... også i nattetimerne
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