tags:

views:

45

answers:

2

i am updating a table in mysql using ADODB

i am adding new entries into a table should i be using addnew or update?

+1  A: 

To edit an existing record: .Edit to start, .Update to finish.

To create a new record: .AddNew to start, .Update to finish.

Smandoli
Use Michael B's answer. I forgot this, but it sounds right that .Edit is just for DAO. You leave it off for ADO.
Smandoli
+3  A: 

There's no difference, you will always use .Update to commit changes from where the current cursor is pointing at. AddNew allocates new row at the end of ADODB recordset

ADODB recordset is a cursor-based data set, when you load rows into recordset, the cursor is automatically on first row, so anything you do on recordset's columns, it will modify wherever the recordset cursor is currently pointing at. For example:

dim rs as new adodb.recordset
rs.Open _
    " select emp_id, lastname, firstname, middlename, age from emp " & _
    " where location = 'LIVERPOOL'" & _
    " ORDER BY emp_id", connectionVariableHere

This will update the first row:

rs!middlename = "Ono"
rs.Update

This will update the next row:

rs.MoveNext
rs!middlename = "Eastman"
rs.Update

To add a record (the cursor will move to last record)

rs.AddNew
rs!lastname = "Ono"
rs!firstname = "Yoko"
rs!middlename = "Yasuda"
rs.Update

This will update the last added record, after performing the step above:

rs!lastname = "Lennon"
rs.Update

If i remember correctly, MoveNext, MoveFirst, etc, implicitly call .Update before moving to new cursor location, so if you are in first row...

rs.MoveFirst

...Then you do:

rs!age = 70 ' lennon's age of 2010
rs.MoveNext

...That will call .Update before moving to Paul McCartney. Anyway, don't rely on it, just call .Update when you want to commit the changes on row

Michael Buen
Amusing pseudo-data is worth a vote just by itself!
Smandoli