Problema de metodologia

10/11/2004 - 21:22 por AOG | Informe spam
Hola, tengo un problema que no se me ocurre nada para solucionarlo y es el
siguiente:
Tengo una tabla de artículos con la estructura siguiente:
Código, Descripción, Marca, PVP….
La clave es Código
Índices Descripción y Marca
Tengo que hacer un sistema de presentación en una reja de todos los
artículos en la reja, la presentación se hará ordenado por varias formas:
La primera forma y lo más común es ordenado por código, luego el usuario
puede ordenar por descripción o Marca según le convenga.
La forma de mostrar los artículos (registros) será de la siguiente manera:
En la reja en un principio se mostrara los 11 primeros registros que son las
filas que se ven en la reja, es decir, la reja siempre va ha contener 11
filas y siempre visibles, se mostraran en el orden por el campo que ha
elegido el usuario. ¿Por qué solo 11 registro? solo mostrare 11 registros
porque la tabla va ha contener varios miles de registros, y cargar la reja
con todos sería una locura.
Cuando el usuario se desplace con la fecha del cursor hacia abajo en la reja
se ira seleccionando la fila de la reja hasta llegar a la 11 cuando intenta
sobre pasar la 11 yo le muestro el siguiente registro de la tabla, quito la
1º fila de la reja inserto una fila al final y muestro el siguiente registro,
es decir, cojo el valor de la columna código de la ultima fila que es
(000011) y hago una consulta (Select Codigo, Descripción, Marca, PVP from
articulos where Codigo > ‘000011’ LIMIT 1 (es para MySQL) ), así obtengo un
registro (000012) que es el siguiente registro que corresponde al código
000011 porque se ha mostrado en la reja ordenado por código y esto funciona
correctamente el usuario se va desplazando hacia abajo y el efecto va bien,
el usuario ve que la primera fila desaparece y aparece el la ultima el nuevo
registro.
El problema está cuando el usuario quiere ver ordenado por marca por
ejemplo, por código no hay problema porque es único y la SQL anterior vale,
cuando se quiere ver ordenado por marca (LG, PHILIS, SONY) ya no vale la SQL
anterior porque hay articulos que se repiten con la misma marca ejemplo:
LG, 00002, TV 21
LG, 00102, TV 24
LG, 10021, FRIGORIFICO
PHILIS, 00001, DVD F1
PHILIS, 00011, DVD F23
PHILIS, 00101, TV K21
PHILIS, 00221, TV K24
SONY, 00001, LECTOR CD
SONY, 10001, PANTALLA FR45
SONY, 00002, PANTALLA F55
Como os muestro están ordenados primero por la marca y luego por código. Ha
usar esta SQL:
Select Codigo, Descripción, Marca, PVP from articulos where MARCA > ‘LG’
order by MARCA, CODIGO LIMIT 1
El siguiente registro es PHILIS no LG (se supone que hay mas de 11 articulos
de la marca LG de hecho puede haber cientos)
Esta SQL tampoco vale
Select Codigo, Descripción, Marca, PVP from articulos where MARCA >= ‘LG’
and CODIGO >’10021’ order by MARCA, CODIGO LIMIT 1, suponiendo que en la fila
11 está el articulo con codigo ‘10021’ de la marca LG
Aunque muestre algunos registro seguido de la misma marca pero hay saltos de
registro porque coge el orden del campo codigo

Que puedo hace ya que el usuario necesita ver los registro de la forma que
os he mostrado anteriormente.
Tengo una aplicación que estaba hecha en VB5 y con MDB de access, esto lo
hacia con recordset de tipo Table y utilizando índices y los marcadores iba
estupendamente en el caso de ordenar por marca utilizo un índice por marca,
codigo iba moviendo hacia delante (rsArt.MoveNext) y todo biem, pero como
aquí no se puede tener recordset sino dataset y rellenar un dataset con los
miles registro sería una operación no aceptable.
Que me aconsejáis.

Un saludo
AOG.

Preguntas similare

Leer las respuestas

#1 SqlRanger
16/11/2004 - 11:35 | Informe spam
Tanto en el order by como en la where deberías incluir siempre el código
además del campo por el que estás ordenando.
Por ejemplo si estás ordenando por marca la select sería

