update view SQL 2000 to 2005

05/12/2007 - 00:20 por Miguel A. | Informe spam
Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo de
solucionarlo?
Gracias.

Preguntas similare

Leer las respuestas

#11 Miguel A.
07/12/2007 - 21:00 | Informe spam
Gracias, echare un vistazo alos procedimeintos, a ver si puedo hacer uno
;-)

"Alejandro Mesa" escribió en el
mensaje news:
Miguel A.,

1 - Que sentencia usas para mostrar el contenido de la vista?

Me inmagino que usas "select * from mi_vista", correcto?. Pues usa:

select c1, c2, ..., cn
from mi_vista
order by ...

2 - Tambien puedes sortear en la aplicacion cliente.
3 - Puedes usar un procedimiento almacenado, como bien sugirio Maxi.


AMB


"Miguel A." wrote:

Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3
.
Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en el
mensaje news:
> Miguel,
>
> Creo que no me he explicado bien. No tiene sentido alguno usar la
> clausula
> "ORDER BY" en la definicion de una vista, debes usarla en la sentencia
> que
> referencia a la vista.
>
> create view mi_vista
> as
> SELECT c1, c2, .., cn
> FROM dbo.Table
> WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))
> GO
>
> select c1, c2, ..., cn
> from mi_vista
> order by CodigoPostal
>
>
> AMB
>
> "Miguel A." wrote:
>
>> Una pregunta, debo entonces realizar dos vistas?, una que me haga
>>
>> SELECT TOP 100 PERCENT *
>> FROM dbo.Table
>> WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))
>>
>> y otra
>>
>> SELECT * FROM VISTA
>> ORDER BY CodigoPostal
>>
>> no sepuede hacer todo en la misma vista?.
>>
>> Yo tengo instalado el cumulative 4 del SQL 2005 y en las opciones
>> tengo
>> Compatibility level - SQL Server 2000 (80), se supone que deberia
>> funcionar
>> no?
>>
>>
>>
>> "Miguel A." escribió en el mensaje
>> news:e0XHu0$
>> > Graicas a los dos.
>> >
>> > Tengo esta sentencia en la vista:
>> >
>> >
>> > USE [DB]
>> >
>> > GO
>> >
>> > SET ANSI_NULLS ON
>> >
>> > GO
>> >
>> > SET QUOTED_IDENTIFIER ON
>> >
>> > GO
>> >
>> > ALTER VIEW [dbo].[View1]
>> >
>> > AS
>> >
>> > SELECT TOP 100 PERCENT *
>> >
>> > FROM dbo.Table
>> >
>> > WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))
>> >
>> > ORDER BY CodigoPostal
>> >
>> >
>> >
>> > Todos los filtros lo hace bien, excepto el OrderBy.
>> >
>> > Debo de crear todas las vistas?, son mas de 50 vistas que
>> > actualamente
>> > deberia modificar.
>> >
>> >
>> >
>> > Gracias compañeros.
>> >
>> >
>> > "Alejandro Mesa" escribió
>> > en
>> > el
>> > mensaje news:
>> >> Hola Miguel,
>> >>
>> >> Estoy de acuerdo con Maxi en que has dado muy poca informacion,
>> >> pero
>> >> creo
>> >> saber cual es tu problema. La unica forma de garantizar un
>> >> resultado
>> >> ordenado, es usando la clausula ORDER BY en la sentencia que genera
>> >> el
>> >> resultado. Fijate que resalto que la clausula debe estar en la
>> >> sentencia
>> >> que
>> >> genera el resultado. Lo que pasa en tu caso, es que usas ORDER BY
>> >> en
>> >> la
>> >> definicion de la vista y luego no lo usas en la sentencia SELECT
>> >> que
>> >> referencia a la vista:
>> >>
>> >> create view vw_mi_vista
>> >> as
>> >> select top 100 percent c1, c2, c3
>> >> from mi_tabla
>> >> order by c1
>> >> go
>> >>
>> >> select * from vw_mi_vista
>> >> go
>> >>
>> >> Lo anterior no funciona en SQL Server. Ya se que esto funcionava en
>> >> la
>> >> version 2000, pero esto no esta documentado en los libros en linea.
>> >> SS
>> >> 2005
>> >> no respeta lo anterior y muchas aplicaciones se han visto afectada
>> >> por
>> >> esto.
>> >> Microsoft saco un parche para hacer que lo anterior funcione en SS
>> >> 2005,
>> >> pero
>> >> te aconsejo que lo hagas de la forma correcta:
>> >>
>> >> create view vw_mi_vista
>> >> as
>> >> select c1, c2, c3
>> >> from mi_tabla
>> >> go
>> >>
>> >> select * from vw_mi_vista
>> >> order by c1
>> >> go
>> >>
>> >> FIX: When you query through a view that uses the ORDER BY clause in
>> >> SQL
>> >> Server 2005, the result is still returned in random order
>> >> http://support.microsoft.com/defaul...s&spid(55
>> >>
>> >>
>> >> AMB
>> >>
>> >> "Miguel A." wrote:
>> >>
>> >>> Buenas noches,
>> >>>
>> >>> he restaurado una DB de SQL 2000 en 2005, y no funciona
>> >>> correctamente.
>> >>> Al final de la query tengo un order by CP y me ignora en
>> >>> 2005.Como
>> >>> debo
>> >>> de
>> >>> solucionarlo?
>> >>> Gracias.
>> >>>
>> >>>
>> >>>
>> >
>> >
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida