jwcolby
jwcolby at colbyconsulting.com
Thu Jan 22 15:00:25 CST 2009
James, When I try to run the function I get an error on the 4th executable line: conn.open Multi-step ole db operation generated errors. John W. Colby www.ColbyConsulting.com James Barash wrote: > John: > Here is a procedure I use in Access to call a stored procedure in SQL with > parameters. It takes two integer parameters. You will need to add a > Reference to the Microsoft ActiveX Data Objects library. It should give you > everything you need to start. > Hope it helps. > > James Barash > > Public Sub SetOrderStatus(ID As Long, Status As Integer) > Dim conn As ADODB.Connection > Dim cmd As ADODB.command > > On Error GoTo HandleErr > > Set conn = New ADODB.Connection > conn.ConnectionString = > "PROVIDER=MSDASQL;uid=<UserID>;pwd=<Password>;driver={SQL > Server};server=<ServerName>;database=<DatabaseName>" ' substitute proper > credentials here > conn.CursorLocation = adUseClient > conn.Open > If conn.State <> adStateOpen Then > msgbox "Error opening Connection" > set conn = Nothing > Exit Sub > End if > > > Set cmd = New ADODB.command > With cmd > Set .ActiveConnection = conn > .CommandType = adCmdStoredProc > .CommandText = "sp_SetOrderStatus" ' name of stored procedure > .Parameters.Append cmd.CreateParameter("ID", adInteger, adParamInput, , > ID) 'parameters must be defined in order > .Parameters.Append cmd.CreateParameter("Status", adInteger, > adParamInput, , Status) > .Execute > End With > Set cmd = Nothing > conn.Close > Set conn = Nothing > > Exit Sub > > HandleErr: > Select Case err.Number > Case Else > MsgBox "Error " & err.Number & ": " & err.Description, vbCritical, > "basCustom.SetOrderStatus" > End Select > End Sub > > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby > Sent: Thursday, January 22, 2009 1:42 PM > To: Access Developers discussion and problem solving > Subject: Re: [AccessD] Stored procedures from Access > > Martin, > > Thanks for the links. In fact I found the first, and it > will no doubt be useful to me someday however... > > I have pretty complex (to me at least) set of stored > procedures created out in SQL Server. For example I have a > stored procedure that does a BCP out to export data from a > table for processing by a third party called Accuzip > (address validation). The data in the table is name / > address information that has to be exported to files in a > specific directory, on a specific server (actually a virtual > machine here in my office). The virtual machine is running > Accuzip, which is is watching that folder. As I place files > into the watched directory, Accuzip starts processing them, > and placing processed files into an "output" directory. I > then have to get the files back into SQL Server. I have a > matching set of stored procedures that BCP the data back in > to a table in SQL Server. > > So what I am trying to accomplish is simply tap SQL Server > on the shoulder and say "hey, execute SPXXX in database > YYYY, with these parameters". > > This is not about getting a result set to bind to a form or > control, this is about telling SQL Server to do some > specific stored procedure, to perform some process. > > Once Accuzip processes the input files and creates the > output files, I then need to tap SQL Server on the shoulder > and say "hey, execute this Stored Procedure in database YYY > with these parameters. The end results will be to import > the files back into SQL Server. > > I have all of the stored procedures created, and have used > them for quite some time, however it still takes significant > manual labor to manually tap SQL Server on the shoulder. > > I want to tie the pieces together from Access. > > This is a very well defined process, but the database name, > stored procedure names and table names can change from run > to run. > > I kind of envisioned something like Charlotte's function > that would do exactly this... tap SQL on the shoulder and > tell it to do something, passing in parameters as required. > Unless it is somehow required in order to accomplish this > task, I have no need for pass through queries in Access, no > need for linked tables to SQL Server, no need for loading > data into forms or combos etc. > > I might someday, but not for this specific task. > > John W. Colby > www.ColbyConsulting.com > > >