Geeks•ms
Todo lo que los geeks de Windows y .Net tienen que contar
Juega a la Cura, código de registro: laresistencia

Busqueda en textbox y resultados a formulario

valorado por 0 usuarios
Este artículo tiene 8 Respuestas | 2 Seguidores

Contribuyente Top 500
Envíos: 5
Puntos: 105

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

Contribuyente Top 100
Hombre
Envíos: 77
Puntos: 1,375

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.Show
End Sub

Confío que fuera esto lo que pedías.
 

  • | Puntos de post: 20
Contribuyente Top 500
Envíos: 5
Puntos: 105

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)

Contribuyente Top 500
Envíos: 5
Puntos: 105

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

 

Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

Button2.Click

 

 

Dim myFiltro As String = "nombre Like '*" & Me.TextBox1.Text & "%'"

'Observa aquí el fitro lo he modificado

 

 

Dim dataTeibol As DataTable = CType

(Cat_empBindingSource.DataSource.tables(Cat_empBindingSource.DataMember), DataTable)

 

 

Dim dvFiltro As DataView = New DataView(dataTeibol, myFiltro, "nombre"

, DataViewRowState.CurrentRows)

 

 

If (dvFiltro.Count > 0)

Then

Cat_empBindingSource.Position = Cat_empBindingSource.Find(

 

"nombre"

, dvFiltro.Item(SeguirBuscando).Item(1).ToString())

 

 

If SeguirBuscando < dvFiltro.Count - 1 Then SeguirBuscando += 1 Else

SeguirBuscando = 0

 

 

End

If

 

 

End

Sub

Contribuyente Top 100
Hombre
Envíos: 77
Puntos: 1,375

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.

  • | Puntos de post: 5
Contribuyente Top 100
Hombre
Envíos: 77
Puntos: 1,375

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 

  • | Puntos de post: 20
Contribuyente Top 500
Envíos: 5
Puntos: 105

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

Contribuyente Top 100
Hombre
Envíos: 77
Puntos: 1,375

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.

  • | Puntos de post: 20
Página 1 de 1 (8 elementos) | RSS
Juega a la Cura, código de registro: laresistencia