Avatar billede zoone Nybegynder
23. juni 2005 - 11:04 Der er 8 kommentarer og
1 løsning

Replace kode

Hvis jeg har en tabel der hedder "allpics" og deri er der en kolonne der hedder "dir_file" hvilket fx. indeholder:

\Billede\abc\web\pic1.jpg
\Billede\xyz\print\picture24.gif
\Billede\123\logopicture.tif

Jeg ønsker at lave en funktion der kan erstatte "\" med "/" så resultater bliver:

/Billede/abc/web/pic1.jpg
/Billede/xyz/print/picture24.gif
/Billede/123/logopicture.tif
23. juni 2005 - 11:07 #1
replace findes allerede i Access 2000 eller senere.

Lav en forespørgsel med denne SQL:

update Dintabel Set Ditfelt = Replace(Ditfelt, "\", "/")
Avatar billede zoone Nybegynder
23. juni 2005 - 11:11 #2
Det kan jeg ikke umiddelbart få til at virke, jeg kører det som kode fra VBA delen i access...

Min kode er således:

CurrentDb.Execute "DELETE * FROM [allpics]"
DoCmd.OpenQuery "Append new allpics from textfile"

og så skal jeg ha replacen ind herefter...
Avatar billede zoone Nybegynder
23. juni 2005 - 11:13 #3
Og Thomasjepsen, jeg havde lige et sidespørgsmål i min anden tråd http://eksperten.dk/spm/627970 til dig :D
Avatar billede zoone Nybegynder
23. juni 2005 - 11:28 #4
Faktisk vil jeg gerne ha replacen til at resultere i

/abc/web/pic1.jpg
/xyz/print/picture24.gif
/123/logopicture.tif

hvilket vil sige at jeg vil fjerne "\billede\" OG replace de andre "\" med "/", så det er vel lidt en 2 replaces i 1 funktion jeg søger...
Avatar billede mugs Novice
23. juni 2005 - 11:52 #5
Thomas Jepsen's kode burde fungere i en forespørgsel:

update Dintabel Set Ditfelt = Replace(Ditfelt, "\", "/")

Hvis du vil køre den fra VBA skal den se således ud:

docmd.runsql "update Dintabel Set Ditfelt = Replace(Ditfelt, "\", "/")"
Avatar billede mugs Novice
23. juni 2005 - 12:02 #6
Du kan uddrage et del af en tekst med denne:

Left(String:=felt1, length:=(InStr(1, felt1, "/", 1) - 1))
23. juni 2005 - 12:43 #7
Dvs, at du kun ønsker selve stien (uden filnavn) og med  \ i stedet for /?

Så ville jeg lave det i 2 omgange:

Første erstatter du \ med /:
currentdb.execute "update Dintabel Set Ditfelt = Replace(Ditfelt, "\", "/")"

Derefter fjerner du filnavnet: Dette gøres ved at lægge nedenstående funktion i et modul:

Function Extractpath(path As String, Optional RemoveBackslash = False) As String
    Extractpath = Left(path, InStrRev(path, "\") + RemoveBackslash)
End Function


Herefter ser SQL'en således ud:
currentdb.execute "update Dintabel Set Ditfelt = Extractpath(Ditfelt, True)"
Avatar billede zoone Nybegynder
23. juni 2005 - 13:07 #8
takker folkens
23. juni 2005 - 13:08 #9
selv 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