Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Realizar busqueda a la base de datos con varios campos de un formulario

Estas en el tema de Realizar busqueda a la base de datos con varios campos de un formulario en el foro de Visual Basic clásico en Foros del Web. Que tal compañeros buenos dias, al hacer el tipico SELECT de busqueda por un solo campo de un formulario ejemplo un TextBox no hay ningún ...
  #1 (permalink)  
Antiguo 20/11/2008, 07:35
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Realizar busqueda a la base de datos con varios campos de un formulario

Que tal compañeros buenos dias, al hacer el tipico SELECT de busqueda por un solo campo de un formulario ejemplo un TextBox no hay ningún problema, pero mi inquietud es como sería para por ejemplo plantear busquedas por cualquiera de los campos que tengo en mi formulario , busquedas por código y nombre y descripcion o solo por código y nombre o por todos los campos ETC., sin lugar a dura abria que recorrer todos los controles del formulario y verificar cual o cuales no estas vacios e ir armando una cadena de consulta a partir de los mismos, obviamente es un decir porque estoy un poco enredado con esto agradesco sus respuestas al respecto.



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #2 (permalink)  
Antiguo 20/11/2008, 11:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

Sí, como bien dijiste, puedes recorrer todos los controles dentro de la ventana con un For Each. Por ejemplo:
Código vb:
Ver original
  1. Dim Objeto As Object
  2. For Each Object In Me.Controls
  3.    If TypeOf Object Is TextBox Then
  4.       'Es un TextBox
  5.   End If
  6. Next Object
Esa sería una forma, aunque si no tienes muchos campos puedes ir comparándolos uno a uno e ir añadiendo a la consulta según esté vacío o no.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/11/2008, 17:07
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

Muchas gracias por el comentario.






Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #4 (permalink)  
Antiguo 20/11/2008, 19:19
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

mira yo lo hago asi:

if txt_nombre <> "" then
sql_where_1 = " AND nombre like '"& txt_nombre &'" "
end if

if txt_provincia <> "" then
sql_where_2 = " AND nombre like '"& txt_provincia &'" "
end if

sql = " select estudios.*, pacientes.*"
sql = sql & " from estudios, pacientes"
sql = sql & "where estudios.id_paciente = pacientes.id_paciente "
sql = sql & sql_where_1 & sql_where_2


espero te sirva
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #5 (permalink)  
Antiguo 21/11/2008, 07:58
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

Gracias por la respuesta compañero, ya lo solucione de esta forma por si a alguien le interesa, ConsultarDatos() es una función que cree para las diferentes consultas a la BD

Código:
Dim cControl As Control, cCriterio As String = ""
        For Each cControl In Me.Controls
            If (TypeOf cControl Is System.Windows.Forms.TextBox) Or (TypeOf cControl Is System.Windows.Forms.ComboBox) Then
                If cControl.Text <> "" Then
                    If cControl.Tag = "nombre" Or cControl.Tag = "direccion" Or cControl.Tag = "pais" Or cControl.Tag = "profesion" Then
                        cCriterio = cCriterio + cControl.Tag + " LIKE " + "'" + "%" + cControl.Text + "%" + "'" + " AND "
                    Else
                        cCriterio = cCriterio + cControl.Tag + " = " + cControl.Text + " AND "
                    End If
                End If
            End If
        Next cControl
        cCriterio = Mid(cCriterio, 1, cCriterio.Length - 4)
        ConsultarDatos("empleados", cCriterio) 
        Me.listado.DataSource = Sdatatable
Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"

Última edición por Carlojas; 21/11/2008 a las 08:03
  #6 (permalink)  
Antiguo 21/11/2008, 21:35
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

buenas de nuevo, bien, pero si tienes que consultar entre rango de precios o fechas necesitaras el operador logico AND y tu tienes

Código:
 If cControl.Tag = "nombre" Or cControl.Tag = "direccion" Or cControl.Tag = "pais" Or cControl.Tag = "profesion" Then

un detalle para que tengas en cuetna

salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #7 (permalink)  
Antiguo 22/11/2008, 06:12
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Respuesta: Realizar busqueda a la base de datos con varios campos de un formulario

Exacto muchas gracias por tu comentario lo tendré en cuenta


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:46.