Criterio en Vista de SQL

02/11/2005 - 17:11 por Nacho | Informe spam
Tengo una vista en SQL Server que ordeno por un campo. Al ordenar en el
codigo me añade una primera linea que dice: TOP 100 PERCENT
Cuando vinculo esa vista en access, me la presenta bien, pero si actualizo
algun campo me da un error:
The view or function 'dbo.Clientes' is not updatable because the definition
contains the TOP clause (#4427)
Alguien me puede decir como solucionar esto?. Estamos todos sin poder
trabajar.
Muchas gracias

Nacho

Preguntas similare

Leer las respuestas

#6 Nacho
02/11/2005 - 19:26 | Informe spam
Maxi: pero esto lo pongo donde la programacion de SQL? Y por que el SQL lo
hace mal? Cual es la diferencia?

Gracias,

Nacho

"Maxi" escribió en el mensaje
news:%
Hola, esto:

Select campos from tuvista order by tucampo


Salu2
Maxi [MVP SQL SERVER]


"Nacho" escribió en el mensaje
news:
Gracias Alejandro. Solo una cosa: Que quieres decir con: se debe usar la
clausula "order by" en la sentencia "select" que sellecciona desde la
vista?
Yo no entiendo mucho de programacion. Te agradeceria que me lo
explicaras.

Gracias,

Nacho

"Alejandro Mesa" escribió en el
mensaje news:
Nacho,

Quita "top 100" y tambien quita la clausula "order by ...". No tiene
ningun
sentido usar la clausula "order by" en una vista, si se quiere ordernar
el
resultado de ella, se debe usar la clausula "order by" en la sentencia
"select" que sellecciona desde la vista.

select top 100 <-- quita top 100
...
order by c1, c2, ..., cn <- quita esta fila

Tambien asegurate que la tabla usada por la vista tenga clave primaria y
que
esta es part las columnas que son parte de la lista de la sentencia
"select".


AMB

"Nacho" wrote:

Lo he quitado y me da un error diciendome que si utilizo el
ordenamiento
(ascendente o descendente en un campo) necesito tener esa funcion de
TOP 100
PERCENT

Gracias Maxi,

Nacho
"Maxi" escribió en el mensaje
news:
> Hola, saca el top100
>
>
> Salu2
> Maxi [MVP SQL SERVER]
>
>
> "Nacho" escribió en el mensaje
> news:
>> Tengo una vista en SQL Server que ordeno por un campo. Al ordenar en
>> el
>> codigo me añade una primera linea que dice: TOP 100 PERCENT
>> Cuando vinculo esa vista en access, me la presenta bien, pero si
>> actualizo algun campo me da un error:
>> The view or function 'dbo.Clientes' is not updatable because the
>> definition contains the TOP clause (#4427)
>> Alguien me puede decir como solucionar esto?. Estamos todos sin
>> poder
>> trabajar.
>> Muchas gracias
>>
>> Nacho
>>
>
>













Respuesta Responder a este mensaje
#7 Alejandro Mesa
02/11/2005 - 19:31 | Informe spam
Nacho,

Exactamente como indico Maxi (Gracias por la asistencia). SQL Server no
garantiza que el resultado de una consulta este ordenado si no se usa la
clausula "order by" en la sentencia "select" que selecciona la data.

En vez de hacer:

create view v1
as
select top 100 c1, c2, ..., cn
from mi_tabla
order by c1
go

select * from v1
go

se debe hacer:

create vista v1
as
select c1, c2, ..., cn
from mi_tabla
go

select *
from v1
order by c1
go


AMB

"Maxi" wrote:

Hola, esto:

Select campos from tuvista order by tucampo


Salu2
Maxi [MVP SQL SERVER]


"Nacho" escribió en el mensaje
news:
> Gracias Alejandro. Solo una cosa: Que quieres decir con: se debe usar la
> clausula "order by" en la sentencia "select" que sellecciona desde la
> vista?
> Yo no entiendo mucho de programacion. Te agradeceria que me lo explicaras.
>
> Gracias,
>
> Nacho
>
> "Alejandro Mesa" escribió en el
> mensaje news:
>> Nacho,
>>
>> Quita "top 100" y tambien quita la clausula "order by ...". No tiene
>> ningun
>> sentido usar la clausula "order by" en una vista, si se quiere ordernar
>> el
>> resultado de ella, se debe usar la clausula "order by" en la sentencia
>> "select" que sellecciona desde la vista.
>>
>> select top 100 <-- quita top 100
>> ...
>> order by c1, c2, ..., cn <- quita esta fila
>>
>> Tambien asegurate que la tabla usada por la vista tenga clave primaria y
>> que
>> esta es part las columnas que son parte de la lista de la sentencia
>> "select".
>>
>>
>> AMB
>>
>> "Nacho" wrote:
>>
>>> Lo he quitado y me da un error diciendome que si utilizo el ordenamiento
>>> (ascendente o descendente en un campo) necesito tener esa funcion de TOP
>>> 100
>>> PERCENT
>>>
>>> Gracias Maxi,
>>>
>>> Nacho
>>> "Maxi" escribió en el mensaje
>>> news:
>>> > Hola, saca el top100
>>> >
>>> >
>>> > Salu2
>>> > Maxi [MVP SQL SERVER]
>>> >
>>> >
>>> > "Nacho" escribió en el mensaje
>>> > news:
>>> >> Tengo una vista en SQL Server que ordeno por un campo. Al ordenar en
>>> >> el
>>> >> codigo me añade una primera linea que dice: TOP 100 PERCENT
>>> >> Cuando vinculo esa vista en access, me la presenta bien, pero si
>>> >> actualizo algun campo me da un error:
>>> >> The view or function 'dbo.Clientes' is not updatable because the
>>> >> definition contains the TOP clause (#4427)
>>> >> Alguien me puede decir como solucionar esto?. Estamos todos sin poder
>>> >> trabajar.
>>> >> Muchas gracias
>>> >>
>>> >> Nacho
>>> >>
>>> >
>>> >
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#8 Nacho
02/11/2005 - 19:33 | Informe spam
Gracias a los dos.

Nacho

"Alejandro Mesa" escribió en el
mensaje news:
Nacho,

Exactamente como indico Maxi (Gracias por la asistencia). SQL Server no
garantiza que el resultado de una consulta este ordenado si no se usa la
clausula "order by" en la sentencia "select" que selecciona la data.

En vez de hacer:

create view v1
as
select top 100 c1, c2, ..., cn
from mi_tabla
order by c1
go

select * from v1
go

se debe hacer:

create vista v1
as
select c1, c2, ..., cn
from mi_tabla
go

select *
from v1
order by c1
go


AMB

"Maxi" wrote:

Hola, esto:

Select campos from tuvista order by tucampo


Salu2
Maxi [MVP SQL SERVER]


"Nacho" escribió en el mensaje
news:
> Gracias Alejandro. Solo una cosa: Que quieres decir con: se debe usar
> la
> clausula "order by" en la sentencia "select" que sellecciona desde la
> vista?
> Yo no entiendo mucho de programacion. Te agradeceria que me lo
> explicaras.
>
> Gracias,
>
> Nacho
>
> "Alejandro Mesa" escribió en
> el
> mensaje news:
>> Nacho,
>>
>> Quita "top 100" y tambien quita la clausula "order by ...". No tiene
>> ningun
>> sentido usar la clausula "order by" en una vista, si se quiere
>> ordernar
>> el
>> resultado de ella, se debe usar la clausula "order by" en la sentencia
>> "select" que sellecciona desde la vista.
>>
>> select top 100 <-- quita top 100
>> ...
>> order by c1, c2, ..., cn <- quita esta fila
>>
>> Tambien asegurate que la tabla usada por la vista tenga clave primaria
>> y
>> que
>> esta es part las columnas que son parte de la lista de la sentencia
>> "select".
>>
>>
>> AMB
>>
>> "Nacho" wrote:
>>
>>> Lo he quitado y me da un error diciendome que si utilizo el
>>> ordenamiento
>>> (ascendente o descendente en un campo) necesito tener esa funcion de
>>> TOP
>>> 100
>>> PERCENT
>>>
>>> Gracias Maxi,
>>>
>>> Nacho
>>> "Maxi" escribió en el mensaje
>>> news:
>>> > Hola, saca el top100
>>> >
>>> >
>>> > Salu2
>>> > Maxi [MVP SQL SERVER]
>>> >
>>> >
>>> > "Nacho" escribió en el mensaje
>>> > news:
>>> >> Tengo una vista en SQL Server que ordeno por un campo. Al ordenar
>>> >> en
>>> >> el
>>> >> codigo me añade una primera linea que dice: TOP 100 PERCENT
>>> >> Cuando vinculo esa vista en access, me la presenta bien, pero si
>>> >> actualizo algun campo me da un error:
>>> >> The view or function 'dbo.Clientes' is not updatable because the
>>> >> definition contains the TOP clause (#4427)
>>> >> Alguien me puede decir como solucionar esto?. Estamos todos sin
>>> >> poder
>>> >> trabajar.
>>> >> Muchas gracias
>>> >>
>>> >> Nacho
>>> >>
>>> >
>>> >
>>>
>>>
>>>
>
>



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