Home All Groups Group Topic Archive Search About

Current Recordset does not support updating - HELP needed!

Author
20 Feb 2006 11:13 PM
Hexman
I've come up with an error which the solution eludes me.  I get the
error:

>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
>
>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.

It occurs when I attempt to add a new record.  I've stripped out much
of the code, leaving the pertinent (I hope) info.  I'm using MS Access
2003 as the database.

The error appears to be quite self-explanatary, but I've read about
the locktype an it seems correct.  The "Current Recordset" I'm unsure
of.  I just want to find out if the record is on file and if not, add
it, otherwise I'll update it.

Sounds simple, but I need help.

Thanks,

Hexman

---------------------------------------------------------------------------------------------------
Imports System.Data.OleDb
'
'
'
Public Class Form1

    Inherits System.Windows.Forms.Form
'
'
'
    Public db As ADODB.Connection
    Public C As ADODB.Command
    Public POrstData As ADODB.Recordset

Private Sub DoUpdate()

        'make connection and open database
        db = New ADODB.Connection

        db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & txtDatabaseDir & "HRMDB.MDB" &
";Persist Security Info=False"

        db.Open()

        C = New ADODB.Command
        C.ActiveConnection = db
        C.CommandType = ADODB.CommandTypeEnum.adCmdText

        'create and open record set

        POrstData = New ADODB.Recordset
        POrstData.Open("PurOrd", db,                      
    ADODB.CursorTypeEnum.adOpenkeyset,
    ADODB.LockTypeEnum.adLockOptimistic, True)

    End Sub

Private Sub UpdateProcess()

C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
"where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
& _
     "AND POItem = " & CInt(strItem)

POrstData = C.Execute

If POrstData.EOF = True Then
    POrstData.AddNew()  <======= Fails with Error =====
    POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
    POrstData.Fields.Item("POLoc").Value = strLoc
    POrstData.Fields.Item("POItem").Value = CInt(strItem)
    POrstData.Update()
    Else
    MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
& CInt(strItem))
     End If

   End Sub

Author
21 Feb 2006 2:59 AM
Chris
Hexman wrote:
Show quoteHide quote
> I've come up with an error which the solution eludes me.  I get the
> error:
>
>
>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
>>
>>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
>
>
> It occurs when I attempt to add a new record.  I've stripped out much
> of the code, leaving the pertinent (I hope) info.  I'm using MS Access
> 2003 as the database.
>
> The error appears to be quite self-explanatary, but I've read about
> the locktype an it seems correct.  The "Current Recordset" I'm unsure
> of.  I just want to find out if the record is on file and if not, add
> it, otherwise I'll update it.
>
> Sounds simple, but I need help.
>
> Thanks,
>
> Hexman
>
> ---------------------------------------------------------------------------------------------------
> Imports System.Data.OleDb
> '
> '
> '
> Public Class Form1
>
>     Inherits System.Windows.Forms.Form
> '
> '
> '
>     Public db As ADODB.Connection
>     Public C As ADODB.Command
>     Public POrstData As ADODB.Recordset
>
> Private Sub DoUpdate()
>
>         'make connection and open database
>         db = New ADODB.Connection
>
>         db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
> Source=" & txtDatabaseDir & "HRMDB.MDB" &
> ";Persist Security Info=False"
>
>         db.Open()
>
>         C = New ADODB.Command
>         C.ActiveConnection = db
>         C.CommandType = ADODB.CommandTypeEnum.adCmdText
>
>         'create and open record set
>
>         POrstData = New ADODB.Recordset
>         POrstData.Open("PurOrd", db,                      
>     ADODB.CursorTypeEnum.adOpenkeyset,
>     ADODB.LockTypeEnum.adLockOptimistic, True)
>
>     End Sub
>
> Private Sub UpdateProcess()
>
> C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
> "where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
> & _
>      "AND POItem = " & CInt(strItem)
>
> POrstData = C.Execute
>
> If POrstData.EOF = True Then
>     POrstData.AddNew()  <======= Fails with Error =====
>     POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
>     POrstData.Fields.Item("POLoc").Value = strLoc
>     POrstData.Fields.Item("POItem").Value = CInt(strItem)
>     POrstData.Update()
>     Else
>     MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
> & CInt(strItem))
>      End If
>
>    End Sub
>

Why are you using old ADO and not ADO.NET?

Chris
Author
21 Feb 2006 4:20 AM
Hexman
On Mon, 20 Feb 2006 21:59:50 -0500, Chris <no@spam.com> wrote:

