14. december 2000 - 15:01Der 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?
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
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?
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...
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.
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.
Synes godt om
Ny brugerNybegynder
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.