Thread: double quo
View Single Post
  #7  
Old October 5th, 2006, 04:35 PM posted to microsoft.public.access.forms,microsoft.public.access.formscoding,microsoft.public.access.modulesdaovba,microsoft.public.access.reports
Sylvain Lafontaine
external usenet poster
 
Posts: 528
Default double quo

You must understand the difference between sparsing and storing the internal
representation.

When the compiler parse a string that you have wrote, it must be able to
make a distinction between an embedded quote to must be stored along with
the other caracters (for example « shouldn"t » and a quote that is used to
indicate the end of the string. When you write something like "shouldn"t"
, the first and last " are not stored with the other caracters and are only
there to indicate to the compiler the beginning and the end of the string.
However, when the compiler see the embedded " followed by other alphanumeric
caracters, it doesn't know if this is the end of the string or an error that
you have made.

If you write two "", you are effectively telling the computer that this " is
not there to indicate the end of the string but is a caractere that must be
stored like every other caracters in the string. Howerver, even if you have
wrote two embedded double quotes, the compiler will store a single one (and
won't store the first and the last quotes that are only there to indicate
the beginning and the end of the string).

It's must clearer when you use another symbol like \ to separate any
embedded quote from the delimiters, like in C, C++ and C# :

... "shouldn\"t" ...

With SQL, you cant also use the single quote ' as the delimiter:

... 'shouldn"t' ...

Of course, you must then double any embedded single quote to have two single
quotes:

... 'shouldn''t' ...

With Chr(34), there is no need to tell the compiler when does it begin and
when does it end. The important thing to remember is that in all the above
cases, there is only one double quote (or single quote for the last example)
that got stored and that the other quotes that are used as delimiters are
not stored internally.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"BruceM" wrote in message
...
I guess I'll just have to accept that it works, and forget about
understanding how. My single biggest difficulty with VBA is understanding
quotes. I have read all kinds of explanations, but somehow I just can't
seem to get it. If I enter ?Chr(34) or ?Chr$(34) in the immediate window I
get a double quote, yet ?Asc(""") returns an error, even though Asc("'")
returns 39. In all cases except the double quote (all cases of printing
characters, at least, as far as I can tell), the Asc function returns the
literal value betweeen the double quotes, except when the literal value is
a double quote, in which case all bets are off.


Douglas J. Steele" wrote in message
...
In code, """" (four double quotes in a row) results in a one double
quote. Chr$(34) also results in a one double quote.

From the Immediate window (Ctrl-G)

?"""" = Chr$(34)
True


--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"BruceM" wrote in message
...
I'm curious as to how Chr(34), which is as I understand it a double
quote, could substitute for a pair of doubled quotes. I have seen this
suggestion before, but I don't understand it.

"Sylvain Lafontaine" sylvain aei ca (fill the blanks, no spam please)
wrote in message ...
Each double quote delimited by other double quotes must be doubled:

If temp_word """" Then ...

You could also use Chr(34):

If temp_word Chr(34) Then ...

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"00KobeBrian" wrote in message
...
I tried to write the following code in a module:

If temp_word """ Then

End If

But given syntax error. I want to check if the temp_word is equal to
a double quotation mark. How can I achieve this? Thanks.