Jump to content

Problema con fecha al consultar en SQL


Recommended Posts

Posted

Hola a todos, tengo el siguiente problema que me gustaria me pudiesen ayudar

tengo una hoja en la cual realizo consulta a BD SQL, hasta el momento logre conectarme a la base de datos y rescatar la informacion que necesito el problema es que cuando filtro por fechas mediante DTPicker y consulto por Ej. por el dia 04-12-2012 el resultado que obtengo son los datos del 12-04-2012. El problema es que considera los 2 primeros digitos como el mes y los segundos como el dia y no he logrado solucionar esto. le pido por favor si me pudieran ayudar.

Saludos

Libro3.rar

Posted

Pon la columna de la fecha como "Texto" y modifica esta línea:

Hoja2.Cells(fila, 1) =[B] Format(CDate([/B]rs("FechadeElaboración")[B]), "dd/mm/yyyy")[/B][/CODE]

Posted

Hola:

Así me ha funcionado correctamente:

 
[COLOR=#008000]SQL =[/COLOR] [COLOR=#008000]"[/COLOR][COLOR=#0000cd][B]SELECT FECHA FROM TABLA WHERE[/B][/COLOR][COLOR=#008000]" & _[/COLOR]
[COLOR=#008000]"[/COLOR][COLOR=#0000cd][B]FECHA > CDate('[/B][/COLOR][COLOR=#008000]" & DTPicker1.Value & "[/COLOR][B][COLOR=#0000cd]')[/COLOR] [COLOR=#0000cd]AND[/COLOR] [/B][COLOR=#008000]" & _[/COLOR]
"[COLOR=#0000cd][B]FECHA < CDate('[/B][/COLOR][COLOR=#008000]" & DTPicker2.Value & "[/COLOR][COLOR=#0000cd][B]')[/B][/COLOR]"


[/CODE]

Fíjate que convertimos las fechas dentro de la sentencia SQL y no con la función de conversión de VBA.

Con eso conseguimos que se ADO quien se pelee con el motor de la base de datos.

Posted

acabo de hacer lo que dijiste y tampoco funciono.

 Public Sub conexion()

Dim cn As New ADODB.Connection
cn.Open "driver=sql server;uid=sa;pwd=Sap;database=Quinta_Tran;server=SVR"
If cn.State = 1 Then
Hoja2.Range("A2:I1048576").ClearContents
'Hoja2.Range("A2").Select
Dim com As New ADODB.Command
com.ActiveConnection = cn
com.CommandText = "select FechadeElaboración, Código, Descripción, UniMedida, UniEmpaque, Planificado, Fabricado from dbo.INFORME_DE_ORDENES " & _
"where FechadeElaboración > CDate( '" & DTPicker1.Value & "') " & _
"and FechadeElaboración < CDate ('" & DTPicker2.Value & "') order by FechadeElaboración"
' Para tener en cuenta para selecionar la fecha a buscar es (fila, columna)
'where Fecha = '" & Hoja1.Cells(7, 4) & "'"
com.CommandType = adCmdText
Dim rs As ADODB.Recordset
Set rs = com.Execute
If rs.EOF = False Then
Dim fila As Integer
fila = 2
Do While Not rs.EOF
Hoja2.Cells(fila, 1) = Format(rs("FechadeElaboración"), "dd/mm/yyyy")
Hoja2.Cells(fila, 2) = rs("Código")
Hoja2.Cells(fila, 3) = rs("Descripción")
Hoja2.Cells(fila, 4) = rs("UniMedida")
Hoja2.Cells(fila, 5) = rs("UniEmpaque")
Hoja2.Cells(fila, 6) = rs("Planificado")
Hoja2.Cells(fila, 7) = rs("Fabricado")

fila = fila + 1
rs.MoveNext
Loop
MsgBox "Datos exportados Exitosamente"
Else
MsgBox "Sin Informaión"
End If

cn.Close
Else
MsgBox "No Estamos Conectados"
End If
Hoja2.Activate
End Sub

[/PHP]

Disculpa tanta insistencia pero necesito solucionar este problema pues es de mi trabajo

saludos

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

Me da este error

8AAAAASUVORK5CYII=

Posted

Pues lo siento, pero al no disponer de SQL Server no puedo hacer nada mas.

En Access funciona, no se que mas decirte.

Saludos.

- - - - - Mensaje combinado - - - - -

Aunque no puedo ver el error, lo mas probable es que no reconozca la función CDate, documentate sobre la función Convert de SQL Server.

Posted

lo he solucionado asi


Public Sub conexion()

Dim cn As New ADODB.Connection
cn.Open "driver=sql server;uid=sa;pwd=Sap;database=Quinta_Tran;server=SVR"
If cn.State = 1 Then
Hoja2.Range("A2:I1048576").ClearContents
'Hoja2.Range("A2").Select
Dim com As New ADODB.Command
com.ActiveConnection = cn
com.CommandText = "select FechadeElaboración, Código, Descripción, UniMedida, UniEmpaque, Planificado, Fabricado from dbo.INFORME_DE_ORDENES " & _
"where FechadeElaboración >= Convert(datetime,'" & DTPicker1 & "',103) " & _
"and FechadeElaboración <= Convert(datetime,'" & DTPicker2 & "',103)and NdeOrden < '100000000' order by FechadeElaboración"
' Para tener en cuenta para selecionar la fecha a buscar es (fila, columna)
'where Fecha = '" & Hoja1.Cells(7, 4) & "'"
com.CommandType = adCmdText
Dim rs As ADODB.Recordset
Set rs = com.Execute
If rs.EOF = False Then
Dim fila As Integer
fila = 2
Do While Not rs.EOF
Hoja2.Cells(fila, 1) = rs("FechadeElaboración")
Hoja2.Cells(fila, 2) = rs("Código")
Hoja2.Cells(fila, 3) = rs("Descripción")
Hoja2.Cells(fila, 4) = rs("UniMedida")
Hoja2.Cells(fila, 5) = rs("UniEmpaque")
Hoja2.Cells(fila, 6) = rs("Planificado")
Hoja2.Cells(fila, 7) = rs("Fabricado")

fila = fila + 1
rs.MoveNext
Loop
MsgBox "Datos exportados Exitosamente"
Else
MsgBox "Sin Informaión"
End If

cn.Close
Else
MsgBox "No Estamos Conectados"
End If
Hoja2.Activate
End Sub


[/CODE]

Gracias por toda la ayuda. Si te fijas converti la fecha en el mismo codigo vba.

Cerrar tema

Archived

This topic is now archived and is closed to further replies.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      189
    • Comments
      99
    • Reviews
      29

  • Crear macros Excel

  • Posts

    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
    • Saludos Sr @Israel Cassales espero este bien quise verificar bien su solución y que las modificaciones que hice funcionarán adecuadamente y al respecto debo decir que su aporte es excelente ya que no solo me ayudo a resolver lo que necesitada sino que también me ayudo a solventar dos cosas más por lo cual estoy muy agradecido 
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy