Dentro de una consulta con datos tipo DateTime, se presentó el error “La conversión del tipo de datos char a datetime produjo un valor datetime fuera de intervalo“, “Source:.Net SqlClient Data Provider“; originalmente el código en VB .NET era:
Dim query = From pp In _db.ProductoPrecio Where pp.CodAlmacen = 4 _
And pp.Fecha = (From f In _db.ProductoPrecio _
Where f.Producto.CodProducto = pp.CodProducto _
And f.Almacen.CodAlmacen = 4 Select f.Fecha).Max
Select pp
Dim query1 = From prod In _db.Producto _
order by prod.CodProducto _
Select New With {.CodProducto = prod.CodProducto, _
.CodInterno = prod.CodInterno, _
.NomProducto = prod.NomProducto, _
.Fecha = (From prec In query.Where(function(s) s.CodProducto = prod.CodProducto) Select prec.Fecha).firstordefault, _
.PrecioVenta = (From prec In query Where prec.CodProducto = prod.CodProducto Select prec.PrecioVenta).FirstOrDefault}
la expresión causante del problema es “Select prec.Fecha“, para solucionarlo se la cambio por “CType(pp.Fecha, DateTime?)” quedando el código como sigue:
Dim query = From pp In _db.ProductoPrecio Where pp.CodAlmacen = 4 _
And pp.Fecha = (From f In _db.ProductoPrecio _
Where f.Producto.CodProducto = pp.CodProducto _
And f.Almacen.CodAlmacen = 4 Select f.Fecha).Max
Select pp
Dim query1 = From prod In _db.Producto _
order by prod.CodProducto _
Select New With {.CodProducto = prod.CodProducto, _
.CodInterno = prod.CodInterno, _
.NomProducto = prod.NomProducto, _
.Fecha = (From prec In query.Where(function(s) s.CodProducto = prod.CodProducto) CType(pp.Fecha, DateTime?)).firstordefault, _
.PrecioVenta = (From prec In query Where prec.CodProducto = prod.CodProducto Select prec.PrecioVenta).FirstOrDefault}