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.
 

Leer las respuestas

#1 DJ MIAO
10/11/2004 - 23:03 | Informe spam
Preguntas cortas por favor. Para novelas la tele.


Miao...
Comprate un libro.
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â?T 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â?T
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â?T
and CODIGO >â?T10021â?T order by MARCA, CODIGO LIMIT 1,


suponiendo que en la fila
11 està¡ el articulo con codigo â?~10021â?T 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 similares