[VBA] quotes in string krijgen lukt niet

Pagina: 1
Acties:
  • 844 views sinds 30-01-2008
  • Reageer

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 26-12-2025
Ik probeerde wat aan te passen, helaas niet zoveel kennis van Access VBA. En google hielp me niet verder deze keer.

Even uit mijn hoofd, zit namelijk niet op het werk, dus doe het even simpel.

De bedoeling was één string op te bouwen door stukken tekst en variabelen aan elkaar te plakken, die string wordt in een shell als dos opdracht uitgevoerd. Simpel dus zou je zeggen.

Totdat de string quotes moest bevatten zoals -subject "bla bla bla" toen ging het mis.

Ik dacht even slim te zijn met:
dim x, y as string
y = "bla bla ba"
x = "-subject " & """ & y & """ ( dus 3 x dubbele quote )

Maar dan is x iets als: -subject & bla bla bla &
Ik heb ook al enkele quotes geprobeerd ' " ' en " ' " (zonder spaties) en char34, het maakte niet uit. maar als ik x = "-subject " & "/" & y & "/" doe dan staat er -subject /bla bla bla/ dus het principe klopt ergens wel, alleen als er een dubbele quote van maak ipv / gaat het weer mis.

Wat zie ik toch over het hoofd?

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • momania
  • Registratie: Mei 2000
  • Laatst online: 21:31

momania

iPhone 30! Bam!

escapen met \ :?

dus "bla \" bla" wordt dan -> bla " bla :)

Neem je whisky mee, is het te weinig... *zucht*


  • mrbullet
  • Registratie: Januari 2002
  • Niet online
gebruik de asci-keycode ipv "

Pana 5j


  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 16-02 12:21

edeboeck

mie noow noooothing ...

Blijkbaar wist je niet goed waarop te zoeken in Google, want mijn eerste hit was meteen prijs:
[google=VBA quotes].

Dit zou je wel verder moeten kunnen helpen.

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 16-02 12:21

edeboeck

mie noow noooothing ...

momania schreef op maandag 26 juni 2006 @ 21:50:
escapen met \ :?

dus "bla \" bla" wordt dan -> bla " bla :)
Ik weet het niet zo hoor, maar heb je dit wel getest???

Maak gewoon een (lege) testdb aan in Access, moduletje toevoegen en kleine testprocedure maken:
Visual Basic:
1
2
3
4
5
Sub testje()
    Dim testje As String
    testje = "bla \" bla"
    Debug.Print testje
End Sub

Je zal merken dat je dit niet eens kan uitvoeren (kijk trouwens eens goed: zelfs de online code highlighter van Tweakers markeert al de fout!)
Onderstaande code is wel correct:
Visual Basic:
1
2
3
4
5
Sub testje()
    Dim testje As String
    testje = "bla "" bla"
    Debug.Print testje
End Sub

M.a.w. quotes binnen string gewoon verdubbelen ...

  • macnerd
  • Registratie: Oktober 2002
  • Laatst online: 23:08

macnerd

No Apples please :-)

Op zich allemaal niet zo moeilijk hoor. Escapen van dubbele quotes in VBA doe je door twee dubbele quotes neer te zetten. In je voorbeeld betekent dit effectief 4 quotes: 1 om een string te beginnen, 2 voor de in te voegen quote en 1 om de string te beëindigen. Ofwel:
code:
1
2
3
Dim x, y As String
y = "bla bla ba"
x = "-subject " & """" & y & """"


Met ASCII codes kan ook. Hiervoor gebruik je de functie Chr():
code:
1
2
3
Dim x, y As String
y = "bla bla ba"
x = "-subject " & Chr(34) & y & Chr(34)


Escapen met een backslash werkt niet in VBA, maar wel in sommige andere talen als C, PHP en waarschijnlijk ook Java. Succes ermee!

MacNerd


  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 26-12-2025
Edeboeck: Google had ik wel al goed gedaan, vandaar die enkel quotes, maar dat is bedoeld voor SQL (die ken ik wel) en ik heb geen SQL nodig. Dus het werkt niet voor wat ik nodig heb.

Momania: die / was even een voorbeeld had elk teken cq letter kunnen staan. Ik wilde alleen aangeven dat de regel goed was zolang het teken tussen de quotes zelf geen quote was.

mrbullet: escape code, die ken ik even niet (ben geen programmeur) is dat wat anders dan de char (34) truuk?

Edeboeck: ja ik had het al geprobeerd een uur lang zelfs en het werkte binnen access, geen foutcode met zowel "/" of """ om de variabele heen allen was het eindresultaat wat vreemd :)
.
Punt is dat ik een string heb (-subject) en daar de waarde uit var aan moet plakken bla bla dus. Maar omdat die bla bla een spatie bevat knalt de shell opdracht eruit. Dus moet ik de waarde uit var eerst tussen quotes zien te krijgen zodat de hele string uiteindelijk bevat

-subject "bla bla" ipv
-subject bla bla

dus 4 quotes gebruiken had ik ook al geporbeerd maar zonder het gewenste resultaat

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 26-12-2025
macnerd: ik geloof dat het kwartje begint te vallen voor de 4 quotes, vraag het me alleen niet om uit te leggen. Je moet een dubble quote tussen 2 quotes zetten, vandaar 4 ipv 3 quotes. Tjezus daar was ik echt niet zelf opgekomen, thanks

Ik heb hier even geen access liggen maar ik ga het morgen meteen proberen.

Allemaal bedankt voor jullie hulp btw , het was een leerzame dag :)

[ Voor 19% gewijzigd door ErikRo op 26-06-2006 22:27 ]

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • macnerd
  • Registratie: Oktober 2002
  • Laatst online: 23:08

macnerd

No Apples please :-)

Graag gedaan hoor :)

Nog even ter verduidelijking: je hebt bij strings altijd een quote aan het begin en altijd eentje aan het einde. Voor iedere dubbele quote in het resultaat moet je er vervolgens 2 neerzetten in je code.
Ter vergelijking even een stukje ASP-code (VB-Script, dus verwant aan VBA) voor een linkje naar een homepage:
code:
1
Response.Write "<a href=""index.html"">Naar de homepage</a>"

Dit levert dus op:
code:
1
<a href="index.html">Naar de homepage</a>

't Wordt pas echt leuk als je bv. moet escapen in een query op Oracle, via MS SQL Server met behulp van OpenQuery. Dan moet je dus 4 quotes toevoegen om er uiteindelijk 1 in het resultaat te krijgen 8)7

Maar goed, hier niet belangrijk dus. Veel succes bij je applicatie!

[ Voor 14% gewijzigd door macnerd op 26-06-2006 22:49 ]

MacNerd


  • momania
  • Registratie: Mei 2000
  • Laatst online: 21:31

momania

iPhone 30! Bam!

edeboeck schreef op maandag 26 juni 2006 @ 22:00:
[...]

Ik weet het niet zo hoor, maar heb je dit wel getest???
Ik wist niet dat het in VB weer anders was dan andere talen :)

weer wat geleerd :P

Neem je whisky mee, is het te weinig... *zucht*


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 19-02 12:24
Hmm vraag me af waarom mijn voorkeur naar de chr$ versie gaat.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1