Advertisement

02.05.2008 at 07:18AM PST, ID: 23138208
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

9.4

How to bind Child Records to Parent Records

Asked by KentDBerry in Microsoft Visual Basic.Net, .NET, SQL Server 2005

The Attached Screen Shot depicts a maintenance form for two tables having a one to many relationship.  The grid in upper right corner is bound to the same Parent table that the fields in the main form are bound to.  

My problem is that I can not get the Child records to link up with the Parent recs on the main form.  The navigation buttons on bottom are linked to the Parent table.

However, If I click on different Parent records in the grid in upper right corner, the Child records link up as expected.  I want the navigation buttons to behave in this same manner.  What do I have to do to make this happen?  Are there other suggestions to improve this form as I will be making several forms similar to it.   I have embedded some code for your reference. I suspect the issue may be in SetdataRel()

I use Visual Studio 2005Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
Public Class frmExcelSheetMaintenance
    Dim con As New SqlConnection(My.Settings.BRDWorkslatesConnectionString)
    Dim ds As New DataSet
    Dim daParent As SqlClient.SqlDataAdapter
    Dim daChild As SqlClient.SqlDataAdapter
    Dim sql As String
    Dim myTable As DataTable
    Private myCurrencyManager As CurrencyManager
.
.
.
Private Sub frmExcelSheetMaintenance_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        con.Open()
 
        sql = "SELECT * FROM tblExcelSheets"
        daParent = New SqlClient.SqlDataAdapter(sql, con)
        daParent.FillSchema(ds, SchemaType.Mapped, "Parent")
        daParent.Fill(ds, "Parent")
 
        sql = "SELECT * FROM tblExcelSheetFields"
        daChild = New SqlClient.SqlDataAdapter(sql, con)
        daChild.FillSchema(ds, SchemaType.Mapped, "Child")
        daChild.Fill(ds, "Child")
 
        con.Close()
 
        BindControl(ds.Tables("Parent"))
 
        dgvChild.DataSource = ds.Tables("Child")
 
        ds.Tables("Parent").Columns("SheetID").AutoIncrement = True
        ds.Tables("Parent").Columns("SheetID").AutoIncrementSeed = -1
 
        ds.Tables("Child").Columns("FieldID").AutoIncrement = True
 
        SetdataRel()
 
        FormatChildGridView()
 
        MoveFirst(myCurrencyManager) 'Initializes txtRecordPosition
    End Sub
    Private Sub BindControl(ByVal myTable As DataTable)
        Select Case myTable.ToString
 
            Case ds.Tables("Parent").ToString
 
                Me.SheetIDTextBox.DataBindings.Add("text", myTable, "SheetID")
 
                Me.FindComboBox1.DataSource = ds.Tables("Parent")
                Me.FindComboBox1.DisplayMember = ds.Tables("Parent").Columns("SheetName").ToString
                Me.FindComboBox1.ValueMember = ds.Tables("Parent").Columns("SheetID").ToString
 
                Me.WorkBookTextBox.DataBindings.Add("text", myTable, "WorkBook")
                Me.SheetNameTextBox.DataBindings.Add("text", myTable, "SheetName")
                Me.StoredProcedureTextBox.DataBindings.Add("text", myTable, "StoredProcedure")
                Me.FunctionTextBox.DataBindings.Add("text", myTable, "Function")
                Me.SheetOrderTextBox.DataBindings.Add("text", myTable, "SheetOrder")
 
                Me.SheetActiveCheckBox.DataBindings.Add("Checked", myTable, "SheetActive")
                Me.SheetVisibleCheckBox.DataBindings.Add("Checked", myTable, "SheetVisible")
 
                ' Specify the CurrencyManager for the DataTable.
                myCurrencyManager = CType(Me.BindingContext(myTable), CurrencyManager)
 
                ' Set the initial Position of the control.
                myCurrencyManager.Position = 0
 
            Case ds.Tables("Child").ToString
 
        End Select
    End Sub
 
    Public Sub SetdataRel()
 
        ds.Relations.Add(New DataRelation(relationName:="relForeignKeyID", _
                                parentColumn:=ds.Tables("Parent").Columns("SheetID"), _
                                childColumn:=ds.Tables("Child").Columns("SheetID"), _
                                createConstraints:=False))
 
        ' Set the Suppliers grid
        dgvParent.DataSource = ds
        dgvParent.DataMember = "Parent"
 
        ' Set the Products grid
        dgvChild.DataSource = ds
        dgvChild.DataMember = "Parent.relForeignKeyID"
 
    End Sub
Attachments:
 
Master/Detail Maintenance Form Screen Shot
Master/Detail Maintenance Form Screen Shot
 
[+][-]02.05.2008 at 11:08PM PST, ID: 20830130

View this solution now by starting your 14-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: Microsoft Visual Basic.Net, .NET, SQL Server 2005
Sign Up Now!
Solution Provided By: vb_jonas
Participating Experts: 1
Solution Grade: A
 
 
 
Loading Advertisement...
20081112-EE-VQP-43 / EE_QW_2_20070628