Quote Originally Posted by gwboolean View Post
My understanding is that the GetUpdateCommand line dynamically updates the whole table with whatever has been modified in the DGV. Is that not correct?
No, that is not correct. As is ALWAYS the case, you should read the documentation. That will tell you what it actually does. All it does is get the UPDATE command generated by the command builder. Doing so is pointless unless you actually want to examine or modify that command. It's calling Update on the data adapter that saves changes and it saves them from a DataTable, not a DataGridView. That you may have bound the DataTable to the DataGridView isn't relevant to that saving. Doing that will execute the InsertCommand for each row with a RowState of Added, the UpdateCommand for each Modified row and the DeleteCommand for each Deleted row. You don't have to do anything with or to the command builder to make that happen, assuming all the required conditions are met or auto-generation of SQL code from your SelectCommand.
Quote Originally Posted by gwboolean View Post
So do you know what this exception means, with regard to what I am doing, and what I might do to remediate it?
Ii really does seem that a lot of people ask about exceptions without ever actually investigating for themselves. I imagine that searching the web for that error message would have produced relevant information but you can even work it out for yourself. Look at the words:
requires all parameters to have an explicitly set type
where are you creating your parameters?
Code:
        Public Sub AddParam(Name As String, Value As Object)
            Dim NewParam As New OleDbParameter(Name, Value)
            Params.Add(NewParam)
        End Sub
Are you explicitly setting the type? No, you're only setting the name and the value. I'm not sure why Prepare is being called - maybe the use of a command builder requires it for SQL generation - but it's happening so you need to specify the types for your parameters.