|
Página 1 de 2
|
Consulta Dentro De Una Variable Result
Autor |
Mensaje |
jousseph
jousseph germaine celis zambrano
Analista Programador
Registrado: Julio 2010
Mensajes: 434
Edad: 38 Ubicación: Tachira
|
Consulta Dentro De Una Variable Result
Hola buenas noches saludos, volviendo por aquí con nuevos detalles y mostrando algunos problemas, gracias por sus ayudas.
Quiero comentarles que he estado haciendo las consultas filtradas por fechas (DESDE, HASTA) y me muestra todo lo que necesito que son (Todos los Delitos, Barrios o Sectores y Hora) todo esto con la cantidad de cada uno para sacar una estadística de los mismos, pero ahora poseo otro detalle que si quiero hacer una sub consulta por (El Nombre del Delito, Nombre del barrio y la hora) dentro de ese mismo filtro que acabe de hacer como lo haría?, por ejemplo si muestro mi consulta filtrada así:
Citar: Dim fila As Integer
Dim fecha_inicial As String
Dim fecha_final As String
Dim strsql As String
Dim rstped As String
Dim DELITOS As Result
conexion.hresul = conexion.hconn.Exec("Select *from delitos")
If Not (conexion.hresul.Available) Then
Message.Error("NO HAY REGISTROS EN LA BASE DE DATOS")
Else
If DateBox_fecha_delito3.Value = "" Or DateBox_fecha_delito4.Value = "" Then
Message.Info("POR FAVOR LLENE LOS CAMPOS DE FECHAS PARA REALIZAR LA CONSULTA")
Else
fecha_inicial = Format(DateBox_fecha_delito3.Value, "yyyy-mm-dd")
fecha_final = Format(DateBox_fecha_delito4.Value, "yyyy-mm-dd")
strsql &= ("Select *from delitos")
strsql &= " WHERE date_format(fecha_delito, '%Y-%m-%d') BETWEEN '" & fecha_inicial & "' AND '" & fecha_final & "'"
strsql &= " ORDER BY fecha_delito"
conexion.hresul = db.Current.Exec(strsql)
fila = 0
Do While conexion.hresul.Available
Lista3.Rows.Insert(fila)
Lista3[fila, 0].Text = conexion.hresul["delito"]
Lista3[fila, 1].Text = Format(conexion.hresul["fecha_delito"], "dd/mm/yyyy")
Lista3[fila, 2].Text = conexion.hresul["hora_delito"]
Lista3[fila, 3].Text = conexion.hresul["lugar_direccion_delito"]
Lista3[fila, 4].Text = conexion.hresul["barrio_urbanizacion_delito"]
ver_registros_delitos.tranasporte15(conexion.hresul)
conexion.hresul.MoveNext()
fila = fila + 1
Loop
Lista.Refresh
Button_refrescar3.Enabled = True
Button_buscar_consulta3.Enabled = False
Button_reporte_tabla3.Enabled = True
TextBox_TOTTAL.Text = fila
Endif
Endif
End
Y la variable (conexión.hresul) es la que lleva esta consulta realizada yo podría buscar dentro de la misma los nombres que quiero consultar?
Suena tonto pero presiento que esta variable conexion.hresul guarda la información como mini tabla verdad? porque he hecho pruebas para ver que hay adentro de la hresul y me muestra los datos que he filtrado con la conexion.hresul dentro de un listbox y aparecen!, entonces yo quisiera saber si existe alguna manera de hacer una consulta a la misma variable (conexion.hresul) para que me busque dentro de la misma el (nombre del delito, barrios y hora) para luego mostrarlo de nuevo en una gridview, mil gracias y saludos.
|
#1 Miercoles, 15 Enero 2014, 06:22 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Consulta Dentro De Una Variable Result
No se puede sacar un sub-result de un result, además, no vale la pena.
Tu problema es que no haces las cosas bien y eso te limita. Al no usar la función _Data, todo el relleno del gridview lo haces en el bucle dentro de la función principal, y luego no tienes ningún método para modificar ese gridview.
Está claro que no entiendes el propósito y las ventajas de la función _Data. Te adjunto un ejemplo lo más simplificado posible de su manejo. Es un gridview que te permite filtrar y re-filtrar todo lo que quieras sólo con hacer doble click sobre uno de los valores.
Para que lo entiendas mejor te he puesto también la posibilidad de buscar por nombre con un botón específico.
Sólo sigue paso a paso la ejecución del programa y entenderás cómo funciona.
Cualquier duda pregunta. Sé que preferimos siempre nuestro código, porque lo entendemos mejor. Pero te aseguro que si sigues haciendo así las cosas no vas a progresar en el uso de listas en pantalla.
Suerte
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplogridview.zip |
Tamaño: |
8.7 KB |
Descargado: |
92 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplogridview.zip |
Tamaño: |
8.7 KB |
Descargado: |
92 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplogridview.zip |
Tamaño: |
8.7 KB |
Descargado: |
92 veces |
última edición por shordi el Jueves, 16 Enero 2014, 19:19; editado 1 vez
|
#2 Miercoles, 15 Enero 2014, 10:01 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Consulta Dentro De Una Variable Result
Y la variable (conexión.hresul) es la que lleva esta consulta realizada yo podría buscar dentro de la misma los nombres que quiero consultar?
Suena tonto pero presiento que esta variable conexion.hresul guarda la información como mini tabla verdad? porque he hecho pruebas para ver que hay adentro de la hresul y me muestra los datos que he filtrado con la conexion.hresul dentro de un listbox y aparecen!, entonces yo quisiera saber si existe alguna manera de hacer una consulta a la misma variable (conexion.hresul) para que me busque dentro de la misma el (nombre del delito, barrios y hora) para luego mostrarlo de nuevo en una gridview, mil gracias y saludos.
lo mejor es que hagas una nueva consulta con subconsulta
algo asi
select * from (select * from tabla where condicion= valor) where condicion_nueva =otro_valor
y vuelvas a llenar la grilla
puedes colocar el codigo en una funcion y pasar el sql por parametro
lo de llenar la grid de ese modo en algunos casos es mejor por que permite aplicar formato a los valores a medida que se va llenando la grilla
|
#3 Miercoles, 15 Enero 2014, 17:46 |
|
|
jousseph
jousseph germaine celis zambrano
Analista Programador
Registrado: Julio 2010
Mensajes: 434
Edad: 38 Ubicación: Tachira
|
Re: Consulta Dentro De Una Variable Result
Señor shordi buenas tardes como esta, espero que bien.
Le entiendo el codigo de su gridview esta buenisimo pero hay algo que me tiene atrapado y que nose si puede hacer:
Fijese yo observo esto al filtrar:
Citar: Public Sub Button1_Click()
filtrar("Nombre", txtnombre.text)----Aqui ya tiene el campo de la tabla y la tex donde se va a meter el nombre a buscar
End
Public Sub filtrar(campo As String, valor As String)------Me imagino que aqui las hace string para buscar con todo y la sentencia sql mostrada abajo
If Not InStr(cSql, " where ") Then 'comprobamos si ya tiene un filtro puesto
cSql &= " where " 'si no lo tiene añadimos la palabra where
Else
cSql &= " and " 'Si ya tiene una condición, añadimos una coma para la siguiente
Endif
cSql &= campo & " = '" & valor & "'"
refrescar 'volvermos a rellenar el gridview
End
Si yo quisiera hacer una consulta multiple de varios campos por ejemplo las (beetwen fechas inicio, fecha final,delito, barrio o sector, hora) todo de una vez!, se puede? porque yo podria hacer un filtrado como ud lo tiene y me traeria todos los delitos y hasta las especificaciones de cada uno usando filtrar("delito", delito.text) o ("barrio_sector, texbox_sectores.tex) pero comprendidas entre fechas!, me entiende? osea en pocas palabras lo que me tiene es enredado la sentencia SQL para buscar (fechas entre fechas) y a la ves nombre del delito, sector y hora).
En resumen para ser mas claro si yo quisiera hacer una sentencia SQL donde pudiera hacer una busqueda entre fechas y Y QUE A LA VES me buscara el nombre del delito, el sector y la hora todo de una ves se puede? y si es asi como es?
Yo voy aimplementar su codigo para hacer la busqueda filtrada por las fechas mientras tanto y muchas gracias por esa gran paciencia compañero.
---------------------------------------------------------------------------
Señor codificador:
Hola como esta, ese codigo es para hacer multiples consultas se ve einteresante
Citar: select * from (select * from tabla where condicion= valor) where condicion_nueva =otro_valor
pero como lo acomodaria para realizar una consulta SQL entre fechas>==<fechas y a la ves buscar el nombre del delito, nombre del sector, y nombre de la hora metida, gracias
última edición por jousseph el Miercoles, 15 Enero 2014, 23:02; editado 2 veces
|
#4 Miercoles, 15 Enero 2014, 22:54 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Consulta Dentro De Una Variable Result
Jousseph, dices:
... hacer una busqueda entre fechas y Y QUE A LA VES me buscara el nombre del delito, el sector y la hora todo de una ves se puede...
Si lees lo que has puesto verás que no tiene sentido. Cuando dices una "búsqueda entre fechas" te estás refiriendo a la clausula WHERE de la sentencia SQL. Cuando dices "me buscara el nombre... etc." te refieres a los campos que quieres obtener de la base de datos. Cuando preguntas si se puede hacer todo de una vez, yo me pregunto si NO se puede hacer de una vez, porque una consulta SELECT sin campos, es imposible.
(Además, supongo que sabes que * en la sentencia sql quiere decir "todos los campos", por cuanto aún entiendo menos eso de "... me buscara el nombre... etc. etc.)
No confundas las condiciones de búsqueda con los contenidos de búsqueda.
El ejemplo que te mandé AÑADE condiciones de búsqueda a la sentencia que se sql del evento open del form. Por tanto en el código de este evento:
Sustituye los parámetros de la conexión por tu conexión y la línea cSql= "Select...." por tu sentencia sql
sSql = "Select nombre_delito,sector, hora from delitos WHERE (date_format(fecha_delito, '%Y-%m-%d') BETWEEN '" & fecha_inicial & "' AND '" & fecha_final & "')"
y ya está.
Resumiendo: Escribe la sentencia SQL que te de la gana, métela en la variable cSql y llama a la función "refrescar". Es todo lo que necesitas.
Saludos.
última edición por shordi el Jueves, 16 Enero 2014, 10:24; editado 3 veces
|
#5 Jueves, 16 Enero 2014, 10:08 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Consulta Dentro De Una Variable Result
Como apunte al margen, veo en tu código esta línea:
strsql &= ("Select *from delitos")
En ella usas mal el operador &= Este operador es la forma abreviada de strsql = strsql & "Select * from delitos", no es un equivalente al operador = . Si lo usas indiscriminadamente tendrás problemas.
y rodear de paréntesis las cadenas de caracteres sólo tiene sentido si quieres que esas cadenas se puedan traducir a otros idiomas. No lo uses si no es así, porque confundirás al compilador.
última edición por shordi el Jueves, 16 Enero 2014, 10:17; editado 1 vez
|
#6 Jueves, 16 Enero 2014, 10:13 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Consulta Dentro De Una Variable Result
Se me ocurre ahora que cuando dices
Citar: Y QUE A LA VES me buscara el nombre del delito, el sector y la hora
a lo mejor quieres decir que también pueda FILTRAR, que no buscar por esos campos. Eso es lo que hace precisamente el ejemplo. Haz doble click sobre el nombre del delito que quieras filtrar y ya está.
Estúdiate los operadores lógicos de SQL: AND, OR, XOR, etc.
algo así:
sSql = "Select nombre_delito,sector, hora from delitos WHERE ( date_format(fecha_delito, '%Y-%m-%d') BETWEEN '" & fecha_inicial & "' AND '" & fecha_final & "') AND delito = "Robo" AND sector="DF"
etc.
Fíjate en los parentésis ...WHERE ( ... y fecha_final & "') Estos son necesarios si añades más condiciones a la sentencia, para que el manejo de fechas se procese primero.
Suerte
|
#7 Jueves, 16 Enero 2014, 10:23 |
|
|
jousseph
jousseph germaine celis zambrano
Analista Programador
Registrado: Julio 2010
Mensajes: 434
Edad: 38 Ubicación: Tachira
|
Re: Consulta Dentro De Una Variable Result
Eeeeeexactamente señor shordi, eso es lo que yo quiero un filtro exacto de busqueda del tipo de delito con su barrio o sector y hora pero (entre fechas beetween)
Por ejemplo este codigo lo probe y me funciono, me buscó el nombre del delito y todo, lo que mas me gusta de este codigo es que hace una (micro consulta) por decir yo consigo a todos los los delitos pero quiero saber exactamente solo un tipo de delito por decir (robo) entonces me ordena solo los robos (esto es lo que yo quiero) y esta funcion la hace pero ahora le explico el porblemilla mas abajo con el siguiente codigo
Public Sub GridView1_DblClick()
filtrar(GridView1.Columns[GridView1.Column].text, GridView1.Current.Text) 'filtramos por el nombre de la columna (que es el nombre del campo) y el valor actual
End
Public Sub Button1_Click()
filtrar("Localidad", txtnombre.text)
End
Public Sub filtrar(campo As String, valor As String)
If Not InStr(cSql, " where ") Then 'comprobamos si ya tiene un filtro puesto
cSql &= " where " 'si no lo tiene añadimos la palabra where
Else
cSql &= " and " 'Si ya tiene una condición, añadimos una coma para la siguiente
Endif
cSql &= campo & " = '" & valor & "'"
refrescar 'volvermos a rellenar el gridview
End
Aqui es donde estoy atrapado o quiza es que yo nose hacer las cosas por ejepmlo quiero hacer esto aqui, adaptarlo a su codigo:
"Select nombre_delito,sector, hora from delitos WHERE ( date_format(fecha_delito, '%Y-%m-%d') BETWEEN '" & fecha_inicial & "'
Si lograse hacer este codigo alli arriba en Public Sub Filtrar(campo As String, valor As String) del cual ud me dio podria hacer la consulta en la Gridview para encontrar el tipo de delito o el tipo de barrio o sector y listo para sacarle una estadistica porque yo podria mostrar todos los delitos y los barrios o sectores pero si me piden por ejemplo: el tipo de delito por barrio? porque un barrio puede tener un muchos delitos pero si quisieran saber cuantos "ROBOS" hay en el BARRIO FULANO, esa es la parte que quiero solucionar y dando click a la grilla me lo ordena y me muestra solo el delito que seleccione señor shordi.
última edición por jousseph el Jueves, 16 Enero 2014, 13:54; editado 1 vez
|
#8 Jueves, 16 Enero 2014, 13:53 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Consulta Dentro De Una Variable Result
Estás obsesionado con eso del between
En el ejemplo tenías pistas para hacer lo que quieres.
Te he modificado el ejemplo para que veas cómo funciona. Descárgatelo otra vez y estudialo. He añadido un campo fecha y que busques por rangos y haciendo doble click también, como antes.
Además te he añadido un textarea para que veas en cada momento qué consulta estás efectuando.
Suerte
|
#9 Jueves, 16 Enero 2014, 19:23 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Consulta Dentro De Una Variable Result
El problema fundamental es querer hacer las cosas sin comprenderlas realmente. Jousseph está probando trozos de código para ver si funcionan en su aplicación, pero no entiende bien qué hace y por qué. En mi opinión, en lugar de querer construir la casa por el tejado, debería afianzar conocimientos empezando desde el principio, con aplicaciones sencillas y consultas sencillas e ir profundizando progresivamente. Al menos esa es mi opinión, pero puedo estar equivocado.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#10 Jueves, 16 Enero 2014, 22:24 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|