method that returns a class

Posted on 2004-08-31
Medium Priority
Last Modified: 2010-04-23
not sure how to explain and this might be too vague, but- i am working on a project with another person and am not sure how to use what they wrote since i'm unfamiliar with this level of code. could someone please help explain how i would use a method that is returning a class?  i need to pass a value to the method and am unsure how to do that since it returns a class. i also need to take the results of the method and assign some of the data to labels on a form. if someone has a site with further information, maybe that would help also?
#Region "GetPermit"

      Friend Function GetPermit(ByVal permitId As Integer) As PSI.Common.Permit
            Dim cn As SqlConnection = Me.CreateConnection()
            Dim retval As Permit = Me.GetPermitImpl(permitId, cn)
            Return retval
      End Function
Private Function GetPermitImpl(ByVal permitId As Integer, ByVal cn As System.Data.SqlClient.SqlConnection) As PSI.Common.Permit
            Dim cmd As New SqlCommand("spPermit", cn)
            Dim dt As New DataTable
            Dim p As Permit
            Dim imgr As New InspectionMgr

            With cmd
                  .CommandType = CommandType.StoredProcedure
                  .Parameters.Add("@PermitId", SqlDbType.Int).Value = permitId
                  .Parameters.Add("@Mode", SqlDbType.VarChar).Value = "SELECT"
            End With

            Dim da As New SqlDataAdapter(cmd)

            If dt.Rows.Count = 0 Then
                  Return New Permit
            End If

            p = New Permit(dt.Rows(0))

            'Applicant, Property and Municipality
            p.Applicant = Me.GetApplicant(p.ApplicantIdLink)
            p.Applicant.[Property] = Me.GetProperty(p.Applicant.PropertyIdLink)
            p.Applicant.[Property].Municipality = Me.GetMunicipality(p.Applicant.[Property].MunicipalityIdLink)

            'PermitContractor relationships
            cmd = New SqlCommand("spPermitContractor", cn)
            dt = New DataTable

            With cmd
                  .CommandType = CommandType.StoredProcedure
                  .Parameters.Add("@PermitIdLink", SqlDbType.Int).Value = p.PermitId
                  .Parameters.Add("@Mode", SqlDbType.VarChar).Value = "SELECTBYPERMIT"
            End With

            da = New SqlDataAdapter(cmd)

            'Inspections and Contractors
            For i As Integer = 0 To dt.Rows.Count - 1
                  Dim c As New PermitContractor(dt.Rows(i))
                  Dim dt2 As DataTable
                  c.Contractor = Me.GetContractorImpl(c.ContractorIdLink, cn)
                  c.ContractorType = Me.GetContractorType(c.ContractorTypeIdLink, cn)

                  dt2 = imgr.GetInspections(c.PermitContractorId, cn)

                  For ii As Integer = 0 To dt2.Rows.Count - 1
                        Dim ins As New Inspection(dt2.Rows(ii))
                        ins.InspectionType = imgr.GetInspectionType(ins.InspectionTypeIdLink, cn)


            Return p
      End Function
#End Region
Question by:coletteck8
  • 2

Accepted Solution

imu79 earned 1600 total points
ID: 11945744
just define an instance of the class PSI.Common.Permit as:

Dim oPermit as PSI.Common.Permit


Dim oPermit as Permit
(since that's how its defined in your methods as well)

you just use the methods as you would do for value types such as Integer, String, etc.

oPermit = GetPermit(lPermitID)

Then you can make use of the properties, etc of the Permit object returned to you to do whatever you want to with your labels on the form, etc

As far as using methods is concerned, you can use methods that return an instance of a class just like any other method.

hope this helps..

Author Comment

ID: 11953699
i think i need to rephrase my question due to new info. i have a main form, and if you click on a button(showdialog) another form opens with a datagrid. i use the following code in the datagrid form(form2) to get the value of the index when a user clicks a row
  Dim pt = New Point(e.X, e.Y)
        Dim IntID As Integer
        Dim hti As DataGrid.HitTestInfo = DataGrid1.HitTest(pt)
        If hti.Type = DataGrid.HitTestType.Cell Then
            DataGrid1.CurrentCell = New DataGridCell(hti.Row, hti.Column)
            IntID = CType(RTrim(DataGrid1.Item(DataGrid1.CurrentRowIndex, 0).ToString), Integer)

I need to pass the value above (IntID) into the method in my first question, however, i would like the return to be usable in form1 so that i can populate label boxes with the return. I'm not at all sure how to do this.

Author Comment

ID: 11953865
in addition, the method above in my first question is in a separate class(called PermitMgr) from the two forms.

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
How to fix display issue, screen flickering issue when I plug in power cord to the machine. Before I start explaining the solution lets check out once the issue how it looks like after I connect the power cord. most of you also have faced this…
Free Data Recovery software is an advanced solution from Kernel Tools to recover data and files such as documents, emails, database, media and pictures, etc. It supports recovery from physical & logical drive after a hard disk crash, accidental/inte…

607 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question