none
problema con adddays de linq y sql 2008 RRS feed

  • Pregunta

  • Que tal compañeros, recientemente cambie mi aplicacion de sql server 2005 a 2008 y ahora mi sentencia linq la cual usa addDays me marca el siguiente error:

    The datepart millisecond is not supported by date function dateadd for data type date.

    codigo en linq:

    Dim todas_mn = ((From consulta In db.fechas_facturacions, consulta2 In db.facturacions, consulta3 In db.fechas_viajes
                     Where
                     consulta3.fecha.fecha.Value.Date >= inicio And
                     consulta3.fecha.fecha.Value.Date <= fin And
                    consulta3.fecha.tipo_fecha = 1 And
                   consulta2.viaje.precio.id_empresa = cliente And
                   consulta.id_factura = consulta2.id_factura And
                   consulta.factura.Cancelada = False And
                   consulta3.viaje.verificado = True And
                   consulta2.factura.facturada_dolares = False And
                   consulta2.id_viaje = consulta3.id_viaje And
                   Not (From consulta4 In db.fechas_facturacions
                        Where consulta4.fecha.tipo_fecha = 5 And consulta4.fecha.fecha.Value.Date.AddDays(3) <= Now.Date()
                        Select consulta4.id_factura).Contains(consulta.id_factura)
                     Select consulta.factura.folio,
                     consulta.factura.importe,
                     consulta.factura.iva,
                     consulta.factura.retencion,
                     consulta.factura.total,
                     consulta.factura.Cancelada,
                     consulta.id_factura).Distinct().OrderByDescending(Function(x) x.folio))
                grdMn.DataSource = todas_mn
                grdMn.DataBind()

    miércoles, 31 de octubre de 2012 22:53

Todas las respuestas

  • por lo que veo es linq to sql, y esta queriendo transformar la query en un comando SQL para ejecutarlo

    prueba usando

    Not (From consulta4 In db.fechas_facturacions.ToList()

    ....

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 31 de octubre de 2012 23:37
  • Yo me he encontrado con este problema en C# e imagino que será lo mismo.

    Con el .ToList() que menciona Leandro fuerzas a ejecutar un primera query teniendo así una conexión extra a base de datos.

    La solución que encontre es pasar como parametro una variable con el calculo ya hecho en memoria, en tu caso quieres sumarle al campo de base de datos, pero es lo mismo restar 3 al Now.Date(), y quedaria así

    var miVariableDeFecha=Now.Date().AddDays(-3)
    ...
    Where consulta4.fecha.tipo_fecha = 5 And consulta4.fecha.fecha.Value.Date <= miVariableDeFecha
    ...

    Pruebalo, pero creo que hará lo mismo que lo que esperas.


    Vota mi respuesta si te ha sido útil. Gracias.

    lunes, 5 de noviembre de 2012 18:43