Need to create a BO for multiple tables


Author
Message
Doron Farber
Doron Farber
StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)
Group: Forum Members
Posts: 92, Visits: 612
Hi Trent,

Thanks for the informative answer.

Regards,

Doron

Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Doron,

This is exactly what I had expected to see when I was posting my previous responses.  Here is what you need to do.  Create a SPROC that will retrieve all of the results that you are wanting to see, even if they come back in more than one result set.

Let's keep this simple.  Two tables:

Customers
CustomerPhoneNumbers

Now I want to show in the list you provided all of the phone numbers in a flat list.  So the first thing I would do is get the query the way I like it, create a BO for each that may be used here (i.e. CustomersBO, CustomerPhoneNumbersBO).  Then I might treat this like a report if this is going to be for display purposes and then add a link (or whatever mechanism you intend to use) to an editing page if they want to make changes.  So in this case, I might inherit the CustomersBO and add all of the custom properties that I need for this display while not "messing up" the original BO since these custom properties will not be used everyone.

Public Class MyCustomBo
    Inherits CustomersBO

    Private Shared _PhoneNumbers As New CustomerPhoneNumbersBO()

    Public Readonly Property PhoneNumbers() As CustomerPhoneNumbersBO
          Get
               Return _PhoneNumbers
          End Get
    End Property
End Class

So now when I call my stored procedure that retrieves all of my result sets, I will dump it into this BO like this:

Private _MyCustomBO As New MyCustomBo()

Private Sub LoadData()
    Dim cmd As New SqlCommand("dbo.MySproc")

    cmd.CommandType = SqlCommandType.StoredProcedure

    MicroFour.StrataFrame.Business.BusinessLayer.FillMultipleDataTables(cmd, _MyCustomBO, _MyCustomBO.PhoneNumbers)
End Sub

So now I have a single entry point with two BOs.  This is the same type of logic you would use for a report.  So now, go one further and create a custom property to show all of the phone numbers on the entry point BO:

Public Class MyCustomBo
    Inherits CustomersBO
    Private Shared _PhoneNumbers As New CustomerPhoneNumbersBO()
    Public Readonly Property PhoneNumbers() As CustomerPhoneNumbersBO
          Get
               Return _PhoneNumbers
          End Get
    End Property

    Public Readonly Property My_PhoneNumbersAsHtml() As String
        Get
            Dim r As String = ""

            For Each bo As CustomerPhoneNumbersBO in _PhoneNumbers
                 r &= bo.PhoneNumberAsText & "<br>"
            Next

            Return r
        End Get
    End Property
End Class

This should get you going in the right direction.


 

Doron Farber
Doron Farber
StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)
Group: Forum Members
Posts: 92, Visits: 612
Hi Trent,

Still waiting for your reply.

Regards,

Doron

Doron Farber
Doron Farber
StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)
Group: Forum Members
Posts: 92, Visits: 612
Hi Trent,

I tried your suggestion using WinForm as a test and it worked just fine and thanks for that.

But in order to use a BO I had to map it at least to one table. I used this code: e.BusinessObject.CurrentRow.Item("MyField") for the list view.  But I also need to do a lot of manipulation with the text, so I think if I have a BO with all fields involved in the query it could be easier. One thought is to use a dummy table with all fields involved in query and use that as the BO of the search, so this way I will have the Strong Type capability to process all fields.

Please advise if you have another or better idea for above.

I also would need to create a listview as shown in the below image. Do you know of any control that I can have such a look while I can create links within a cell etc... Or maybe there is a way of doing so using the SF ListView..

Please see this link to get the idea of how it has to be displayed:  http://www.dfarber.com/joe_smith_data.png

Thanks,

Doron

Greg McGuffey
Greg McGuffey
Strategic Support Team Member (3.4K reputation)
Group: Forum Members
Posts: 2K, Visits: 6.6K
wow...I'll give that a try! BigGrin
Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Just type it in.  This is a combo box, not a drop down list, so you can type in whatever you want and it will try to use that field name.  If that field name doesn't exist...BOOM! BigGrin
Greg McGuffey
Greg McGuffey
Strategic Support Team Member (3.4K reputation)
Group: Forum Members
Posts: 2K, Visits: 6.6K
I'm not quite sure if I understand the first method you indicated. When you say:



You would add the column on the left with the name of the column that has been returned in the query. You could then populate the column with a formatted value using the {index}.




If the column isn't a strongly typed property, it doesn't appear on the left, so how do you do this? Is it just done in code?
Doron Farber
Doron Farber
StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)
Group: Forum Members
Posts: 92, Visits: 612
Hi Trent,

Thanks for your  reply and let me try that and see how it comes...

Regards.

Doron

Doron Farber
Doron Farber
StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)StrataFrame User (152 reputation)
Group: Forum Members
Posts: 92, Visits: 612
I hope you understood that too Mr. Rijo.Wink
Edhy Rijo
E
StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)
Group: StrataFrame Users
Posts: 2.4K, Visits: 23K
Thanks for clearing this up, I just hope Doron can also understand this w00t

Edhy Rijo

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search