En una aplicación tengo 5 forms (Teacher,group, hour, subject, classroom) que se relacionan
con un 6 form (Class). El form class tiene 5 combobox, (cboteacher, cbogroup, cbohour, cbosubject,cboclassroom) los cuales deben cargarsen con los datos del form periférico correspondiente ("Cboteacher" del form "class" es cargado con los datos del form "teacher", "Cbogroup" del form "class" es cargado con los datos del form "group"), los cargamos de esta manera:
con el método activated : [CODE]
Código:
Private Sub Frmclass_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
cargar_Teacher()
cargar_hour()
cargar_classroom()
End sub
y con el método load:
Código:
Private Sub Frmclass_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call mostrar()
cargar_Teacher()
bloquear()
cargar_class()
cargar_Teacher()
cargar_Group()
cargar_hour()
cargar_classroom()
Cargar_cbo()
End Sub
cada cbo es cargado de esta forma
Código:
Sub cargar_Teacher()
Dim da As New OleDb.OleDbDataAdapter("Select *from Teacher", cn)
Dim ds As New DataSet
da.Fill(ds, "Teacher")
cbokteacher.DataSource = ds.Tables("Teacher")
cbokteacher.ValueMember = "IdTeacher"
cbokteacher.DisplayMember = "naime"
Dim displaymember As String = String.Empty
displaymember = cbokteacher.SelectedValue.ToString()
End Sub
los métodos descritos anteriormente funcionan muy bien, si agrego en el form "teacher" un nuevo profesor, digamos "John" y luego ingreso al form "class" y chequeo el "cboteacher" este despliega el nuevo profesor agregado, "john" perfectamente.
Pero tengo un problema. Primero explico algo: el from class, contiene un data grid, que muestra un horario, de esta forma:
cboteacher cbosubject
cbogroup cboclassroom
cbohour
Class Day Hour Teacher Group Subject Classroom
M1A Monday 6:30 Edward 9a Programming 9as
T1B Tuesday 7:30 Jack 9b Biology 9bs
De esta forma, "cboteacher" contiene a "Edward" y a "Jack", cbogroup contiene a "9a" y a "9b", ya que estos datos son los que contiene el form con el cual está conectados, no sé si me hice entender?
El problema es
Si ingreso a cualquiera de los form periféricos, digamos que entro a "teacher" y agrego un nuevo profesor que no aparece en el form class, digamos "carlos", cuando intento mostrar los datos de este nuevo profesor ("carlos") en el form "teacher" me aparece un error. Es decir, creo que el problema surge porque este nuevo profesor ("carlos") no aparece en el "datagrid" del form "class", ya que si ingreso al form "teacher" y busco los datos de "Edward" que sí aparece en el form "class" estos son mostrados sin ningún inconvenitente.
El método que estoy utilizando para mostrar datos en el form "teacher" es el siguiente:
Código:
Sub BUSCAR()
'Dim id As String = cboidteacher.ValueMember
Dim cmd As New OleDb.OleDbCommand("select * from teacher where IdTeacher='" & cboidteacher.Text & "'", cn)
'Dim cmd As New OleDb.OleDbCommand("select * from teacher where IdTeacher='" & id & "'", cn)
Dim dr As OleDb.OleDbDataReader
cn.Open()
dr = cmd.ExecuteReader
If dr.Read Then
txtname.Text = dr(1)
txtlast.Text = dr(3)
cbosubject.Text = dr(2)
txttel.Text = dr(4)
txtemail.Text = dr(5)
txtsal.Text = dr(6)
txtass.Text = dr(7)
cboshift.Text = dr(8)
Else
MsgBox("error")
End If
cn.Close()
End Sub
como puedo solucionarlo??, lo que necesito es que el form "teacher" y cualquier otro de los form periféricos, me muestre los datos de cualquier registro cuando los busco desde el "form" sin importar si estos aparecen o no el datagrid, ("el cronograma") del form "class".
Alguna duda me informan.
Gracias de antemano.