Skip to main content
gamedev.net
🔒 Locked

Help me genericize this function

Started by Alpha_ProgDes Aug 25, 2008 at 12:49 PM 1 replies 950+ views
Original Post
Alpha_ProgDes
Alpha_ProgDes

Protected Function MyFunc3(ByVal pkID As Integer, ByVal fieldName As String) As String
        Dim result As String

        Dim cjfttable As New OpenJobSet.CurrentDataTable()
        cjfta.Fill(cjfttable) 'tableadapter

        Dim selectColumnRow As IEnumerable(Of OpenJobSet.CurrentJobFormsRow) = cjfttable.AsEnumerable()
        Dim queryResult = (From s In selectColumnRow _
                            Where (s.Field(Of Long)("ListID").Equals(pkID)) _
                            Select s.Field(Of String)(fieldName)).First()

        result = New String(queryResult)
        Return result
    End Function
Basically I want to be able to pass the datatable, where, select, equal fields. My problem is if I make the function take in a normal Datatable I have to cast to the correct type of datatable. So is there a way to do that... automagically?
Beginner in Game Development?  Read here. And read here.  
Alpha_ProgDes
Alpha_ProgDes
I've tried this:
If (datatable Is OpenJobSet.CurrentJobFormsDataTable) Then        ElseIf (datatable Is OpenJobSet.FormInstanceDataDataTable) Then        ElseIf (datatable Is OpenJobSet.FormInstanceDataTable) Then        ElseIf (datatable Is OpenJobSet.FormListDataTable) Then        ElseEnd If

But it tells me that I can't do that....


(sidenote: is VB.net a "lang" option? Because 'Is' is not highlighted.)

edit: ok, I need (TypeOf datatable Is OpenJobSet.....)
edit2: yeah, that's not working either...

[Edited by - Alpha_ProgDes on August 25, 2008 2:09:52 PM]
Beginner in Game Development?  Read here. And read here.  
Alpha_ProgDes
Alpha_ProgDes
This is my final product.
Protected Function MyFunc4(ByVal dTable As DataTable, _                               ByVal pID As Integer, _                               ByVal whereField As String, _                               ByVal selectField As String) As String        Dim currentTable As OpenJobSet.CurrentJobFormsDataTable        Dim formInstTable As OpenJobSet.FormInstanceDataTable        Dim formInstDataTable As OpenJobSet.FormInstanceDataDataTable        Dim formlistDataTable As OpenJobSet.FormListDataTable        Dim queryResult As String        If (TypeOf dTable Is OpenJobSet.CurrentJobFormsDataTable) Then            currentTable = CType(dTable, OpenJobSet.CurrentJobFormsDataTable)            Dim selectColumnRow As IEnumerable(Of OpenJobSet.CurrentJobFormsRow) = currentTable.AsEnumerable()            queryResult = (From s In selectColumnRow _                                Where (s.Field(Of Long)(whereField).Equals(pID)) _                                Select s.Field(Of String)(selectField)).First()        ElseIf (TypeOf dTable Is OpenJobSet.FormInstanceDataDataTable) Then            formInstTable = CType(dTable, OpenJobSet.FormInstanceDataTable)            Dim selectColumnRow As IEnumerable(Of OpenJobSet.FormInstanceRow) = formInstTable.AsEnumerable()            queryResult = (From s In selectColumnRow _                                Where (s.Field(Of Long)(whereField).Equals(pID)) _                                Select s.Field(Of String)(selectField)).First()        ElseIf (TypeOf dTable Is OpenJobSet.FormInstanceDataTable) Then            formInstDataTable = CType(dTable, OpenJobSet.FormInstanceDataDataTable)            Dim selectColumnRow As IEnumerable(Of OpenJobSet.FormInstanceDataRow) = formInstDataTable.AsEnumerable()            queryResult = (From s In selectColumnRow _                                Where (s.Field(Of Long)(whereField).Equals(pID)) _                                Select s.Field(Of String)(selectField)).First()        ElseIf (TypeOf dTable Is OpenJobSet.FormListDataTable) Then            formlistDataTable = CType(dTable, OpenJobSet.FormListDataTable)            Dim selectColumnRow As IEnumerable(Of OpenJobSet.FormListRow) = formlistDataTable.AsEnumerable()            queryResult = (From s In selectColumnRow _                                Where (s.Field(Of Long)(whereField).Equals(pID)) _                                Select s.Field(Of String)(selectField)).First()        End If        Return queryResult    End Function


Please criticize [the code], even harshly. Just make sure you have something constructive before/after it. Thank you!
Beginner in Game Development?  Read here. And read here.  

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.