Buenas tardes
Quisiera ver como le puedo hacer para que por medio del form1 (mdicontainer), tengo un textbox y al ingresar un numero de folio me de los datos de este folio en el form2 (textbox de form1) y que el form2 aparezaca en el mdicontainrer del formulario1.
Lo explico mejor, tengo un textbox1 en el form1, el cual al ingresar un numero y dar click en el button1 me traiga los datos en los campos de textbox del form2, basicamente es una busqueda por folio, solo que en vez de que los resultados me los traiga en un datagrid, los quiero en los campos de texto del form2 que ya estan enlazados a la bd,si no me entieden mandenme su correo para enviarles el eemplo, espero me puedan ayudar
No sé si acabo de entender la pregunta, pero me la sensación que lo que quieres es abrir un formulario "hijo" dado, por ejemplo un id de la tabla de datos.
Si es así, creo que bastaría con crear, por ejemplo, un constructor del Form2 que acepte, como parámetro, el id del registro que quieres abrir, algo así como :
Form2:
Sub New(ByVal idRegistro as Integer) CargaDatosRegistro(idRegistro)End Sub
Luego, desde el Form1, se debería hacer una llamada para que abriese el Form2, pero ejecutando el constructor creado para tal fin:
Private Sub Button1_Click(sender as object, e as eventArgs) Handles button1_click Dim f as new Form2(cInt(texbox1.text)) f.MdiParent = me ' Se establece el formulario actual como Parent f.ShowEnd Sub
Confío que fuera esto lo que pedías.
basicamente lo que quiero es que en un textbox1 el numero que ponga y al dar click button1(esto esta en mi form1 que es un mdicontainer) me busque ese valor en una tabla y que en el form2 (hijo) me traiga la informacion en todos los campos que tenga el id que haya ingresado en el form1 (textbox1)
Esta funcion la hago en otra aplicacion y me funciona perfectamente y es lo que quiero hacer, hago la consulta en un mismo form y la quiero aplicar asi ya no quiero que sea de otro form porque se me esta complicando un poco o si me pueden ayudar se los agradeceria, solo que me manda este error "LA CADENA DE ENTRADA NO TIENE EL FORMATO CORRECTO", sera porque en donde me funciona busco texto y yo quiero buscar numeros, como lo podria modificar, el campo de donde voy a buscar el numero se llamad "id_llamada" y mi BindingSource se llama "QC_FolioBindingSource"
Private
Button2.Click
'Observa aquí el fitro lo he modificado
(Cat_empBindingSource.DataSource.tables(Cat_empBindingSource.DataMember), DataTable)
, DataViewRowState.CurrentRows)
Then
Cat_empBindingSource.Position = Cat_empBindingSource.Find(
, dvFiltro.Item(SeguirBuscando).Item(1).ToString())
SeguirBuscando = 0
If
End
Sub
En principio, con lo que he puesto antes, debería funcionar.
He visto que indicas que los controles del form2 están enlazados a datos. No sé cómo los has enlazados, pero creo que en esto está la solución. Personalmente, creo que deberías desarrollar el "filtro" de los datos en la rutina que tengas de carga de los datos, o lo que he puesto como:
CargaDatosRegistro(idRegistro)
Si, por ejemplo, tienes un DataTable, puedes filtrar la información que quieres que te aparezca con un DataView... Otra opción sería la de hacer una consulta a la base de datos en la que se lea sólo el registro cuyo id sea el parámetro. Si haces uso del DataSource, creo recordar que está el método Filter...
Para la lectura de los datos, seguro que una búsqueda por los maestros que tenemos en los blogs de geeks te orienta mil veces mejor que yo, dependiendo de si sólo quieres mostrar los datos, si precisas una actualización posterior de la tabla, etc.
Perdona, se han cruzado los mensajes y no ví el tuyo mientras escribía el mío. Si el campo de la tabla es numérico, bastará con cambiar esta línea.
Dim myFiltro As String = "nombre=" & Me.TextBox1.Text
Disculpa que te moleste tanto, de antemano te agradezco tu atencion, ya cambie la linea que me comentas pero me sigue mandando el mismo error "La cadena de entrada no tiene el formato correcto", me manda el error en esta linea:
QC_FolioBindingSource.Position = QC_FolioBindingSource.Find(
"id_llamada", dvFiltro.Item(SeguirBuscando).Item(1).ToString())
asi quedo el codigo:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myFiltro As String = "id_llamada = '" & Me.TextBox1.Text & "'" Dim dataTeibol As DataTable = CType(QC_FolioBindingSource.DataSource.tables(QC_FolioBindingSource.DataMember), DataTable) Dim dvFiltro As DataView = New DataView(dataTeibol, myFiltro, "id_llamada", DataViewRowState.CurrentRows) If (dvFiltro.Count > 0) Then QC_FolioBindingSource.Position = QC_FolioBindingSource.Find("id_llamada", dvFiltro.Item(SeguirBuscando).Item(1).ToString()) If SeguirBuscando < dvFiltro.Count - 1 Then SeguirBuscando += 1 Else SeguirBuscando = 0 End If End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myFiltro As String = "id_llamada = '" & Me.TextBox1.Text & "'"
Dim dataTeibol As DataTable = CType(QC_FolioBindingSource.DataSource.tables(QC_FolioBindingSource.DataMember), DataTable)
Dim dvFiltro As DataView = New DataView(dataTeibol, myFiltro, "id_llamada", DataViewRowState.CurrentRows)
If (dvFiltro.Count > 0) Then
QC_FolioBindingSource.Position = QC_FolioBindingSource.Find("id_llamada", dvFiltro.Item(SeguirBuscando).Item(1).ToString())
If SeguirBuscando < dvFiltro.Count - 1 Then SeguirBuscando += 1 Else SeguirBuscando = 0
End If
End Sub
Una de las cosas que deberías hacer es marcar un breakpoint en esa línea y mirar el resultado de dvFiltro.Item(SeguirBuscando).Item(1).ToString()).
No sé si, dándote el error aquí, si el problema está en la lectura de datos (no se ve, en el código, de dónde sale SeguirBuscando).
Quizás la mejor manera de mirar el error, precisamente, es ir depurando las líneas del código, puesto que son pocas y se pueden ver la mar de bien.