Visual Basic - error en filtrar fechas al consultar por sql server 2014

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 05/05/2021 20:39:50
Hola buenas , estimados estoy tratando de filtrar por un campo llamado "FechaRegistroCliente" y a ese campo quiero filtrar dependiendo desde una fecha de inicio y una fecha final ambas (DTPicker), el problema lo tengo al momento de ejecutar la consulta SQL ,Format(DataTime) , y al usar Refresh no provoca ningún error (estoy utilizando Visual 6.0 mas SQL server 2014

Les envió el código.
Agradecería su gran aporte a este Excelente Foro..!!!!!
Muchas Gracias .......

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Dim NombreCampoFecha As String 'Va a tener el nombre del campo de mi tabla y sera el nombre de la fecha donde quiero filtrar
Private Sub CmdBuscaPasajero_Click()
BuscaFecha
End Sub
Private Sub BuscaFecha()
  If RsTablaClientes.RecordCount = 0 Then
        Exit Sub
    Else
     'Obtener el Codigo del fecha chekin del pasajero
    VcodigoFecha = GrillaListadoPasajeros.Columns(1).Text
    'Llamar al Formulario de Editar Usuario
'    FrmEditarPasajero.Show vbModal
  '   EstiloGrillaCliente
     FiltrarFecha
    End If
End Sub
 
 
 'Generremos el Sub para Filtrar
Sub FiltrarFecha()
' Obtener el nombre del campo por donde vamos a filttrar
 If DTPDesdeFiltrarFechaPasajero.Value Then NombreCampoFecha = "FechaRegistroCliente"
 If DTPHastaFiltrarFechaPasajero.Value Then NombreCampoFecha = "FechaRegistroCliente"
 
 
' Programar el Filtrito
With AdoFiltrarPasajeros
     .CursorLocation = adUseClient
 
' va la coneccion a la BD
 
    .ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=VBHOTELSQL;Data Source=MAQUI-PC\MSSQLSERVER14"
    ' Aqui va la consulta con SQL RECORDSOURCE
 
 
  Fecha1 = UCase(FormatDateTime(DTPDesdeFiltrarFechaPasajero.Value)) ' & "%"
  Fecha2 = UCase(FormatDateTime(DTPHastaFiltrarFechaPasajero.Value)) '& "%"
 
.RecordSource = "SELECT * FROM TablaClientes where FechaRegistroCliente >= ' " & Fecha1 & " ' And FechaRegistroCliente <= ' " & Fecha2 & " ' "
 
' he probado con los siguiente códigos
 
' .RecordSource = "SELECT * FROM TablaClientes Where FechaRegistroCliente Between ('" & Fecha1 & "' ) And ('" & Fecha2 & "')"
'  NombreCampoFecha = "[FechaRegistroCliente] BETWEEN #" & Format(DTPDesdeFiltrarFechaPasajero.Value, #1/1/1900#) & "YYYY/MM/DD" & "hh:mm:ss[.nnn] " & _
'  "# AND #" & Format(DTPHastaFiltrarFechaPasajero.Value, #12/31/9999#) & "YYYY/MM/DD" & "hh:mm:ss[.nnn]  "
 
 
Set GrillaListadoPasajeros.DataSource = RsTablaClientes
.Refresh
End With
'EstiloGrillaCliente
VcodigoFecha = 0
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por raul (160 intervenciones) el 07/05/2021 15:12:23
Arregla esta linea
1
.RecordSource = "SELECT * FROM TablaClientes where FechaRegistroCliente >= ' " & Fecha1 & " ' And FechaRegistroCliente <= ' " & Fecha2 & " ' "

por esta otra

1
.RecordSource = "set dateformat dmy SELECT * FROM TablaClientes where FechaRegistroCliente >= ' " & Fecha1 & " ' And FechaRegistroCliente <= ' " & Fecha2 & " ' "


Por defecto todos los SQLSERVER emplean el formato de fechas americano YMD o MDY, revizalo en la configuración del servidor; no obstante se puede especificar el formato correcto mediante codigo 'set dateformat dmy select * table' que es mucho más seguro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 11/05/2021 03:36:24
excelente me Ayudo a entender el código,. un Gran Saludo Gracias Raul x tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 10/05/2021 05:59:29
Hola Raul, antes que nada millones de gracias por responder, realicé los Siguientes:

1) De acuerdo a tu sugerencia realicé los cambios en el Servidor SQL (Formato de Fechas) con la Siguiente Instrucción:

