Foros del Web » Programación para mayores de 30 ;) » .NET »

Misterioros cambio de comportamiento en DataTable.Select con columna DateTime (VB.Net

Estas en el tema de Misterioros cambio de comportamiento en DataTable.Select con columna DateTime (VB.Net en el foro de .NET en Foros del Web. Desde hace unos días, luego de estar funcionando bien durante meses bien , un conjunto de operaciones de selección de registros usando el método Select() ...
  #1 (permalink)  
Antiguo 13/12/2008, 15:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Exclamación Misterioros cambio de comportamiento en DataTable.Select con columna DateTime (VB.Net

Desde hace unos días, luego de estar funcionando bien durante meses bien, un conjunto de operaciones de selección de registros usando el método Select() de los DataTable ha empezado a fallar constantemente cuando intento recuperar los registros dentro de un rango de tiempo definido en una columna de tipo DateTime.
El caso se da en un select de este tipo:
Código:
 oSelect = "ID= '" & .Item("ID") & "' " & _
                    "AND SERIE = '" & .Item("NRO_SERIE") & "' " & _
                    "AND DESDE = '" & Convert.ToDateTime(.Item("DESDE")).ToString("dd/MM/yyyy HH:mm:ss", nCI) & "' AND HASTA = '" & Convert.ToDateTime(.Item("HASTA")).ToString("dd/MM/yyyy HH:mm:ss", nCI) & "'"
                    reg = setData.Tables(0).Select(oSelect, "ID, SERIE, DESDE")
nCI es un objeto que define que el datetime está entrando con regionalización para argentina ("es-AR").
En este contexto, el filtro quedaba o menos así:

Cita:
"ID = '0025' AND SERIE = '0025' AND DESDE = '01/06/2008 22:49:33' AND HASTA = '04/06/2008 09:14:40'"
Esto funcionaba perfectamente, sin importar si la aplciación se ejecutaba en Estados Unidos, México, Colombia, Ecuador, Chile, Brasil o Argentina (donde están nuestros clientes), pero desde hace unas semanas ha comenzado a fallar dando un mensaje que expresa:
"Conversión no válida desde 'DateTime' hasta 'String'", lo que es absurdo, por cuanto ese es el modo que el manual en MSDN indica para este tipo de selecciones. Incluso dice que la comparación ">=" o "<=" no es válida entre estos dos tipos... lo que también es falso.

La pregunta, entonces:
¿Alguien tiene idea de por qué está sucediendo esto?
¿Alguna sugerencia de cómo resolverlo"

Tip final:
Las tablas que se trabajan contienen información que sólo resulta práctico manipular con ése método, por lo que usar otro implicaría una enorme pérdida de performance (además de enormes cantidades de tiempo de desarrollo adicional). Con esto quiero decir que debo resolver el problema, no rediseñar todo el algoritmo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 02:05.