Results 1 to 11 of 11

Thread: [RESOLVED] Stored Procedures with Parameters using ADO

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Resolved [RESOLVED] Stored Procedures with Parameters using ADO

    I have a stored procedure that is like this

    VB Code:
    1. CREATE PROCEDURE usp_insertPatternData
    2. @DateTime datetime,
    3. @laserNumber tinyint,
    4. @Operator varchar(10),
    5. @LotID varchar(10),
    6. @WaferNumber    tinyint,
    7. @ExposureTime tinyint,
    8. @TimeDelay tinyint,
    9. @LeftDiode int,
    10. @RightDiode int,
    11. @TopDiode int,
    12. @BottomDiode int,
    13. @CenterDiode int,
    14. @LeftOffset int,
    15. @RightOffset int,
    16. @TopOffset int,
    17. @BottomOffset int,
    18. @PowerTrackStatus tinyint,
    19. @Current float,
    20. @TubeHours float,
    21. @AperturePosition float,
    22. @TEMoo tinyint,
    23. @EtalonMode tinyint,
    24. @PTDACA tinyint,
    25. @PTDACB tinyint,
    26. @AutofillDelta float,
    27. @HeadHours float,
    28. @CathodeVoltage float,
    29. @CathodeCurrent float,
    30. @MagnetCurrent float
    31.  
    32. AS
    33.  
    34. set nocount on
    35.  
    36. INSERT INTO Patterning ( dateTime, laserNumber, Operator, LotID, WaferNumber, ExposureNumber, TimeDelay, LeftDiode, RightDiode, TopDiode, BottomDiode, CenterDiode, LeftOffset, RightOffset, TopOffset, BottomOffset, PowerTrackStatus, [Current], TubeHours, AperturePosition, TEMoo, EtalonMode, PTDACA, PTDACB, AutofillDelta, HeadHours, CathodeVoltage, CathodeCurrent, MagnetCurrent)
    37. VALUES (@dateTime, @laserNumber, @Operator, @LotID, @WaferNumber, @ExposureTime, @TimeDelay, @LeftDiode, @RightDiode, @TopDiode, @BottomDiode, @CenterDiode, @LeftOffset, @RightOffset, @TopOffset, @BottomOffset, @PowerTrackStatus, @Current, @TubeHours, @AperturePosition, @TEMoo, @EtalonMode, @PTDACA, @PTDACB, @AutofillDelta, @HeadHours, @CathodeVoltage, @CathodeCurrent, @MagnetCurrent );
    38. GO

    and I am trying to pass these parameters in my VB6 code like this:

    VB Code:
    1. Private dbConnPatterning As ADODB.Connection
    2. Private dbCommand As ADODB.Command
    3.  
    4.  
    5. Private Sub Form_Load()
    6.  
    7.     Set dbConnPatterning = New ADODB.Connection
    8.     dbConnPatterning.Provider = "sqloledb"
    9.     Set dbCommand = New ADODB.Command
    10.     dbCommand.CommandText = "usp_insertPatternData"
    11.     dbCommand.CommandType = adCmdStoredProc
    12.    
    13.     dbConnPatterning.Open "server=esp\opt;uid=tyler1;pwd=password;database=Patterning"
    14.     dbCommand.Parameters.Item(0).Value = Now
    15.     dbCommand.Parameters.Item(1).Value = 1
    16.     dbCommand.Parameters.Item(2).Value = "abc"
    17.     dbCommand.Parameters.Item(3).Value = "abc"
    18.     dbCommand.Parameters.Item(4).Value = 1
    19.     dbCommand.Parameters.Item(5).Value = 10
    20.     dbCommand.Parameters.Item(6).Value = 2
    21.     dbCommand.Parameters.Item(7).Value = 10
    22.     dbCommand.Parameters.Item(8).Value = 10
    23.     dbCommand.Parameters.Item(9).Value = 10
    24.     dbCommand.Parameters.Item(10).Value = 10
    25.     dbCommand.Parameters.Item(11).Value = 10
    26.     dbCommand.Parameters.Item(12).Value = 5
    27.     dbCommand.Parameters.Item(13).Value = 5
    28.     dbCommand.Parameters.Item(14).Value = 5
    29.     dbCommand.Parameters.Item(15).Value = 5
    30.     dbCommand.Parameters.Item(16).Value = 1
    31.     dbCommand.Parameters.Item(17).Value = 2.2
    32.     dbCommand.Parameters.Item(18).Value = 1200
    33.     dbCommand.Parameters.Item(19).Value = 4
    34.     dbCommand.Parameters.Item(20).Value = 4
    35.     dbCommand.Parameters.Item(21).Value = 4
    36.     dbCommand.Parameters.Item(22).Value = 1
    37.     dbCommand.Parameters.Item(23).Value = 1
    38.     dbCommand.Parameters.Item(24).Value = 10.2
    39.     dbCommand.Parameters.Item(25).Value = 1200
    40.     dbCommand.Parameters.Item(26).Value = 12.2
    41.     dbCommand.Parameters.Item(27).Value = 4.5
    42.     dbCommand.Parameters.Item(28).Value = 6.8
    43.     dbCommand.Execute
    44.     dbConnPatterning.Close
    45.    
    46.    
    47. End Sub

    I thought that might work, but it doesn't. I came across some code that does something like this

    VB Code:
    1. ' Set up a new parameter for the stored procedure.
    2. Set prm = Cmd.CreateParameter("CategoryID", adInteger, adParamInput, 4, 7)
    3. Cmd.Parameters.Append prm

    Is this what I should be doing? I'm accustomed to using stored procedures with ADO.NET and this seems to be quite different than

    mySqlComm.parameters.add("@LotID", me.txtLotID.text)

    which is what you do in ADO.NET. Could that be right?
    Last edited by just_a_me; Feb 16th, 2006 at 11:15 AM.

  2. #2
    PowerPoster techgnome's Avatar
    Join Date
    May 2002
    Posts
    34,687

    Re: Stored Procedures with Parameters using ADO

    YEs, in ADO... it's *slighly* different....
    VB Code:
    1. Set prm = Cmd.CreateParameter("CategoryID", adInteger, adParamInput, 4, 7)
    2.     Cmd.Parameters.Append prm
    Is one way.... or it can still be done all on one line....

    VB Code:
    1. Cmd.Parameters.Append Cmd.CreateParameter("CategoryID", adInteger, adParamInput, 4, 7)

    -tg
    * I don't respond to private (PM) requests for help. It's not conducive to the general learning of others.*
    * I also don't respond to friend requests. Save a few bits and don't bother. I'll just end up rejecting anyways.*
    * How to get EFFECTIVE help: The Hitchhiker's Guide to Getting Help at VBF - Removing eels from your hovercraft *
    * How to Use Parameters * Create Disconnected ADO Recordset Clones * Set your VB6 ActiveX Compatibility * Get rid of those pesky VB Line Numbers * I swear I saved my data, where'd it run off to??? *

  3. #3

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: Stored Procedures with Parameters using ADO

    Ok. I guess you're right- That is more *slightly* different than *quite* different. Thanks.

  4. #4
    PowerPoster
    Join Date
    Oct 2002
    Location
    British Columbia
    Posts
    9,758

    Re: [RESOLVED] Stored Procedures with Parameters using ADO

    You could call Command.Parameters.Refresh to load the parameter collection rather than creating the collection in code. Make sure the ActiveConnection property is set before calling Refresh method.

    Also, Paramters.Item(0) will be the parameter for the Return Value.

  5. #5

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: [RESOLVED] Stored Procedures with Parameters using ADO

    I am having trouble on the second time that I push the command button on the form. I get an error that says 'Procedure or function "usp_insertPatternData" has too many arguments specified.' I think that it is because I'm appending more parameters. I think I need to clear all of the parameters first. Is that what I'm missing?

    Here's my code:

    VB Code:
    1. Private dbConnPatterning As ADODB.Connection
    2. Private dbCommand As ADODB.Command
    3.  
    4. Private Sub Form_Load()
    5.  
    6.     Set dbConnPatterning = New ADODB.Connection
    7.     Set dbCommand = New ADODB.Command
    8.     dbCommand.CommandText = "usp_insertPatternData"
    9.     dbCommand.CommandType = adCmdStoredProc
    10.     dbConnPatterning.Provider = "sqloledb"
    11.    
    12. End Sub
    13.  
    14. Private Sub Command1_Click()
    15.     dbConnPatterning.Open "server=esp\opt;uid=tyler1;pwd=password;database=Patterning"
    16.     dbCommand.ActiveConnection = dbConnPatterning
    17.    
    18.     dbCommand.Parameters.Append dbCommand.CreateParameter("@DateTime", adDBTime, adParamInput, 8, Now)
    19.     dbCommand.Parameters.Append dbCommand.CreateParameter("@laserNumber", adTinyInt, adParamInput, 1, 1)
    20.     dbCommand.Parameters.Append dbCommand.CreateParameter("@Operator", adVarChar, adParamInput, 10, "tc")
    21.     dbCommand.Parameters.Append dbCommand.CreateParameter("@LotID", adVarChar, adParamInput, 10, "123")
    22.     dbCommand.Parameters.Append dbCommand.CreateParameter("@WaferNumber", adTinyInt, adParamInput, 1, 1)
    23.     dbCommand.Parameters.Append dbCommand.CreateParameter("@ExposureTime", adTinyInt, adParamInput, 1, 121)
    24.     dbCommand.Parameters.Append dbCommand.CreateParameter("@TimeDelay", adTinyInt, adParamInput, 1, 12)
    25.     dbCommand.Parameters.Append dbCommand.CreateParameter("@LeftDiode", adInteger, adParamInput, 4, 100)
    26.     dbCommand.Parameters.Append dbCommand.CreateParameter("@RightDiode", adInteger, adParamInput, 4, 100)
    27.     dbCommand.Parameters.Append dbCommand.CreateParameter("@TopDiode", adInteger, adParamInput, 4, 100)
    28.     dbCommand.Parameters.Append dbCommand.CreateParameter("@BottomDiode", adInteger, adParamInput, 4, 100)
    29.     dbCommand.Parameters.Append dbCommand.CreateParameter("@CenterDiode", adInteger, adParamInput, 4, 100)
    30.     dbCommand.Parameters.Append dbCommand.CreateParameter("@LeftOffset", adInteger, adParamInput, 4, 0)
    31.     dbCommand.Parameters.Append dbCommand.CreateParameter("@RightOffset", adInteger, adParamInput, 4, 0)
    32.     dbCommand.Parameters.Append dbCommand.CreateParameter("@TopOffset", adInteger, adParamInput, 4, 0)
    33.     dbCommand.Parameters.Append dbCommand.CreateParameter("@BottomOffset", adInteger, adParamInput, 4, 0)
    34.     dbCommand.Parameters.Append dbCommand.CreateParameter("@PowerTrackStatus", adTinyInt, adParamInput, 1, 1)
    35.     dbCommand.Parameters.Append dbCommand.CreateParameter("@Current", adDouble, adParamInput, 8, 12.2)
    36.     dbCommand.Parameters.Append dbCommand.CreateParameter("@TubeHours", adDouble, adParamInput, 8, 1390.1)
    37.     dbCommand.Parameters.Append dbCommand.CreateParameter("@AperturePosition", adDouble, adParamInput, 8, 12.4)
    38.     dbCommand.Parameters.Append dbCommand.CreateParameter("@TEMoo", adTinyInt, adParamInput, 1, 1)
    39.     dbCommand.Parameters.Append dbCommand.CreateParameter("@EtalonMode", adTinyInt, adParamInput, 1, 4)
    40.     dbCommand.Parameters.Append dbCommand.CreateParameter("@PTDACA", adTinyInt, adParamInput, 1, 2)
    41.     dbCommand.Parameters.Append dbCommand.CreateParameter("@PTDACB", adTinyInt, adParamInput, 1, 3)
    42.     dbCommand.Parameters.Append dbCommand.CreateParameter("@AutofillDelta", adDouble, adParamInput, 8, 1.2)
    43.     dbCommand.Parameters.Append dbCommand.CreateParameter("@HeadHours", adDouble, adParamInput, 8, 1390.1)
    44.     dbCommand.Parameters.Append dbCommand.CreateParameter("@CathodeVoltage", adDouble, adParamInput, 8, 63.2)
    45.     dbCommand.Parameters.Append dbCommand.CreateParameter("@CathodeCurrent", adDouble, adParamInput, 8, 12.4)
    46.     dbCommand.Parameters.Append dbCommand.CreateParameter("@MagnetCurrent", adDouble, adParamInput, 8, 6.8)
    47.    
    48.     dbCommand.Execute
    49.     dbConnPatterning.Close
    50. End Sub

  6. #6
    PowerPoster
    Join Date
    Oct 2002
    Location
    British Columbia
    Posts
    9,758

    Re: Stored Procedures with Parameters using ADO

    Yes, there is no need to populate the parameters again.

    Are you using the dbCommand variable to execute other commands as well?

    Personally, I find it better to separate the creation of the parameters and the setting of their values.

    VB Code:
    1. Private Sub Command1_Click()
    2.    dbConnPatterning.Open "server=esp\opt;uid=tyler1;pwd=password;database=Patterning"
    3.   dbCommand.ActiveConnection = dbConnPatterning
    4.  
    5.   If dbCommand.Parameters.Count = 0 Then
    6.      'Code to create parameters
    7.   End If
    8.  
    9.   'Code to set parameter values
    10.  
    11.   dbCommand.Execute
    12.   dbConnPatterning.Close
    13. End Sub

  7. #7

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: Stored Procedures with Parameters using ADO

    Thanks Brucevde for your suggestions.

    So, could I create the parameters in the form load sub using the .refresh method and then change the values in the command1_click? How do you change just the values of the parameters in ADO?

  8. #8
    PowerPoster techgnome's Avatar
    Join Date
    May 2002
    Posts
    34,687

    Re: Stored Procedures with Parameters using ADO

    Personaly I wouldn't set the command object in the Form_Load event....there's no reason to create it at that point....

    -tg
    * I don't respond to private (PM) requests for help. It's not conducive to the general learning of others.*
    * I also don't respond to friend requests. Save a few bits and don't bother. I'll just end up rejecting anyways.*
    * How to get EFFECTIVE help: The Hitchhiker's Guide to Getting Help at VBF - Removing eels from your hovercraft *
    * How to Use Parameters * Create Disconnected ADO Recordset Clones * Set your VB6 ActiveX Compatibility * Get rid of those pesky VB Line Numbers * I swear I saved my data, where'd it run off to??? *

  9. #9

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: Stored Procedures with Parameters using ADO

    Should I create a command object each time I have a command1_click event?

  10. #10

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: Stored Procedures with Parameters using ADO

    I think I found the answer to one of my questions on how to change just the values of the parameters. I'm going to do this:

    VB Code:
    1. dbCommand.Parameters.Item("@DateTime").Value = Now

  11. #11

    Thread Starter
    Addicted Member
    Join Date
    May 2005
    Posts
    230

    Re: Stored Procedures with Parameters using ADO

    That worked beautifully and so did the .refesh method that was suggested above by Brucevde. Thanks guys I think I'm totally good now.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width