Avatar billede billeschou Nybegynder
14. december 2000 - 15:01 Der er 13 kommentarer og
1 løsning

apostroffer i strenge

Jeg sidder i øjeblikket og arbejder på en database der blandt andet indeholder hollandske bynavne. Disse bynavne kopierer jeg ved hjælp af recordsets fra en tabel til to andre tabeller. Jeg benytter strengsammenligning for at kontrollere om bynavnene allerede eksisterer i den af de to destinationstabeller, der kun indeholder bynavne. Mit problem er ganske enkelt at visse hollandske bynavne indeholder apostroffer, f. eks. \'t Harde
Det får Access til at melde om syntaksfejl, da den streng der indeholder mit søgekriterie, for eksempel ser sådan ud:
\"TO_TEXT = \'\'t Harde\'\"

Den overflødige apostrof stammer naturligvis fra bynavnet.

Jeg har selv tænkt på at løse problemet ved at benytte Like på resultatet af en algoritme der fjerner eventuelle apostroffer fra bynavnet, men det vil have den konsekvens, at de bynavne der er i destinationstabellerne så mangler apostrofferne.
I øvrigt er det ikke sikkert at eventuelle apostroffer i bynavne er det første tegn.

Håber I forstår hvad jeg mener.

Nogle der har en bedre ide end mit løsningsforslag?
Avatar billede Slettet bruger
14. december 2000 - 15:06 #1
<%
Apostrof = Replace(theText,\"\'\",\"\'\'\")
%>

Sådan... Håber du forstår...
Avatar billede Slettet bruger
14. december 2000 - 15:06 #2
<%
Apostrof = Replace(theText,\"\'\",\"\'\'\")
%>

Sådan... Håber du forstår...
Avatar billede ikuyucu Nybegynder
14. december 2000 - 15:08 #3
Du skal bruge Chr(96) istedet for din apostrof når du tjekker
Avatar billede billeschou Nybegynder
14. december 2000 - 15:11 #4
Jeg forstår det vist nok, selv om jeg ikke helt forstår syntaksen (<% og %>)... jeg må hellere forklare at jeg programmerer i VB (IKKE VBA). Så vidt jeg kan se vil jeg med dit forslag desuden stadig stå tilbage med problemet med de manglende apostroffer i destinationstabellerne
Avatar billede billeschou Nybegynder
14. december 2000 - 15:15 #5
ikuyucu >> hvorfor ikke Chr(39)? (kiggede lige i Ascii-tabellen)
Avatar billede ikuyucu Nybegynder
14. december 2000 - 15:18 #6
Ups du har ret det skulle have være 39
Avatar billede billeschou Nybegynder
14. december 2000 - 15:24 #7
ok men hvis jeg ændrer den streng der opbygger mit søgekriterie fra
strCriteria = \"TO_TEXT = \'\" & rstMediaFrom![Town] & \"\'\"
til
strCriteria = \"TO_TEXT = \" & Chr(39) & rstMediaFrom![Town] & \" & Chr(39) \"
er jeg jo ligevidt... eller hvad?
Avatar billede billeschou Nybegynder
14. december 2000 - 15:25 #8
glemte lige et & før sidste \"
Avatar billede ikuyucu Nybegynder
14. december 2000 - 15:34 #9
Det forstår jeg ikke. Her er en ide:

Du laver dine apostroffer om til _
Laver dit tjek osv.
Ændrer _ til \'
Avatar billede ikuyucu Nybegynder
14. december 2000 - 15:37 #10
Bruger du ikke sql til det?
Avatar billede ikuyucu Nybegynder
14. december 2000 - 15:40 #11
SELECT Tabel1.By, Tabel1.ID, Tabel1.tal, Tabel1.tal2
FROM Tabel1, Tabel2
WHERE (((Tabel1.By)=[tabel2].[By]));
Giver de byer som er ens
Avatar billede billeschou Nybegynder
14. december 2000 - 15:50 #12
Det lyder fornuftigt, desværre er mit check som følger:
rstTown.FindFirst strCriteria
hvor strCriteria er \"TO_TEXT = \'\" & strReplaced & \"\'\" og strReplaced er ReplaceChar(rstMediaFrom![Town], \"\'\", Chr(39))
efter checket vil jeg så sætte strReplaced til:
ReplaceChar(rstMediaFrom![Town], Chr(39), \"\'\"))

Skulle jeg bruge dit forslag - som har givet mig en del inspiration - ville bynavnene blive indsat (såvidt jeg kan tænke mig til) da \'t Harde vil blive til _t Harde. De to strenge er ikke ens og derfor vil strReplaced blive sat ind i tabellen, men strReplaced er jo nu \'t Harde, altså samme værdi som allerede findes i tabellen...
Avatar billede ikuyucu Nybegynder
14. december 2000 - 16:13 #13
Hvis du bruger
ReplaceChar(rstMediaFrom![Town], Chr(39), \"\'\"))
skifter du \' med \' altså det vil ikke du (uden at være helt sikker),

Det som du kan gøre er at tage den første karakter se om det er en \',
Hvis det er det så tag resten at stengen, hvis ikke så lav en normal tjek, det skulle også gøre det.

Det med at du ændrer \' til _ skullel kun være i din variabel, når du så har tjekket laver du din variabel om igen. Det ovenfor vil løse dit problem uden at skulle lave noget om. Du skal at operere med substrenge istedet for.
Avatar billede ikuyucu Nybegynder
14. december 2000 - 16:14 #14
Du kan også hente din post ind i en variabel også tjekke om de to variabler er en, det vil også løse dit problem.
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