k_smee
asked on
Syntax for passing control value to SQL in Access VBA
Hi Experts,
I have an update query that runs an update via ADODB command, but I don't know how to pass the value of the form control to the SQL string. Here is what I have:
Private Sub Form_Close()
Dim myStr, strGroupSQL As String
Dim myRad24, myRad16, myRad4 As Boolean
Dim cmdCommand As ADODB.Command
Set cmdCommand = New ADODB.Command
Set cmdCommand.ActiveConnectio n = CurrentProject.Connection
myRad24 = Forms!frmLabels!radio24
myRad16 = Forms!frmLabels!radio16
myRad4 = Forms!frmLabels!radio4
strGroupSQL = "UPDATE Tbl_Persistent SET Radio24 = & myRad24 & "
cmdCommand.CommandText = strGroupSQL
cmdCommand.Execute
End Sub
I know the issue is with the syntax for the control, but I don't know where to find the "rules" for how to treat the control to pass it in.
THanks!
Kevin
I have an update query that runs an update via ADODB command, but I don't know how to pass the value of the form control to the SQL string. Here is what I have:
Private Sub Form_Close()
Dim myStr, strGroupSQL As String
Dim myRad24, myRad16, myRad4 As Boolean
Dim cmdCommand As ADODB.Command
Set cmdCommand = New ADODB.Command
Set cmdCommand.ActiveConnectio
myRad24 = Forms!frmLabels!radio24
myRad16 = Forms!frmLabels!radio16
myRad4 = Forms!frmLabels!radio4
strGroupSQL = "UPDATE Tbl_Persistent SET Radio24 = & myRad24 & "
cmdCommand.CommandText = strGroupSQL
cmdCommand.Execute
End Sub
I know the issue is with the syntax for the control, but I don't know where to find the "rules" for how to treat the control to pass it in.
THanks!
Kevin
Since you are building an inline SQL statement, you need to escape any special characters.
So if you want your update statement to be:
update tbl_persistent set radio24 = "Tommy Boy"
where Tommy Boy is the value of forms!frmlabels!radio24, then that value can contain no special characters that would terminate the SQL. So if the value were Tommy "AKA Tom" Boy, your resultant SQL statement would be:
update tbl_persistent set radio24 = "Tommy "AKA Tom" Boy"
The problem is that the " before AKA stops the string you are setting radio24 equal to and you will get an invalid syntax near AKA error. To solve this, you can replace any single quotes with double quotes. by doing the following:
myRad24 = replace(Forms!frmLabels!ra dio24,"""" , """""")
myRad16 = replaceForms!frmLabels!rad io16 ,"""", """""")
myRad4 = replace(Forms!frmLabels!ra dio4 ,"""", """""")
Now this may look a bit confusing because there are more than one " in the lines, but even in this case, they need to be escaped.
so inside of the " " that creates a string, a "" represents the value of ". So """" represents "", which will escape down to " once you execute strGroupSQL.
So if you want your update statement to be:
update tbl_persistent set radio24 = "Tommy Boy"
where Tommy Boy is the value of forms!frmlabels!radio24, then that value can contain no special characters that would terminate the SQL. So if the value were Tommy "AKA Tom" Boy, your resultant SQL statement would be:
update tbl_persistent set radio24 = "Tommy "AKA Tom" Boy"
The problem is that the " before AKA stops the string you are setting radio24 equal to and you will get an invalid syntax near AKA error. To solve this, you can replace any single quotes with double quotes. by doing the following:
myRad24 = replace(Forms!frmLabels!ra
myRad16 = replaceForms!frmLabels!rad
myRad4 = replace(Forms!frmLabels!ra
Now this may look a bit confusing because there are more than one " in the lines, but even in this case, they need to be escaped.
so inside of the " " that creates a string, a "" represents the value of ". So """" represents "", which will escape down to " once you execute strGroupSQL.
ASKER
My problem is I need to be able to dyanmically pass whatever value is in Forms!frmLabels!radio24. So I couldn't set a literal value like "Tommy Boy".
I know there are different syntax for passing in the value of different data types - this one is a boolean.
I just did trial and error. I don't know how to do it again.
I know there are different syntax for passing in the value of different data types - this one is a boolean.
I just did trial and error. I don't know how to do it again.
What kind of value is the Field Radio24 in the Database? If it is Text field, then the val7ue to be passed must be enclosed in quote marks '...'. If it a numeric field, then you do not use the enclosing quote marks.
ASKER
The field Radio24 is set "Yes/No". So that would be a boolean, correct?
I did say:
"So if you want your update statement to be:"
as arthur pointed out in http:#22712219, the use of quotes is dependent upon the data type of the field. For example, datetime fields I believe need to be wrapped in # for access.
"So if you want your update statement to be:"
as arthur pointed out in http:#22712219, the use of quotes is dependent upon the data type of the field. For example, datetime fields I believe need to be wrapped in # for access.
ASKER
Gotcha, Brandon. I guess my main question at this point is there some guide to how to treat a variable like myRad24? So for a boolean this worked:
" & myRad24 & ""
For a date this might work:
# & myRad24 & #"
For the rest. I don't know...
" & myRad24 & ""
For a date this might work:
# & myRad24 & #"
For the rest. I don't know...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
What if it is set to String?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks guys!
Glad to be of assistance
AW
AW
ASKER
strGroupSQL = "UPDATE Tbl_Persistent SET Radio24 = " & myRad24 & ""
The variable myRad now has a double quote, ampersand on both sides, but it would still benice to know how the rules.