StrataFrame Forum

BO as parameter

http://forum.strataframe.net/Topic28088.aspx

By Tiong Diu King - 8/24/2010

Hi all,



public sub get_code_from_key()

Dim loBO = New BO_Library.employee

loBO.FillByPrimaryKey(4)

Dim lcCode As String = loBO.CurrentRow(1)

End sub



Above sub module is work. How do i convert into function and parameter BO's name is passing?





public function get_code_from_key(byval BO as ???, byval key as integer)

Dim loBO = New BO_Library.BO

loBO.FillByPrimaryKey(key)

Dim lcCode As String = loBO.CurrentRow(1)

Return lcCode

End function





** My collection of BO is under assembly BO_Library





Please help...
By Edhy Rijo - 8/25/2010

Hi Tiong,



There are many ways to do this depending on what you really want. If you want to use this function from several places then you don't have to fill the BO you can run an scalar method to get that particular field value for lcCode. Take a look at the help file, there are sample code almost all over, also the forum have a ton of experiences with many code samples too.



Keep in mind that your BO class is also the place to add functions and methods that apply to the BO or anything you want and that will also make it easier for you to access those functions and methods. So let's say you need to get the cCode field from the Employee BO, you would create a method in the BO class to return that field, something like this:



Public Function get_code_from_key(ByVal PKValue As Integer) As String

Using cmd As New SqlCommand()

'-- Build the command

cmd.CommandType = CommandType.Text

cmd.CommandText = "SELECT Employee.Code FROM Employee WHERE EmployeePK = @EmployeePKValue"



'-- Create and set the parameters

cmd.Parameters.AddWithValue("@EmployeePKValue", PKValue).SqlDbType = SqlDbType.Int



'-- Execute the query and return the value

Return CType(Me.ExecuteScalar(cmd), String)

End Using

End Function





By adding above function to the BO, you can now call it from any instance of the BO being use like this:



Dim loBo as New BO_Library.EmployeeBO

Dim lcCode as String = loBO.get_code_from_key(Your PK Value)





Still that is not foolproof, there are several things to be enhanced, like checking for DBNull, etc., but I leave that as a homework for you BigGrin Hint: there are plenty of samples on this in the forums.
By Ivan George Borges - 8/25/2010

Hi Tiong.

Also, regarding having your BO as a function parameter, follow this link to get an idea:

http://forum.strataframe.net/FindPost28016.aspx

By Tiong Diu King - 8/25/2010

Hi Edhy,



your method is doing the code at BO. I don't want the code doing at BO because if i have 50 BO then i need do it 50 times. I want only 2 function there are

1) pass BO's name and primary key then function return me code

2) pass BO's name and code then function return me primary key



Please advice...







Hi Ivan,



I did declare the BO as As MicroFour.StrataFrame.Business.BusinessLayer but it doesn't work.

when i create new instance of the BO with the parameter BO but there is the error code

etc: Dim loBO As BO_Library.BO



Please advice...
By Ivan George Borges - 8/25/2010

Download the sample from the following link and have a look at the Base BO concept. This way you won't have to repeat this kind of code.

http://forum.strataframe.net/FindPost27794.aspx

By Tiong Diu King - 8/25/2010

Hi Ivan,



I wanna thanks for your help again and again. Your sample is work great...
By Ivan George Borges - 8/25/2010

You are welcome, Tiong.

I am really happy you got it working. Cool