Solved

Problems with VB.net UPDATE Statement and Parameterised query

Posted on 2007-11-30
8
478 Views
Last Modified: 2009-12-16
Hi, I have the code below apparently working fine but it doesn't actually do anything. It's VB.net with an Access database. I'm just trying to UPDATE a row.
I'd really appreciate any suggestions on what I'm doing wrong - thanks.
Dim myOLEDBConnection As New OleDbConnection(My.Settings.ContactsDBConnectionString)

        Dim myCommand As New OleDbCommand("UPDATE tblCONTACTS SET strContactNotes = @strContactNotes, strCompSur = @strCompSur, strMiddleName = @strMiddleName , strFirstName= @strFirstName, strSalutation = @strSalutation , strSpouseSurname = @strSpouseSurname, strSpouseMiddleName = @strSpouseMiddleName , strSpouseFirstName = @strSpouseFirstName , strField1Name = @strField1Name , strField1Details= @strField1Details, strField2Name = @strField2Name, strField2Details = @strField2Details, strField3Name= @strField3Name, strField3Details = @strField3Details, strField4Name = @strField4Name, strField4Details= @strField4Details, strField5Name = @strField5Name, strField5Details= @strField5Details, strField6Name = @strField6Name, strField6Details= @strField6Details, strScribbleBox= @strScribbleBox, strAdd1= @strAdd1, strAdd2 = @strAdd2, strAdd3 = @strAdd3, strAdd4= @strAdd4, strAdd5 = @strAdd5, strAdd6 = @strAdd6, strPrompt1= @strPrompt1, strPrompt2 = @strPrompt2, strPrompt3 = @strPrompt3 WHERE strCONTACTID = @strCONTACTID ", myOLEDBConnection)

        

        With myCommand.Parameters

            .Add(New OleDbParameter("@strContactID", Me.txtContactID.Text))

            .Add(New OleDbParameter("@strcontactNotes", Me.txtContactNotes.Text))

            .Add(New OleDbParameter("@strCompSur", Me.txtCompSur.Text))

            .Add(New OleDbParameter("@strMiddleName", Me.txtMainMiddle.Text))

            .Add(New OleDbParameter("@strFirstName", Me.txtMainFirst.Text))

            .Add(New OleDbParameter("@strSalutation", Me.cmbMainSalutation.Text))

            .Add(New OleDbParameter("@strSpouseSurname", Me.txtSpoSur.Text))

            .Add(New OleDbParameter("@strSpouseMiddleName", Me.txtSpoMiddle.Text))

            .Add(New OleDbParameter("@strSpouseFirstName", Me.txtSpoFirst.Text))

            .Add(New OleDbParameter("@strField1Name", Me.txtField1Name.Text))

            .Add(New OleDbParameter("@strField1Details", Me.txtField1Details.Text))

            .Add(New OleDbParameter("@strField2Name", Me.txtField2Name.Text))

            .Add(New OleDbParameter("@strField2Details", Me.txtField2Details.Text))

            .Add(New OleDbParameter("@strField3Name", Me.txtField3Name.Text))

            .Add(New OleDbParameter("@strField3Details", Me.txtField3Details.Text))

            .Add(New OleDbParameter("@strField4Name", Me.txtField4Name.Text))

            .Add(New OleDbParameter("@strField4Details", Me.txtField4Details.Text))

            .Add(New OleDbParameter("@strField5Name", Me.txtField5Name.Text))

            .Add(New OleDbParameter("@strField5Details", Me.txtField5Details.Text))

            .Add(New OleDbParameter("@strField6Name", Me.txtField6Name.Text))

            .Add(New OleDbParameter("@strField6Details", Me.txtField6Details.Text))

            .Add(New OleDbParameter("@strScribbleBox", Me.txtRoughWork.Text))

            .Add(New OleDbParameter("@strAdd1", Me.txtAdd1.Text))

            .Add(New OleDbParameter("@strAdd2", Me.txtAdd2.Text))

            .Add(New OleDbParameter("@strAdd3", Me.txtAdd3.Text))

            .Add(New OleDbParameter("@strAdd4", Me.txtAdd4.Text))

            .Add(New OleDbParameter("@strAdd5", Me.txtAdd5.Text))

            .Add(New OleDbParameter("@strAdd6", Me.txtAdd6.Text))

            .Add(New OleDbParameter("@strPrompt1", Me.txtPrompt1.Text))

            .Add(New OleDbParameter("@strPrompt2", Me.txtPrompt2.Text))

            .Add(New OleDbParameter("@strPrompt3", Me.txtPrompt3.Text))

        End With
 
 
 

        myOLEDBConnection.Open()
 

        myCommand.ExecuteNonQuery()

        myOLEDBConnection.Close()

        MsgBox("Entry updated for " & Me.txtMainFirst.Text & " " & Me.txtCompSur.Text)

Open in new window

0
Comment
Question by:BozM
  • 4
  • 4
8 Comments
 
LVL 96

Expert Comment

by:Bob Learned
Comment Utility
You need to look at the overloaded form for the OleDbParameter constructor, and make sure that you have the form that sets a value.  My recollection of 2003 is that you aren't actually setting any values for the parameter with the form shown.

Bob
0
 

Author Comment

by:BozM
Comment Utility
Hi Bob, Sorry I don't understand your comment - you're going to have to break down down a little for me. I'm still only a beginner in VB.
What's an overloaded form? This code is run from a button click event on a form. Not sure what the "overloading" you refer to is though.
The code is from VB.net 2005.
0
 
LVL 96

Expert Comment

by:Bob Learned
Comment Utility
For 2005, try this:

.AddWithValue("@strContactID", Me.txtContactID.Text)

Bob
0
 

Author Comment

by:BozM
Comment Utility
Ok so i changed all the lines in the "With mycommand.parameters" section of the code to the .addwithvalue format you suggested above but no joy - it didn't work . I don't really understand what is going on, as I have almost identical code for an INSERT statement that works fine. Is there an error in the SQL statement?
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 96

Expert Comment

by:Bob Learned
Comment Utility
There is a way to test:

Dim rowsAffected As Integer = myCommand.ExecuteNonQuery()

Bob
0
 

Author Comment

by:BozM
Comment Utility
OK Bob,
Thanks for that, now we're getting places. The number of rows affected is 0 so I guess my SQL is faulty. Any suggestions on that?
Boz.
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
Comment Utility
The first place I would look is the WHERE clause:

WHERE strCONTACTID = @strCONTACTID

Bob
0
 

Author Comment

by:BozM
Comment Utility
Right, I've commented out the strContactID line in the "with mycommand.parameters" Section and I've typed in the name of the textbox where it should take the value of strContactID from. And that now it works perfectly. That's great - thanks for your (very patient) help with this.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

As they say in love and is true in SQL: you can sum some Data some of the time, but you can't always aggregate all Data all the time! Introduction: By the end of this Article it is my intention to bring the meaning and value of the above quote to…
Introduction Hopefully the following mnemonic and, ultimately, the acronym it represents is common place to all those reading: Please Excuse My Dear Aunt Sally (PEMDAS). Briefly, though, PEMDAS is used to signify the order of operations (http://en.…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now