Passing parameters to action stored procedures using ADO, in Access Project

A

Allen Browne

Please do not post the same question to many groups.

You lose out by the fragmentation of replies.

Those who could answer your question may not bother.

If you believe that your question validly requires posting to multiple
places, you could make a single post to the groups, so follow ups also make
it to the different groups.
 
S

Sylvain Lafontaine

Access is able to write in many date format but not necessarily to read them
back. In converting back from a string to a datetime type, the local
regionalizatin setting seems to be lost in your case. Convert you string
formated date to a better representation, like mm/dd/yyyy (or maybe
#dd.mm.yyyy#, as it is possible that the enclosing # will tell Access to use
localization settings but I'm not sure) in case, before setting the
parameter.

To make sure, transfert your date string to a variable of DateTime type
before setting the parameter.

S. L.
 
Z

zlatko

There is a form in an Access Project (.adp, Access front end with SQL
Server) for entering data into a table for temporary storing. Then, by
clicking a botton, several action stored procedures (update, append) should
be activated in order to transfer data to other tables.

I tried to avoid any coding in VB, as I am not a professional, but I have
found a statement in an article, that, unlike select queries, form's Input
Property can't be used for action queries. Therefore, parameters can be
passed to action stored procedure only by using ADO through VB.

As I'm not very familiar with VB, I had to search in literature.

So, this is a solution based on creating Parameter object in ADO and then
appending values to Parameter collection.

Please, consider the following procedure I created for passing parameters
from form's control objects (Text boxes) to a stored procedure
DTKB_MB_UPDATE:





Private Sub Command73_Click()



Dim cmd As ADODB.Command



Set cmd = New ADODB.Command



cmd.ActiveConnection = CurrentProject.Connection

cmd.CommandText = "DTKB_MB_UPDATE"

cmd.CommandType = adCmdStoredProc



Dim par As ADODB.Parameter



Set par = cmd.CreateParameter("@DATE", adDBTimeStamp, adParamInput)

cmd.Parameters.Append par

Set par = cmd.CreateParameter("@BATCH_NUMBER", adVarWChar, adParamInput, 50)

cmd.Parameters.Append par

Set par = cmd.CreateParameter("@STATUS", adVarWChar, adParamInput, 50)

cmd.Parameters.Append par

Set par = cmd.CreateParameter("@DEPARTMENT", adVarWChar, adParamInput, 50)

cmd.Parameters.Append par

Set par = cmd.CreateParameter("@PRODUCTION", adVarWChar, adParamInput, 50)

cmd.Parameters.Append par

Set par = cmd.CreateParameter("@SAMPLING_TYPE", adVarWChar, adParamInput,
50)

cmd.Parameters.Append par



cmd.Parameters("@DATE") = Me.DATE

cmd.Parameters("@BATCH_NUMBER") = Me.BATCH_NUMBER

cmd.Parameters("@STATUS") = Me.STATUS

cmd.Parameters("@DEPARTMENT") = Me.DEPARTMENT

cmd.Parameters("@PRODUCTION") = Me.PRODUCTION

cmd.Parameters("@SAMPLING_TYPE") = Me.SAMPLING_TYPE



cmd.Execute



Set cmd = Nothing



End Sub





Unfortunately, when clicking on the botton, the following error apears:



"Run-time error'-2147217913 (80040e07)':Syntax error converting datetime
from character string."



Obviously, there is some problem regarding parameter @DATE. In SQL Server it
is datetime, on the form's onbound text box it is short date (dd.mm.yyyy)
data type. I have found in literature that in ADO it should be
adDBTimeStamp.

So, what is the problem ?



Greetings,



Zlatko
 
Z

Zlatko

Hello, Sylvain,

You had right.
I have changed to cmd.Parameters("@DATUM_ISPITIVANJA") =
Format(Me.DATUM_ISPITIVANJA, "mm/dd/yyyy"), and now it works.
Thanks.
 
Top