PDA

Click to See Complete Forum and Search --> : Aaron - Help Please


WadeD
Jan 26th, 2000, 01:57 AM
I know this is simple, but the following code gives me not a not enough parameters error from vb (Access backend). However, if I paste this SQL generated at runtime into Access, it creates the record. Can you use quotations in RDO or ADO? Am I doing something wrong?

strString = "Can't print on all computers"
sSQL = "INSERT INTO [MainRep] ([Service Description]) " & "VALUES (" & """" & strString & """" & ");"
txtTestSQL = sSQL

I used """" around each side to pass "Can't print on all computers" because of the ' in Can't

Thanks,
Wade

[This message has been edited by WadeD (edited 01-26-2000).]

Aaron Young
Jan 26th, 2000, 02:09 AM
You should use Apostrophes (') to enclose Text in a SQL Statement, or if you want or have to use DoubleQuotes (") then you can use Chr(34), otherwise VB interprets them as String Parameters, ie.
strString = "Can't print on all computers"
sSQL = "INSERT INTO [MainRep] ([Service Description]) " & "VALUES ('" & strString & "'" & ");"
txtTestSQL = sSQL

'Or..

strString = "Can't print on all computers"
sSQL = "INSERT INTO [MainRep] ([Service Description]) " & "VALUES (" & Chr(34) & strString & Chr(34) & ");"
txtTestSQL = sSQL


------------------
Aaron Young
Analyst Programmer
aarony@redwingsoftware.com
ajyoung@pressenter.com

WadeD
Jan 26th, 2000, 02:17 AM
I tried the second one with chr(34) so I could send the ' in can't. VB gave me the following run-time error:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

I copied the sql statement that it put in txtTestSQL into Access and it runs from there without modification. I know I used to send quotations in DAO. Can you do the same in RDO or ADO?

Thanks,
Wade

Jan 26th, 2000, 02:20 AM
Aaron For President !!!

netSurfer
Jan 26th, 2000, 02:25 AM
I second the motion! Should we elect the entire cabinet for him?

Aaron Young
Jan 26th, 2000, 02:26 AM
Oh, ok..

I hadn't even noticed the contents of your String Vairable.. as SQL uses th Apostrophe to enclose Strings, it's interpreting the one in your string as the beginning of a string, but there isn't another so you get the Error.

to get around this, you must double up on any Apostrophes in your Strings, ie.

strString = "Can''t print on all computers"

If you have VB6, use the Replace Function, ie.

strString = "Can't print on all computers"
sSQL = "INSERT INTO [MainRep] ([Service Description]) VALUES ('" & Replace(strString, "'", "''") & "');"
txtTestSQL = sSQL


------------------
Aaron Young
Analyst Programmer
aarony@redwingsoftware.com
ajyoung@pressenter.com

jpark
Jan 26th, 2000, 02:26 AM
I've just got test out your code, and didn't get any error.

I use ADO and Access2000.(If Access97, then the provider should be Provider = Microsoft.Jet.OLEDB.3.51)

Option Explicit
Private cn As ADODB.Connection

Private Sub Command1_Click()
Dim strSQL As String
Dim strString As String
Dim r As Integer

strString = "Can't print on all computers"
strSQL = "INSERT INTO [Test] ([Desc]) " & "VALUES (" & """" & strString & """" & ");"
cn.Execute strSQL, r

MsgBox "Appened " & r & " record"
End Sub

Private Sub Form_Load()
Set cn = New ADODB.Connection
Dim strCn As String

strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& "C:\WINNT\Profiles\jpark.000\Desktop\NEW COPYOFKDS\empty.mdb;" _
& "Persist Security Info=False"

cn.Open strCn
End Sub

Private Sub Form_Unload(Cancel As Integer)
cn.Close
Set sn = Nothing
End Sub


Joon

WadeD
Jan 26th, 2000, 02:45 AM
Aaron,
That works..thanks!

Jpark,
I'm not sure why it didn't work for me as is, if it works on yours, but I'll save your code. Thanks for the effort!

Wade