SP_CONFIGURE 'default language', 5RECONFIGURE; ( ya que mi versión express no dispone de los SSMS

2) reemplacé la linea sugerida y el resultado fue igual, ningún error y sin resultado, luego me di cta que no se si estoy metiendo bien los valores en esta linea
Fecha1 = UCase(FormatDateTime(DTPDesdeFiltrarFechaPasajero.Value)) & "%" El resultado fue Error al Convertir una cadena de
caracteres en fecha u hora,.

hasta ahí perfecto, Entendí que se necesita de la instrucción CONVERT y la dejé de esta manera.

.RecordSource = "set dateformat dmy SELECT CONVERT(DateTime, FecharegistroCliente, 103) FROM TablaClientes where FechaRegistroCliente >= ' " & Fecha1 & " ' And FechaRegistroCliente <= ' " & Fecha2 & " ' "


Fecha1 = UCase(FormatDateTime(DTPDesdeFiltrarFechaPasajero.Value)) & "%"
Fecha2 = UCase(FormatDateTime(DTPHastaFiltrarFechaPasajero.Value)) & "%"

y al ejecutar me da error al convertir una cadena de caracteres de fecha u hora .....

luego le eliminé el & "%" quedando de la esta manera

Fecha1 = UCase(FormatDateTime(DTPDesdeFiltrarFechaPasajero.Value))
Fecha2 = UCase(FormatDateTime(DTPHastaFiltrarFechaPasajero.Value))

.RecordSource = "set dateformat dmy SELECT CONVERT(DateTime, FecharegistroCliente, 103) FROM TablaClientes where FechaRegistroCliente >= ' " & Fecha1 & " ' And FechaRegistroCliente <= ' " & Fecha2 & " ' "

===> sin error y sin resultados., es decir no me está considerando la instrucción CONVERT /VB será así...? o me puede faltar algún componente del Visual,
los que tengo son
Microsoft ADO DataControl 6.0 (OLEDB)
Microsoft DataGrid 6.0 (SP6) (OLEDB)
Microsoft Tabbed Dialogo Control 6.0(SP6)
Microsoft Windows Common Control 5.0(SP2)
y Microsoft Windows Common Control 5.0(SP6)



osea quedé igual.... se te ocurre otra cosa..? o que estaré haciendo mal...?

se les agradece cualquier sugerencia, Muchas Gracias por el time
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por raul (160 intervenciones) el 10/05/2021 15:25:45
Ok, provemos otra cosa:

Literalmente dime cual es el resultado a obtener o sea cual es el objetivo de tu consulta y para que necesitas que te de error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 10/05/2021 20:03:25
Hola, el resultado a obtener, es que me traiga solo los registros seleccionados del Campo 'FechaRegistroClientes' entre Fecha1 y Fecha2 te comento que estas (Fecha1 y Fecha2) no se encuentran en ningún campo de la TablaClientes ya que son a modo de Puntero, para sacar la condición a filtrar por FechaRegistoCliente . Como ejemplo: Cuantos Pasajeros se Registraron entre el Día 15 Enero del 2021(Fecha1) y hasta el Día 28 de Marzo del 2021(Fecha2).-
Ahora con el Tema del Error. Realizo la consulta a la Tabla FechaRegistroClientes y que en su totalidad posee 900 registros de distintas Fechas. Al consultar no me da ningún error, pero me trae los 900 registros que hay en la tabla 'FechaRegistroClientes', tal vez usando la Instrucción BETWEEN.?


Saludos y Muchas Gracias
Cristián
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 10/05/2021 20:52:54
me doy cuenta que el error me lo está dando el adodc1 al convertir una cadena de caracteres de fecha/ hora al momento de utilizar .REFRESH
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 10 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error en filtrar fechas al consultar por sql server 2014

Publicado por Cristian (19 intervenciones) el 11/05/2021 03:16:15
Solucionado amigo te pasaste ya que era lo que suponía , no estaba refrescando el Recordset del ado. (Muchas Gracias Raul, por tu tiempo me ayudó mucho tu sugerencia)
Solución:
a sí estaba Set GrillaListadoPasajeros.DataSource = RsTablaClientes

Set GrillaListadoPasajeros.DataSource = AdoFiltrarPasajeros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar