Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2007, 05:02
yabelyne
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Insertar datos en vista

Hola

Tengo el siguiente problema, tras una migración de una base de datos access a SQL server 2005 a la cual se accede desde una aplicación en VB me ha dejado de funcionar una ficha que hace una insercion de datos en una vista que mete datos en dos tablas, en access funcionaba perfecto y ahora en sql server ya no funciona, he leido que esto se soluciona con creando un TRIGGER con INSTEAD OF lo estoy intentando y no soy capaz de que funcione y me juego mi puesto de trabajo, alguien me puede ayudar??

aqui pego la consulta que en access si funcionaba:

Código:
SELECT ListadoMateriales.IdObra_LM, ListadoMateriales.IdLinea_LM, ListadoMateriales.Recibido_LM, ListadoMateriales.DetallesParaPedido_LM, ListadoMateriales.IdPedido_LM, ListadoMateriales.Verificado_LM, Materiales.IdMaterial, ListadoMateriales.Estado_LM, Materiales.Proveedor_Material, Materiales.ReferenciaProveedor_Material, Materiales.Descripcion_Material, Materiales.EnAlmacen_Material, ListadoMateriales.CantidadAPedir_LM, ListadoMateriales.CantidadNecesaria_LM, Materiales.PlazoEntrega_Material, ListadoMateriales.Detalles_LM, ListadoMateriales.Proveedor_LM, ListadoMateriales.Descripcion_LM, ListadoMateriales.AnchoProducto_LM, ListadoMateriales.AltoProducto_LM, ListadoMateriales.EspesorProducto_LM, ListadoMateriales.LargoProducto_LM, ListadoMateriales.Recibido_LM, ListadoMateriales.Verificado_LM, ListadoMateriales.Estado_LM, ListadoMateriales.Color_LM, Materiales.Detalles_Material, ListadoMateriales.Tratamiento_LM, Materiales.UnidadVenta_Material, Materiales.UnidadesUnidadVenta_Material, Materiales.TipoMaterial_Material, Materiales.PerfilOAccesorio_Material, IIf(Int([CantidadAPedir_LM]/[UnidadVenta_material])=[CantidadAPedir_LM]/[UnidadVenta_material],Int([CantidadAPedir_LM]/[UnidadVenta_material]),Int([CantidadAPedir_LM]/[UnidadVenta_material])+1) AS UV_a_Pedir, ListadoMateriales.Estado_LM, ListadoMateriales.Etiquetado_LM, ListadoMateriales.DetallesParaPedido_LM, ListadoMateriales.Etiquetado_LM, Materiales.PerfilOAccesorio_Material, ListadoMateriales.EstadoTratamiento_LM, Materiales.PerimetroExterior_Material, Materiales.PerimetroInterior_Material, Materiales.CaraVista_Material, ListadoMateriales.PerimetroInterior_LM, ListadoMateriales.PerimetroExterior_LM, ListadoMateriales.CaraVista_LM, ListadoMateriales.UnidadesUnidadVenta_LM, ListadoMateriales.CantidadEnTaller_LM, ListadoMateriales.CantidadEnObra_LM, ListadoMateriales.CantidadPendiente_LM, ListadoMateriales.CantidadPreparada_LM, ListadoMateriales.CantidadDudosa_LM, ListadoMateriales.CantidadRechazada_LM, ListadoMateriales.CantidadRecibida_LM
FROM Materiales INNER JOIN ListadoMateriales ON Materiales.IdMaterial = ListadoMateriales.IdMaterial_LM
ORDER BY ListadoMateriales.IdObra_LM, ListadoMateriales.IdLinea_LM;

y esta es la vista en SQL Server:

Código:
SELECT     TOP (2147483647) WITH TIES dbo.ListadoMateriales.IdObra_LM, dbo.ListadoMateriales.IdLinea_LM, dbo.ListadoMateriales.IdPedido_LM, 
                      dbo.Materiales.IdMaterial, dbo.Materiales.Proveedor_Material, dbo.Materiales.ReferenciaProveedor_Material, dbo.Materiales.Descripcion_Material, 
                      dbo.Materiales.EnAlmacen_Material, dbo.ListadoMateriales.CantidadAPedir_LM, dbo.ListadoMateriales.CantidadNecesaria_LM, 
                      dbo.Materiales.PlazoEntrega_Material, dbo.ListadoMateriales.Detalles_LM, dbo.ListadoMateriales.Proveedor_LM, 
                      dbo.ListadoMateriales.Descripcion_LM, dbo.ListadoMateriales.AnchoProducto_LM, dbo.ListadoMateriales.AltoProducto_LM, 
                      dbo.ListadoMateriales.EspesorProducto_LM, dbo.ListadoMateriales.LargoProducto_LM, dbo.ListadoMateriales.Color_LM, 
                      dbo.Materiales.Detalles_Material, dbo.ListadoMateriales.Tratamiento_LM, dbo.Materiales.UnidadVenta_Material, 
                      dbo.Materiales.UnidadesUnidadVenta_Material, dbo.Materiales.TipoMaterial_Material, 
                      dbo.Materiales.PerfilOAccesorio_Material AS Materiales_PerfilOAccesorio_Material, (CASE WHEN floor([CantidadAPedir_LM] / [UnidadVenta_material]) 
                      = [CantidadAPedir_LM] / [UnidadVenta_material] THEN floor([CantidadAPedir_LM] / [UnidadVenta_material]) 
                      ELSE floor([CantidadAPedir_LM] / [UnidadVenta_material]) + 1 END) AS UV_a_Pedir, 
                      dbo.Materiales.PerfilOAccesorio_Material AS Materiales_PerfilOAccesorio_Material$8, dbo.ListadoMateriales.EstadoTratamiento_LM, 
                      dbo.Materiales.PerimetroExterior_Material, dbo.Materiales.PerimetroInterior_Material, dbo.Materiales.CaraVista_Material, 
                      dbo.ListadoMateriales.PerimetroInterior_LM, dbo.ListadoMateriales.PerimetroExterior_LM, dbo.ListadoMateriales.CaraVista_LM, 
                      dbo.ListadoMateriales.UnidadesUnidadVenta_LM, dbo.ListadoMateriales.CantidadEnTaller_LM, dbo.ListadoMateriales.CantidadEnObra_LM, 
                      dbo.ListadoMateriales.CantidadPendiente_LM, dbo.ListadoMateriales.CantidadPreparada_LM, dbo.ListadoMateriales.CantidadDudosa_LM, 
                      dbo.ListadoMateriales.CantidadRechazada_LM, dbo.ListadoMateriales.CantidadRecibida_LM, dbo.ListadoMateriales.Recibido_LM, 
                      dbo.ListadoMateriales.Verificado_LM, dbo.ListadoMateriales.Estado_LM, dbo.ListadoMateriales.DetallesParaPedido_LM, 
                      dbo.ListadoMateriales.Etiquetado_LM
FROM         dbo.Materiales INNER JOIN
                      dbo.ListadoMateriales ON dbo.Materiales.IdMaterial = dbo.ListadoMateriales.IdMaterial_LM
ORDER BY dbo.ListadoMateriales.IdObra_LM, dbo.ListadoMateriales.IdLinea_LM