Go Back  Xtreme Visual Basic Talk > Visual Basic .NET (2002/2003/2005/2008, including Express editions) > .NET Database and Reporting > OleDBDataAdapter Commands problem


Reply
 
Thread Tools Display Modes
  #1  
Old 05-29-2009, 12:20 AM
sgm sgm is offline
Junior Contributor
 
Join Date: Aug 2003
Location: AlBayda, Libya
Posts: 300
Default OleDBDataAdapter Commands problem


Hi
I'm trying to insert and update from a table in MSAccess I've declared everything: Connection, DataAdapter and Commands.
I didn't use the CommandBuilder instead I supplied my own Queries.
My problem is if I add three rows to my table all the three rows in my database have the same values from the first row. It seems like the parameters are stuck on the values from the first row.
how do I overcome this.
here is parts of the code

Code:
'This code 
Private Sub FillingOrderDetailsGrid(Optional ByVal OrderNo As Integer = 0)

        Conn.ConnectionString = My.Settings.CnnStr
        Dim cmdSalesOrderDetails As New OleDbCommand
        cmdSalesOrderDetails.Connection = Conn
        cmdSalesOrderDetails.CommandText = "SalesOrderDetailsByOrderNo"
        cmdSalesOrderDetails.CommandType = CommandType.StoredProcedure

        Dim parm As New OleDbParameter()
        parm.ParameterName = "@SalesOrderNo"
        parm.Direction = ParameterDirection.Input
        parm.OleDbType = OleDbType.Integer
        parm.Value = OrderNo
        cmdSalesOrderDetails.Parameters.Add(parm)
        daSalesOrderDetails.SelectCommand = cmdSalesOrderDetails

        cmdSalesOrderDetails = New OleDbCommand
        cmdSalesOrderDetails.Connection = Conn
        cmdSalesOrderDetails.CommandText = "UpdateSalesOrderDetailsByOrderNo"
        cmdSalesOrderDetails.CommandType = CommandType.StoredProcedure
        daSalesOrderDetails.UpdateCommand = cmdSalesOrderDetails
        With daSalesOrderDetails.UpdateCommand
            .Parameters.Add("@MealNo", OleDbType.Integer, 4, "MealNo")
            .Parameters.Add("@SalesOrderNo", OleDbType.Integer, 4, "SalesOrderNo")
            .Parameters.Add("@MealQuantity", OleDbType.Integer, 4, "MealQuantity")
            .Parameters.Add("@Price", OleDbType.Currency, 8, "Price")
            .Parameters.Add("@StartTime", OleDbType.Date, 4, "StartTime")
            .Parameters.Add("@FinishTime", OleDbType.Date, 4, "FinishTime")
            .Parameters.Add("@IsReady", OleDbType.Boolean, 1, "IsReady")
            .Parameters.Add("@IsPrinted", OleDbType.Boolean, 1, "IsPrinted")
            .Parameters.Add("@EmployeeNo", OleDbType.Integer, 4, "EmployeeNo")
        End With

        cmdSalesOrderDetails = New OleDbCommand
        cmdSalesOrderDetails.Connection = Conn
        cmdSalesOrderDetails.CommandText = "InsertSalesOrderDetails"
        cmdSalesOrderDetails.CommandType = CommandType.StoredProcedure
        daSalesOrderDetails.InsertCommand = cmdSalesOrderDetails
        With daSalesOrderDetails.InsertCommand
            .Parameters.Add("@MealNo", OleDbType.Integer, 4, "MealNo")
            .Parameters.Add("@SalesOrderNo", OleDbType.Integer, 4, "SalesOrderNo")
            .Parameters.Add("@MealQuantity", OleDbType.Integer, 4, "MealQuantity")
            .Parameters.Add("@Price", OleDbType.Currency, 8, "Price")
            .Parameters.Add("@StartTime", OleDbType.Date, 4, "StartTime")
            .Parameters.Add("@FinishTime", OleDbType.Date, 4, "FinishTime")
            .Parameters.Add("@IsReady", OleDbType.Boolean, 1, "IsReady")
            .Parameters.Add("@IsPrinted", OleDbType.Boolean, 1, "IsPrinted")
            .Parameters.Add("@EmployeeNo", OleDbType.Integer, 4, "EmployeeNo")
        End With

        cmdSalesOrderDetails = New OleDbCommand
        cmdSalesOrderDetails.Connection = Conn
        cmdSalesOrderDetails.CommandText = "DeleteSalesOrderDetailByOrderNo"
        cmdSalesOrderDetails.CommandType = CommandType.StoredProcedure
        daSalesOrderDetails.DeleteCommand = cmdSalesOrderDetails
        With daSalesOrderDetails.DeleteCommand
            .Parameters.Add("@SalesOrderNo", OleDbType.Integer)
        End With
All queries are in MSAccess
I'm using a DataTable with my DataAdapter since I'm dealing with a single table.
I'm filling the table with a parametrized query, and updating it with the same dataadapter.
I'm adding rows to my datatable and manipulating the table through code. I know that my data is there and every row has it's own values, I can see them when I debug my program.
I'm missing something with the parameters and I don't know what it's.
Does anybody have an idea.
thanks

Last edited by sgm; 05-29-2009 at 12:25 AM.
Reply With Quote
  #2  
Old 05-30-2009, 08:11 AM
sgm sgm is offline
Junior Contributor
 
Join Date: Aug 2003
Location: AlBayda, Libya
Posts: 300
Default

I've found the solution
for some strange reason if you choose to put your query in msAccess your parameters will get stuck on the first set.
I moved the query to my VB code and changed the command type to text and everything worked without any problems.
The moral is if you want to use SPs use SQL server and forget MSAccess and OleDB.
Cheers
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump

Advertisement:





Free Publications
The ASP.NET 2.0 Anthology
101 Essential Tips, Tricks & Hacks - Free 156 Page Preview. Learn the most practical features and best approaches for ASP.NET.
subscribe
Programmers Heaven C# School Book -Free 338 Page eBook
The Programmers Heaven C# School book covers the .NET framework and the C# language.
subscribe
Build Your Own ASP.NET 3.5 Web Site Using C# & VB, 3rd Edition - Free 219 Page Preview!
This comprehensive step-by-step guide will help get your database-driven ASP.NET web site up and running in no time..
subscribe
 
 
-->