I think I’m sure that the query passed to Access contains those extra
quotes. My program inserts new rows if the query is a simple “SELECT * from
pens” (funny how all the examples stop there!) but as soon as I add a ‘where’
clause then it fails. It should be returning zero records at this stage but
that shouldn’t cause the error I’m seeing. I’m testing for zero records
returned.
From:
lnotes-l-new@yahoogroups.com [mailto:lnotes-l-new@yahoogroups.com] On Behalf
Of David Clark
Sent: 02 July 2009 18:34
To: lnotes-l-new@yahoogroups.com
Subject: RE: [lnotes-l] A simple Enquote() function (was: Generating a
SQL query string)
I guess it is a debugger ‘thing’. If I
print the string I’ve generated then it’s fine. However the same string
assigned to the ODBCREsultSet.query shows the duplicated sets of quotes.
I wonder how I can see what is actually passed to Access?
From:
lnotes-l-new@yahoogroups.com [mailto:lnotes-l-new@yahoogroups.com] On Behalf
Of jdillon@...
Sent: 02 July 2009 18:14
To: lnotes-l-new@yahoogroups.com
Subject: RE: [lnotes-l] A simple Enquote() function (was: Generating a
SQL query string) [2 Attachments]
[Attachment(s)
from jdillon@... included below]
No, this is a function we include in a standard
script library that we share across all our applications.
_____________________________________________________
Thanks
Is this just a debugger thing then? I’ve done it via the enquote
function but the debugger shows two pairs either side. It seems that
somehow these string values already have quotes. However if I miss out the
enquote I don’t any quotes at ll.
From: lnotes-l-new@yahoogroups.com [mailto:lnotes-l-new@yahoogroups.com]
On Behalf Of jdillon@...
Sent: 02 July 2009 17:36
To: lnotes-l-new@yahoogroups.com
Subject: [lnotes-l] A simple Enquote() function (was: Generating a SQL query
string)
Another option is to use a simple Enquote() function. Here's what I
wrote:
Public Function EnQuote( strIn As
String ) As String
' return a
given input string wrapped in quotation marks
' this is
especially useful when creating a CSV file
On Error
Goto errHandler
EnQuote =
Chr$( 34 ) & strIn & Chr$( 34 )
Goto Done
errHandler:
' use your
own code here: Call ErrorMessage( Err, Erl, Error$, Lsi_info( 2 ), False )
Resume
Done
Done:
End Function
Now when I build a string with lots of quotes, it looks something like this:
strNew = "<img src="
& Enquote( strImg ) _
& "
width=" & Enquote( Cstr( intWidth ) ) _
& "
height=" & Enquote( Cstr( intHeight ) ) _
& "
alt=" & Enquote( strAltTextIsImportant ) _
& "
title=" & Enquote( strImgTitle ) _
&
">"
All the other methods (defining a QUOTE const, escaping quotes, etc) work too.
_____________________________________________________
One thing I do to make this whole process less confusing is assign the quote
character to a variable, let's call it Q, so you get code like this:
Q = |'|
sql_query = "select * from t_names where lastname = " + quote +
"Jones" + quote
That simply makes the line easier to read and keep track of whether you've
closed all your quotes.
Robert D. Marshall
rdm@...
678-596-9095
From: lnotes-l-new@yahoogroups.com [mailto:lnotes-l-new@yahoogroups.com]
On Behalf Of David Clark
Sent: Thursday, July 02, 2009 10:45 AM
To: lnotes-l-new@yahoogroups.com
Subject: [lnotes-l] Generating a SQL query string
I’m trying to create a string to be used in a SQL query where field values
are used as part of the string. It seems that these must be enclosed in
quotes to cope with empty values, the problem is that I always get a double set
so instead of “test” I get “”test””.
Two methods are suggested for this:
1. Use different delimiters such as | When I use this as the
outer delimiter I get the above effect so |Where pen_id = “| + doc.penid(0) +
|“| leads to “Where pen_id = “”test””” (in the debugger anyway).
If I use as the inner delimiter around the variable it works in so far as
it gives “Where pen_id = |test|” but this isn’t valid SQL.
2. The other method I found says at if you want to include a quotation mark
( or pipe) then enter a double one. This is, I suppose, analogous to ‘escaping’
it. This becomes quite comical as |Where pen_id = “”| + doc.penid(0) +
|””| leads to “Where pend_id = “””test””” and “Where pen_id = “”” +
doc.penid(0) + “””” isn’t much better.
In the debugger, of course, the values of string variables are shown with
quotes around them – it’s like I don’t need the quotes but if miss them out of
the string generation I don’t get any.
I don’t have much hair as it is so help gratefully received.
--> --> -->
--> --> -->