Show quoteHide quote
>Hexman wrote:
>> I've come up with an error which the solution eludes me.  I get the
>> error:
>>
>>
>>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
>>>
>>>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
>>
>>
>> It occurs when I attempt to add a new record.  I've stripped out much
>> of the code, leaving the pertinent (I hope) info.  I'm using MS Access
>> 2003 as the database.
>>
>> The error appears to be quite self-explanatary, but I've read about
>> the locktype an it seems correct.  The "Current Recordset" I'm unsure
>> of.  I just want to find out if the record is on file and if not, add
>> it, otherwise I'll update it.
>>
>> Sounds simple, but I need help.
>>
>> Thanks,
>>
>> Hexman
>>
>> ---------------------------------------------------------------------------------------------------
>> Imports System.Data.OleDb
>> '
>> '
>> '
>> Public Class Form1
>>
>>     Inherits System.Windows.Forms.Form
>> '
>> '
>> '
>>     Public db As ADODB.Connection
>>     Public C As ADODB.Command
>>     Public POrstData As ADODB.Recordset
>>
>> Private Sub DoUpdate()
>>
>>         'make connection and open database
>>         db = New ADODB.Connection
>>
>>         db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
>> Source=" & txtDatabaseDir & "HRMDB.MDB" &
>> ";Persist Security Info=False"
>>
>>         db.Open()
>>
>>         C = New ADODB.Command
>>         C.ActiveConnection = db
>>         C.CommandType = ADODB.CommandTypeEnum.adCmdText
>>
>>         'create and open record set
>>
>>         POrstData = New ADODB.Recordset
>>         POrstData.Open("PurOrd", db,                      
>>     ADODB.CursorTypeEnum.adOpenkeyset,
>>     ADODB.LockTypeEnum.adLockOptimistic, True)
>>
>>     End Sub
>>
>> Private Sub UpdateProcess()
>>
>> C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
>> "where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
>> & _
>>      "AND POItem = " & CInt(strItem)
>>
>> POrstData = C.Execute
>>
>> If POrstData.EOF = True Then
>>     POrstData.AddNew()  <======= Fails with Error =====
>>     POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
>>     POrstData.Fields.Item("POLoc").Value = strLoc
>>     POrstData.Fields.Item("POItem").Value = CInt(strItem)
>>     POrstData.Update()
>>     Else
>>     MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
>> & CInt(strItem))
>>      End If
>>
>>    End Sub
>>
>
>Why are you using old ADO and not ADO.NET?
>
>Chris


Its what I've had examples of.  Please point me in the ADO.NET
direction.  I need examples (add, delete, query, update, etc.)

Thanks,

Hexman
Author
21 Feb 2006 4:37 AM
Denny
Look in the .net Framework SDK... it has several examples of ado.net

http://msdn.microsoft.com/netframework/

Show quoteHide quote
"Hexman" wrote:

> On Mon, 20 Feb 2006 21:59:50 -0500, Chris <no@spam.com> wrote:
>
> >Hexman wrote:
> >> I've come up with an error which the solution eludes me.  I get the
> >> error:
> >>
> >>
> >>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
> >>>
> >>>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
> >>
> >>
> >> It occurs when I attempt to add a new record.  I've stripped out much
> >> of the code, leaving the pertinent (I hope) info.  I'm using MS Access
> >> 2003 as the database.
> >>
> >> The error appears to be quite self-explanatary, but I've read about
> >> the locktype an it seems correct.  The "Current Recordset" I'm unsure
> >> of.  I just want to find out if the record is on file and if not, add
> >> it, otherwise I'll update it.
> >>
> >> Sounds simple, but I need help.
> >>
> >> Thanks,
> >>
> >> Hexman
> >>
> >> ---------------------------------------------------------------------------------------------------
> >> Imports System.Data.OleDb
> >> '
> >> '
> >> '
> >> Public Class Form1
> >>
> >>     Inherits System.Windows.Forms.Form
> >> '
> >> '
> >> '
> >>     Public db As ADODB.Connection
> >>     Public C As ADODB.Command
> >>     Public POrstData As ADODB.Recordset
> >>
> >> Private Sub DoUpdate()
> >>
> >>         'make connection and open database
> >>         db = New ADODB.Connection
> >>
> >>         db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
> >> Source=" & txtDatabaseDir & "HRMDB.MDB" &
> >> ";Persist Security Info=False"
> >>
> >>         db.Open()
> >>
> >>         C = New ADODB.Command
> >>         C.ActiveConnection = db
> >>         C.CommandType = ADODB.CommandTypeEnum.adCmdText
> >>
> >>         'create and open record set
> >>
> >>         POrstData = New ADODB.Recordset
> >>         POrstData.Open("PurOrd", db,                      
> >>     ADODB.CursorTypeEnum.adOpenkeyset,
> >>     ADODB.LockTypeEnum.adLockOptimistic, True)
> >>
> >>     End Sub
> >>
> >> Private Sub UpdateProcess()
> >>
> >> C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
> >> "where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
> >> & _
> >>      "AND POItem = " & CInt(strItem)
> >>
> >> POrstData = C.Execute
> >>
> >> If POrstData.EOF = True Then
> >>     POrstData.AddNew()  <======= Fails with Error =====
> >>     POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
> >>     POrstData.Fields.Item("POLoc").Value = strLoc
> >>     POrstData.Fields.Item("POItem").Value = CInt(strItem)
> >>     POrstData.Update()
> >>     Else
> >>     MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
> >> & CInt(strItem))
> >>      End If
> >>
> >>    End Sub
> >>
> >
> >Why are you using old ADO and not ADO.NET?
> >
> >Chris
>
>
> Its what I've had examples of.  Please point me in the ADO.NET
> direction.  I need examples (add, delete, query, update, etc.)
>
> Thanks,
>
> Hexman
>
>
Author
23 Feb 2006 4:48 AM
Hexman
OK,

