Hola danosmpar:
Me parece muy raro que tengas un error con el LIMIT, igual y deberías comentar en el foro del VB qué error es el que estás obteniendo, de esta manera podríamos revisar qué está pasando. En cuanto a otra forma para obtener esto, una sería "simulando" justamente por código la función LIMIT... hay varias formas, la más "simple" sería como se hace más o menos en ORACLE 11i, que sería con ROWNUM...
Checa este ejemplo, supongamos que tienes esta tabla:
Código MySQL:
Ver originalmysql
> SELECT nombre
, apellido
+--------+----------+
| nombre | apellido |
+--------+----------+
| Uno | One |
| Dos | Two |
| Tres | Three |
| Cuatro | Four |
| Cinco | Five |
| Seis | Six |
| Siete | Seven |
| Ocho | Eigth |
+--------+----------+
ahora, supongamos que quieres paginar de 2 en 2, y mostrar la tercer página, es decir, los registros 5 y 6, con LIMIT lo harías así:
Código MySQL:
Ver originalmysql
> SELECT nombre
, apellido
+--------+----------+
| nombre | apellido |
+--------+----------+
| Cinco | Five |
| Seis | Six |
+--------+----------+
Sin usar LIMIT, lo primero que tendrías que hacer es numerar tus registros, una forma sería así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
mysql
> SELECT @a
:=@a
+1 rownum
, nombre
, apellido
+--------+--------+----------+
| rownum | nombre | apellido |
+--------+--------+----------+
| 1 | Uno | One |
| 2 | Dos | Two |
| 3 | Tres | Three |
| 4 | Cuatro | Four |
| 5 | Cinco | Five |
| 6 | Seis | Six |
| 7 | Siete | Seven |
| 8 | Ocho | Eigth |
+--------+--------+----------+
y entonces puedes filtrar por el campo ROWNUM, de tal suerte que sin LIMIT, la consulta quedaría así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
-> ( SELECT @a
:=@a
+1 rownum
, nombre
, apellido
+--------+--------+----------+
| rownum | nombre | apellido |
+--------+--------+----------+
| 5 | Cinco | Five |
| 6 | Seis | Six |
+--------+--------+----------+
Si sólo quiere utilizar LIMIT con un parámetro, y mostrar por ejemplo 5 registros, como LIMIT lo harías así:
Código MySQL:
Ver originalmysql
> SELECT nombre
, apellido
+--------+----------+
| nombre | apellido |
+--------+----------+
| Uno | One |
| Dos | Two |
| Tres | Three |
| Cuatro | Four |
| Cinco | Five |
+--------+----------+
Con esta otra "técnica", lo tendrías que hacer así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
-> ( SELECT @a
:=@a
+1 rownum
, nombre
, apellido
+--------+--------+----------+
| rownum | nombre | apellido |
+--------+--------+----------+
| 1 | Uno | One |
| 2 | Dos | Two |
| 3 | Tres | Three |
| 4 | Cuatro | Four |
| 5 | Cinco | Five |
+--------+--------+----------+
Esto es bastante inneficiente, y no es para nada recomendable, pero bueno, si no tienes otra opción, esta sería una forma para hacerlo.
Saludos
Leo.