StrataFrame Forum
Home      Members   Calendar   Who's On
Welcome Guest ( Login | Register )
      


12»»

Business Object SAVE() and Stored ProceduresExpand / Collapse
Author
Message
Posted 10/10/2006 11:36:59 AM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: Forum Members
Last Login: 11/16/2006 1:23:18 PM
Posts: 40, Visits: 85
When creating a business object there are properties for the Insert, Update, and Delete sprocs. Am I correct in the following assumptions...

  • Save without a Primary Key sent through will use the Insert Sproc
  • Save with a Primary Key sent through will use the Update Sproc
  • DeleteByPrimaryKey will use the Delete Sproc

I looked through the help and the forum and hope that this isn't easily spelled out somewhere and I am missing it. Since my db will not have any reader/writer permissions, its important that I get this right from the start.

Thanks!

Clay

Post #3442
Posted 10/10/2006 1:13:44 PM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: 12/09/2008 3:36:08 PM
Posts: 2,686, Visits: 1,891
That's almost it...

Save of a DataRow with an Added state uses the Insert sproc
Save of a DataRow with a Modified state uses the Update sproc
Save of a DataRow with a Deleted state uses the Delete sproc

The business objects use DataTables internally, so we use the DataRowState from the rows within the table to determine which sproc to use.


www.bungie.net
Post #3445
Posted 10/10/2006 1:19:49 PM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: Forum Members
Last Login: 11/16/2006 1:23:18 PM
Posts: 40, Visits: 85
Thanks

To change the state for Add and Edit I assume it o.Add and o.Edit respectively. What is the command for Delete?

Post #3446
Posted 10/10/2006 1:24:08 PM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: 12/09/2008 3:36:08 PM
Posts: 2,686, Visits: 1,891
To add a new row, you can either call Add() or NewRow().  Add() calls NewRow() internally, but also changes the editing state of the business object to Adding, which updates the bound controls.  To change a record to Modified, you can call Edit(), or just set one of the field properties, which will change the data within the current row, and the row will automatically change state to Modified.  To delete a row, you can call DeleteCurrentRow() when you have the row you want to delete selected.  To delete a row that is not in the business object, you can also call DeleteByPrimaryKey() and pass the pk of the record you want to delete.


www.bungie.net
Post #3447
Posted 10/10/2006 1:42:52 PM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: Forum Members
Last Login: 11/16/2006 1:23:18 PM
Posts: 40, Visits: 85
Does DeleteByPrimaryKey use the sproc listed under DeleteStoredProcedureName or does the user have to have db_writer priveledges?
Post #3451
Posted 10/10/2006 1:44:13 PM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: 12/09/2008 3:36:08 PM
Posts: 2,686, Visits: 1,891
It uses the sproc if the DeleteUsingStoredProcedure property is set to True, same as a Save() with Deleted rows.


www.bungie.net
Post #3453
Posted 10/10/2006 2:05:53 PM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: Forum Members
Last Login: 11/16/2006 1:23:18 PM
Posts: 40, Visits: 85
Ok...I think I have this straight.

To do an update would look something likethis

  • dim t as bo
  • bo.fill... (I would fill my Primary Key)
  • bo.edit
  • bo.field1 = "X"
  • bo.save()

To do an insert would be

  • dim t as bo
  • bo.add
  • bo.field1 = "Y"
  • bo.save()

To do a delete would be

  • dim t as bo
  • bo.deletebyprimarykey(z)
Post #3459
Posted 10/10/2006 2:09:11 PM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: 12/09/2008 3:36:08 PM
Posts: 2,686, Visits: 1,891
Yes, those will all work.  However, the semantics might be a little different.  When you have a UI and controls bound to a business object, you usually use Add(), Edit(), and DeleteCurrentRow().  However, if you're just modifying records programmatically, you can use NewRow(), [nothing] (since you can just change fields without calling Edit()) and DeleteByPrimaryKey as they are slightly faster since they circumvent the UI.


www.bungie.net
Post #3462
Posted 10/10/2006 2:26:05 PM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: Forum Members
Last Login: 11/16/2006 1:23:18 PM
Posts: 40, Visits: 85
Thanks much!
Post #3465