I looked at the examples in the SDK and other internet sources --- and
now I'm even more confused.  I wish there was an example of someone
reading a transaction file and updating a table (add, update & delete
based on the transaction type).  I've seen ASP code, C code & VB code
with  ADO classic and ADO.NET, some with SQL, OleDB, ODBC, .....

Don't know which way to turn - just trying to get this task finished
(along with being guided down the correct path of learning about
this).

I've seen so much it really bluring.  I thought my approach in the
code below was a good solution, but apparently not.

I need more help.

Can someone guide me closer to the objective?

Thanks,

Hexman

Show quoteHide quote
On Mon, 20 Feb 2006 20:37:18 -0800, "Denny" <stratit@community.nospam>
wrote:

>Look in the .net Framework SDK... it has several examples of ado.net
>
>http://msdn.microsoft.com/netframework/
>
>"Hexman" wrote:
>
>> On Mon, 20 Feb 2006 21:59:50 -0500, Chris <no@spam.com> wrote:
>>
>> >Hexman wrote:
>> >> I've come up with an error which the solution eludes me.  I get the
>> >> error:
>> >>
>> >>
>> >>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
>> >>>
>> >>>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
>> >>
>> >>
>> >> It occurs when I attempt to add a new record.  I've stripped out much
>> >> of the code, leaving the pertinent (I hope) info.  I'm using MS Access
>> >> 2003 as the database.
>> >>
>> >> The error appears to be quite self-explanatary, but I've read about
>> >> the locktype an it seems correct.  The "Current Recordset" I'm unsure
>> >> of.  I just want to find out if the record is on file and if not, add
>> >> it, otherwise I'll update it.
>> >>
>> >> Sounds simple, but I need help.
>> >>
>> >> Thanks,
>> >>
>> >> Hexman
>> >>
>> >> ---------------------------------------------------------------------------------------------------
>> >> Imports System.Data.OleDb
>> >> '
>> >> '
>> >> '
>> >> Public Class Form1
>> >>
>> >>     Inherits System.Windows.Forms.Form
>> >> '
>> >> '
>> >> '
>> >>     Public db As ADODB.Connection
>> >>     Public C As ADODB.Command
>> >>     Public POrstData As ADODB.Recordset
>> >>
>> >> Private Sub DoUpdate()
>> >>
>> >>         'make connection and open database
>> >>         db = New ADODB.Connection
>> >>
>> >>         db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
>> >> Source=" & txtDatabaseDir & "HRMDB.MDB" &
>> >> ";Persist Security Info=False"
>> >>
>> >>         db.Open()
>> >>
>> >>         C = New ADODB.Command
>> >>         C.ActiveConnection = db
>> >>         C.CommandType = ADODB.CommandTypeEnum.adCmdText
>> >>
>> >>         'create and open record set
>> >>
>> >>         POrstData = New ADODB.Recordset
>> >>         POrstData.Open("PurOrd", db,                      
>> >>     ADODB.CursorTypeEnum.adOpenkeyset,
>> >>     ADODB.LockTypeEnum.adLockOptimistic, True)
>> >>
>> >>     End Sub
>> >>
>> >> Private Sub UpdateProcess()
>> >>
>> >> C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
>> >> "where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
>> >> & _
>> >>      "AND POItem = " & CInt(strItem)
>> >>
>> >> POrstData = C.Execute
>> >>
>> >> If POrstData.EOF = True Then
>> >>     POrstData.AddNew()  <======= Fails with Error =====
>> >>     POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
>> >>     POrstData.Fields.Item("POLoc").Value = strLoc
>> >>     POrstData.Fields.Item("POItem").Value = CInt(strItem)
>> >>     POrstData.Update()
>> >>     Else
>> >>     MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
>> >> & CInt(strItem))
>> >>      End If
>> >>
>> >>    End Sub
>> >>
>> >
>> >Why are you using old ADO and not ADO.NET?
>> >
>> >Chris
>>
>>
>> Its what I've had examples of.  Please point me in the ADO.NET
>> direction.  I need examples (add, delete, query, update, etc.)
>>
>> Thanks,
>>
>> Hexman
>>
>>
Author
24 Feb 2006 9:02 AM
Tiny Tim
OK,

