Fecha y hora actual: Sab 19 May, 2012 21:07 pm
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Filtrar una tabla por fechas

Responder al Tema

Índice del Foro > Visual Basic .NET > Filtrar una tabla por fechas

Autor Mensaje
Baldomero
Usuario Iniciado


Registrado: 24 Oct 2011
Mensajes: 15

Mensaje Publicado: Dom 22 Ene, 2012 21:15 pm

Título del mensaje: Filtrar una tabla por fechas

Responder citando

Buenas noches.

Tengo una BD Access y una tabla con un campo "fecha" de tipo Fecha/hora; fecha corta, 00/00/0000. Estoy haciendo una aplicación para VB 2010.
Quiero ejecutar una orden SQL para seleccionar los registros con "fecha" entre dos límites que entro en dos TextBox. Es decir, teclear
sql = "SELECT ... WHERE fecha >= TextBox1.Text AND fecha <= TextBox2.Text".
He hecho infinidad de formas para conseguir que me funcione, por ejemplo poner en vez de TextBox MaskedTextBox, y nada; también he puesto Format(TextBox1.text, "dd-mm-yyyy") y me contesta que la cadena "31/12/2011" no la puede convertir a Date. Otra curiosidad es que donde me da el error aparece como sí aceptada esta fecha (31/12/2011) mientras que si pongo en TextBox1.Text "01/01/2011" me sale el campo vacío. Por supuesto he hecho las mil combinaciones con los paréntesis, sin obtener errores en tiempo de diseño; de todas maneras no me hace el filtrado. En los libros que tengo no me soluciona esta cuestión y en la red unas soluciones son para VB6.0, otras para C#, etc., pero que me cuadre, ninguna. He intentado también con el wizard de VB2010 pero también me da errores.
¿Me podéis ayudar? Gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Lun 23 Ene, 2012 14:27 pm

Título del mensaje: Re: Filtrar una tabla por fechas

Responder citando

Vamos haber o a ver... las cadenas no se concatenan así, primeramente...
Código:
miVariableString= miVariebleString+" otra cadena"+ miVariableString


Convertir un Date a String con el formato dd-mm-yyyy :
Código:
fecha.ToString("dd-mm-yyyy")


Sustituir barras por guiones:
Código:
TextBox1.Replace("/","-")
TextBox2.Replace("/","-")


Entonces deberías teclear...
Código:
TextBox1.Replace("/","-")
TextBox2.Replace("/","-")
sql = "SELECT ... WHERE "+fecha.ToString("dd-mm-yyyy")+" >= "+TextBox1.Text"+" AND "+fecha <= "+TextBox2.Text


Ahora de sentencias MySQL no me pregunte... si tienes una duda sobre MySQL, disponga hacerla en la sección que existe para tal fin.


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Baldomero
Usuario Iniciado


Registrado: 24 Oct 2011
Mensajes: 15

Mensaje Publicado: Lun 23 Ene, 2012 15:26 pm

Título del mensaje: Re: Filtrar una tabla por fechas

Responder citando

Gracias por tu respuesta. Muy agudo de lo "vamos haber" o "vamos a ver", yo añadiría: "bamos haber", je.
Tengo varios errores;
1) "Replace" no es un miembro de System.Windows.TextBox. La verdad es que como las fechas no las entro en MaskedTextBox sino en TextBox, no le veo mucha razón a cambiar "/" por "-" mediante código.
2) "fecha" no está declarado (??). Pero es un campo de la tabla en que estamos. Si entro tabla.fecha tampoco lo reconoce.
3) En cuanto a las uniones de cadenas, vengo de VB6.0 donde así se hacían y tampoco he recibido mensajes de error. De hecho con tu mensaje es la primera vez que veo el "+" para unir, en fin si me funcionara todo... aunque sea con pegamento.
De todos modos muchas gracias por tu ayuda.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Lun 23 Ene, 2012 15:49 pm

Título del mensaje: Re: Filtrar una tabla por fechas

Responder citando

Baldomero escribió:
1) "Replace" no es un miembro de System.Windows.TextBox. La verdad es que como las fechas no las entro en MaskedTextBox sino en TextBox, no le veo mucha razón a cambiar "/" por "-" mediante código.


