afshin62
چهارشنبه 08 مهر 1388, 18:32 عصر
با سلام خدمت دوستان عزیز
یک سئوال دارم در مورد ایجاد دیتاگرید مادر فرزند. من دیتابیسی دارم که حداقل 3 تا جدولش به هم متصلن مثلاًدانشکده، گروه و کلاس که ارتباطشون از نوع یک به چند است. حالا می خوام از برنامه تحت ویبی خودم مقادیر رو به جداول وارد کنم و ازشون بخونم. برای همین کار من از دیتا گرید استفاده میکنم.
منظورم دیتاگریدی است که با انتخاب یک مقدار در یک دیتاگرید دومی مقادیر مرتبط به اون رو نشون بده. من این کارو برای دو تا دیتاگرید کردم (یعنی برای دانشکده و گروه) و مشکلی نداشت ولی وقتی میخوام سومی (کلاس) رو به اونا متصل کنم با مشکل مواجه می¬شم. اصلاً مقدار گروه برای کلاس مربوط به هر گروه تکون نمی خوره و روی داده اول میمونه.
امیدوارم خوب تونسته باشم مشکلمو عنوان کنم. کد زیر کاریه که من تا حالا انجام دادم و قسمتی که مشکل سازه و نمی دونم چه جوری باید حل بشه.
'The correct code runs well
Private Sub DataFaculty_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With FacultyRec 'The recordset for reading from faculty table
ID = !Facid
End With
Call RelChange("faculty", "facultyid", ID, DataDepartment) 'subroutin for understanding the ID of relation to set the data grid to new values
End Sub
Private Sub RelChange(RelTable As String, relfield As String, ByVal match As Integer, Grid As DataGrid)
Dim RelRec As ADODB.Recordset
Dim SqlRel As String
Dim str As String
Set RelRec = New ADODB.Recordset
Sqlrec = "select * from " & RelTable & " Where " & relfield & "=" & match
RelRec.Open Sqlrec, Mcon, adOpenStatic, adLockOptimistic
Set Grid.DataSource = RelRec.DataSource
Grid.ReBind
End Sub
''But for third datagrid I have a problem:
Private Sub DataFaculty1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With DepartmentRec
ID = !Facid
End With
Call RelChange("Department", "Facid", ID, DataDepartment)
End Sub
Private Sub DataDepartment_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With DepartmentRec
ID = !Depid '' Here is where the problem appears, ID only remain the first ID in the department table and did not change when I click on the data grid
End With
Call RelChange("Class", "Departmentid", ID, DataClass)
End Sub
یک سئوال دارم در مورد ایجاد دیتاگرید مادر فرزند. من دیتابیسی دارم که حداقل 3 تا جدولش به هم متصلن مثلاًدانشکده، گروه و کلاس که ارتباطشون از نوع یک به چند است. حالا می خوام از برنامه تحت ویبی خودم مقادیر رو به جداول وارد کنم و ازشون بخونم. برای همین کار من از دیتا گرید استفاده میکنم.
منظورم دیتاگریدی است که با انتخاب یک مقدار در یک دیتاگرید دومی مقادیر مرتبط به اون رو نشون بده. من این کارو برای دو تا دیتاگرید کردم (یعنی برای دانشکده و گروه) و مشکلی نداشت ولی وقتی میخوام سومی (کلاس) رو به اونا متصل کنم با مشکل مواجه می¬شم. اصلاً مقدار گروه برای کلاس مربوط به هر گروه تکون نمی خوره و روی داده اول میمونه.
امیدوارم خوب تونسته باشم مشکلمو عنوان کنم. کد زیر کاریه که من تا حالا انجام دادم و قسمتی که مشکل سازه و نمی دونم چه جوری باید حل بشه.
'The correct code runs well
Private Sub DataFaculty_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With FacultyRec 'The recordset for reading from faculty table
ID = !Facid
End With
Call RelChange("faculty", "facultyid", ID, DataDepartment) 'subroutin for understanding the ID of relation to set the data grid to new values
End Sub
Private Sub RelChange(RelTable As String, relfield As String, ByVal match As Integer, Grid As DataGrid)
Dim RelRec As ADODB.Recordset
Dim SqlRel As String
Dim str As String
Set RelRec = New ADODB.Recordset
Sqlrec = "select * from " & RelTable & " Where " & relfield & "=" & match
RelRec.Open Sqlrec, Mcon, adOpenStatic, adLockOptimistic
Set Grid.DataSource = RelRec.DataSource
Grid.ReBind
End Sub
''But for third datagrid I have a problem:
Private Sub DataFaculty1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With DepartmentRec
ID = !Facid
End With
Call RelChange("Department", "Facid", ID, DataDepartment)
End Sub
Private Sub DataDepartment_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim ID As Integer
With DepartmentRec
ID = !Depid '' Here is where the problem appears, ID only remain the first ID in the department table and did not change when I click on the data grid
End With
Call RelChange("Class", "Departmentid", ID, DataClass)
End Sub