I looked at the examples in the SDK and other internet sources --- and
now I'm even more confused.  I wish there was an example of someone
reading a transaction file and updating a table (add, update & delete
based on the transaction type).  I've seen ASP code, C code & VB code
with  ADO classic and ADO.NET, some with SQL, OleDB, ODBC, .....

Don't know which way to turn - just trying to get this task finished
(along with being guided down the correct path of learning about
this).

I've seen so much it really bluring.  I thought my approach in the
code below was a good solution, but apparently not.

I need more help.

Can someone guide me closer to the objective?

Thanks,

Hexman

Show quoteHide quote
On Mon, 20 Feb 2006 20:37:18 -0800, "Denny" <stratit@community.nospam>
wrote:

>Look in the .net Framework SDK... it has several examples of ado.net
>
>http://msdn.microsoft.com/netframework/
>
>"Hexman" wrote:
>
>> On Mon, 20 Feb 2006 21:59:50 -0500, Chris <no@spam.com> wrote:
>>
>> >Hexman wrote:
>> >> I've come up with an error which the solution eludes me.  I get the
>> >> error:
>> >>
>> >>
>> >>>An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in HRTest.exe
>> >>>
>> >>>Additional information: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
>> >>
>> >>
>> >> It occurs when I attempt to add a new record.  I've stripped out much
>> >> of the code, leaving the pertinent (I hope) info.  I'm using MS Access
>> >> 2003 as the database.
>> >>
>> >> The error appears to be quite self-explanatary, but I've read about
>> >> the locktype an it seems correct.  The "Current Recordset" I'm unsure
>> >> of.  I just want to find out if the record is on file and if not, add
>> >> it, otherwise I'll update it.
>> >>
>> >> Sounds simple, but I need help.
>> >>
>> >> Thanks,
>> >>
>> >> Hexman
>> >>
>> >> ---------------------------------------------------------------------------------------------------
>> >> Imports System.Data.OleDb
>> >> '
>> >> '
>> >> '
>> >> Public Class Form1
>> >>
>> >>     Inherits System.Windows.Forms.Form
>> >> '
>> >> '
>> >> '
>> >>     Public db As ADODB.Connection
>> >>     Public C As ADODB.Command
>> >>     Public POrstData As ADODB.Recordset
>> >>
>> >> Private Sub DoUpdate()
>> >>
>> >>         'make connection and open database
>> >>         db = New ADODB.Connection
>> >>
>> >>         db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
>> >> Source=" & txtDatabaseDir & "HRMDB.MDB" &
>> >> ";Persist Security Info=False"
>> >>
>> >>         db.Open()
>> >>
>> >>         C = New ADODB.Command
>> >>         C.ActiveConnection = db
>> >>         C.CommandType = ADODB.CommandTypeEnum.adCmdText
>> >>
>> >>         'create and open record set
>> >>
>> >>         POrstData = New ADODB.Recordset
>> >>         POrstData.Open("PurOrd", db,                      
>> >>     ADODB.CursorTypeEnum.adOpenkeyset,
>> >>     ADODB.LockTypeEnum.adLockOptimistic, True)
>> >>
>> >>     End Sub
>> >>
>> >> Private Sub UpdateProcess()
>> >>
>> >> C.CommandText = "Select PODate, POLoc, POItem FROM PurOrd " & _
>> >> "where PODate = #" & SelectedDate & "# and POLoc = '" & strLoc & "' "
>> >> & _
>> >>      "AND POItem = " & CInt(strItem)
>> >>
>> >> POrstData = C.Execute
>> >>
>> >> If POrstData.EOF = True Then
>> >>     POrstData.AddNew()  <======= Fails with Error =====
>> >>     POrstData.Fields.Item("PODate").Value = "#" & strDate & "#"
>> >>     POrstData.Fields.Item("POLoc").Value = strLoc
>> >>     POrstData.Fields.Item("POItem").Value = CInt(strItem)
>> >>     POrstData.Update()
>> >>     Else
>> >>     MsgBox("Record Found: #" & SelectedDate & "#   " & strLoc & "   "
>> >> & CInt(strItem))
>> >>      End If
>> >>
>> >>    End Sub
>> >>
>> >
>> >Why are you using old ADO and not ADO.NET?
>> >
>> >Chris
>>
>>
>> Its what I've had examples of.  Please point me in the ADO.NET
>> direction.  I need examples (add, delete, query, update, etc.)
>>
>> Thanks,
>>
>> Hexman
>>
>>