Mea culpa (no es que me haga pis sobre mi culpa) Risa , tienes razón, es que ando trabajando y no he tenido mucho tiempo para tu problema. Me comí el Text. Por lo que debería quedar así.
Código:
TextBox1.Text.Replace("/","-")
TextBox2.Text.Replace("/","-")

Porque Replace es un miebro de String, como te indicaba el mensaje de error. Y el miebro Text de TextBox es un String que almacena la cadena.

Baldomero escribió:
2) "fecha" no está declarado (??). Pero es un campo de la tabla en que estamos. Si entro tabla.fecha tampoco lo reconoce.


Como decimos en mi tierra; "AAAAAAmigo!!!" Risa Entonces lo dejamos casi como estaba.
Código:
TextBox1.Text.Replace("/","-")
TextBox2.Text.Replace("/","-")
sql="SELECT ... WHERE fecha >= "+TextBox1.Text"+" AND fecha <= "+TextBox2.Text


Ahora, si no te funciona la sentencia... sabes lo que te comenté antes. Pero si tengo tiempo investigaré la sentencia, aunque si te soy sincero tengo trabajo hasta la noche Triste y lo me quiero quietar YAAAAA !!!!

PD. Si, creo que en VB se usaba el "&" el "espermasan" Risa tonta


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Baldomero
Usuario Iniciado


Registrado: 24 Oct 2011
Mensajes: 15

Mensaje Publicado: Lun 23 Ene, 2012 18:52 pm

Título del mensaje: Re: Filtrar una tabla por fechas

Responder citando

Muchas gracias por tu tiempo. He estado dándole al coco y finalmente me rula. Por si es de utilidad a alguien tan ignorante como yo, aquí copio el código que será una simpleza, pero después del tiempo que me ha llevado es como si el Real Madrid ganara al Barça en el Bernabéu (perdón a los madridistas).
Me queda como cosa que entenderé cuando sea mayor (sólo tengo 73 años) por qué en SUM y COUNT(*) el AS no me sirve para nada y tengo siempre que ir al ds.Tables().Rows(0).Item(0) para conocer el resultado. No es un trabajo, pero sí una curiosidad porque en todos los libros dice que debería funcionar. Muchas gracias.
El objetivo del código es filtrar (contar en este caso) los registros entre dos fechas de un campo entradas en dos TextBox

Código:
        Dim con As OleDbConnection = New OleDbConnection
        Dim Expr1 As Integer
        Dim DateBegin, DateEnd As Date
        con.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=c:\Users\Mis documentos\bd4.mdb"
        DateBegin = DateValue(TextBox2.Text)
        DateEnd = DateValue(TextBox4.Text)
        query5 = "SELECT COUNT (*) As Expr1 FROM rendimiento WHERE (fecha >= #" & DateBegin & "# AND fecha <= #" & DateEnd & "# AND titular = '" & titu & "' AND clase = 'Acciones')"

        MsgBox("1 Expr1 " & Expr1) ' Da mal resultado
        Dim da5 As New OleDbDataAdapter(query5, con)
        Dim ds5 As New DataSet
        da5.Fill(ds5, "cuacc")
        cuantasacc = ds5.Tables("cuacc").Rows(0).Item(0)
        MsgBox(" 2 Cuantos dividendos " & cuantasacc) ' Da buen resultado
        con.Close()

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Vie 27 Ene, 2012 19:01 pm

Título del mensaje: Re: Filtrar una tabla por fechas

Responder citando

Pues nada "chaval" me alegro que hayas dado con una solución y por consiguiente la compartas con la comunidad.

Gracias a ti compañero.
Aplauso Aplauso Aplauso Aplauso


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Creacion de combinaciones a partir de una tabla...

b3rt SQL - Lenguaje SQL 0 Mie 16 May, 2012 00:55 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Hacer un control de 2 fechas

Noha C, C#, Visual C++ 23 Lun 05 Mar, 2012 14:12 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Filtrar JTable por varias columnas

maria_programacion Java 0 Vie 30 Dic, 2011 12:00 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Suma diagonales de una tabla

Mayte JavaScript 0 Mie 14 Dic, 2011 19:59 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Conectar textbox con tabla de access

soyeddygh Visual Basic .NET 2 Mie 12 Oct, 2011 19:36 pm Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,