select ...
from ..
where Marca >= ÚltimaMarca AND Código > ÚltimoCódigo
Order By Marca, Código


"AOG" escribió en el mensaje
news:
Hola, tengo un problema que no se me ocurre nada para solucionarlo y es el
siguiente:
Tengo una tabla de artículos con la estructura siguiente:
Código, Descripción, Marca, PVP..
La clave es Código
Índices Descripción y Marca
Tengo que hacer un sistema de presentación en una reja de todos los
artículos en la reja, la presentación se hará ordenado por varias formas:
La primera forma y lo más común es ordenado por código, luego el usuario
puede ordenar por descripción o Marca según le convenga.
La forma de mostrar los artículos (registros) será de la siguiente manera:
En la reja en un principio se mostrara los 11 primeros registros que son


las
filas que se ven en la reja, es decir, la reja siempre va ha contener 11
filas y siempre visibles, se mostraran en el orden por el campo que ha
elegido el usuario. ¿Por qué solo 11 registro? solo mostrare 11 registros
porque la tabla va ha contener varios miles de registros, y cargar la reja
con todos sería una locura.
Cuando el usuario se desplace con la fecha del cursor hacia abajo en la


reja
se ira seleccionando la fila de la reja hasta llegar a la 11 cuando


intenta
sobre pasar la 11 yo le muestro el siguiente registro de la tabla, quito


la
1º fila de la reja inserto una fila al final y muestro el siguiente


registro,
es decir, cojo el valor de la columna código de la ultima fila que es
(000011) y hago una consulta (Select Codigo, Descripción, Marca, PVP from
articulos where Codigo > '000011' LIMIT 1 (es para MySQL) ), así obtengo


un
registro (000012) que es el siguiente registro que corresponde al código
000011 porque se ha mostrado en la reja ordenado por código y esto


funciona
correctamente el usuario se va desplazando hacia abajo y el efecto va


bien,
el usuario ve que la primera fila desaparece y aparece el la ultima el


nuevo
registro.
El problema está cuando el usuario quiere ver ordenado por marca por
ejemplo, por código no hay problema porque es único y la SQL anterior


vale,
cuando se quiere ver ordenado por marca (LG, PHILIS, SONY) ya no vale la


SQL
anterior porque hay articulos que se repiten con la misma marca ejemplo:
LG, 00002, TV 21
LG, 00102, TV 24
LG, 10021, FRIGORIFICO
PHILIS, 00001, DVD F1
PHILIS, 00011, DVD F23
PHILIS, 00101, TV K21
PHILIS, 00221, TV K24
SONY, 00001, LECTOR CD
SONY, 10001, PANTALLA FR45
SONY, 00002, PANTALLA F55
Como os muestro están ordenados primero por la marca y luego por código.


Ha
usar esta SQL:
Select Codigo, Descripción, Marca, PVP from articulos where MARCA > 'LG'
order by MARCA, CODIGO LIMIT 1
El siguiente registro es PHILIS no LG (se supone que hay mas de 11


articulos
de la marca LG de hecho puede haber cientos)
Esta SQL tampoco vale
Select Codigo, Descripción, Marca, PVP from articulos where MARCA >= 'LG'
and CODIGO >'10021' order by MARCA, CODIGO LIMIT 1, suponiendo que en la


fila
11 está el articulo con codigo '10021' de la marca LG
Aunque muestre algunos registro seguido de la misma marca pero hay saltos


de
registro porque coge el orden del campo codigo

Que puedo hace ya que el usuario necesita ver los registro de la forma que
os he mostrado anteriormente.
Tengo una aplicación que estaba hecha en VB5 y con MDB de access, esto lo
hacia con recordset de tipo Table y utilizando índices y los marcadores


iba
estupendamente en el caso de ordenar por marca utilizo un índice por


marca,
codigo iba moviendo hacia delante (rsArt.MoveNext) y todo biem, pero como
aquí no se puede tener recordset sino dataset y rellenar un dataset con


los
miles registro sería una operación no aceptable.
Que me aconsejáis.

Un saludo
AOG.

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