En este post te mostraré cómo arreglar el error de mi plugin de impresión que dice: Error en el servidor: sql: no rows in result set.
Este error dice que no hay filas en la base de datos, y tal vez te estarás preguntando qué tiene que ver la impresión con una base de datos, por lo que justamente eso será lo que trataré en este post.
En las primeras versiones del plugin, existía la opción setImpresora
que era para establecer la impresora en la que se imprimirían los tickets. Una vez establecida, ese nombre de impresora se quedaba guardado en una base de datos SQLite3.
Este error se ocasiona porque no hay datos en la base de datos porque no has invocado a setImpresora
, entonces cuando intentas imprimir te da ese error porque no hay datos en la base de datos (no hay rows, o sea filas, en la base de datos).
Más adelante implementé la función imprimirEnImpresora
que permite que tú indiques cuál impresora usar al imprimir, enviándole el nombre de la impresora como cadena.
Yo siempre he recomendado usar el método imprimirEnImpresora
en lugar del método end
para terminar la impresión, de este modo tú te encargas de guardar el nombre de la impresora y pasarlo al plugin al imprimir.
Entonces para solucionar este problema, no hagas esto, esto es incorrecto:
let impresora = new Impresora(RUTA_API);
impresora.setFontSize(1, 1);
impresora.write("Fuente 1,1\n");
impresora.setFontSize(1, 2);
impresora.write("Fuente 1,2\n");
impresora.setFontSize(2, 2);
impresora.write("Fuente 2,2\n");
impresora.setFontSize(2, 1);
impresora.write("Fuente 2,1\n");
impresora.setFontSize(1, 1);
impresora.setEmphasize(1);
impresora.write("Emphasize 1\n");
impresora.setEmphasize(0);
impresora.write("Emphasize 0\n");
impresora.setAlign("center");
impresora.write("Centrado\n");
impresora.setAlign("left");
impresora.write("Izquierda\n");
impresora.setAlign("right");
impresora.write("Derecha\n");
impresora.setFont("A");
impresora.write("Fuente A\n");
impresora.setFont("B");
impresora.write("Fuente B\n");
impresora.feed(2);
impresora.write("Separado por 2\n");
impresora.cut();
impresora.cutPartial(); // Pongo este y también cut porque en ocasiones no funciona con cut, solo con cutPartial
impresora.end()
.then(valor => {
loguear("Al imprimir: " + valor);
});
Haz lo siguiente, eso sí es correcto:
let impresora = new Impresora(RUTA_API);
impresora.setFontSize(1, 1);
impresora.write(`Tratando de imprimir en ${nombreImpresora}
`);
impresora.write(mensaje);
impresora.cut();
impresora.cutPartial(); // Pongo este y también cut porque en ocasiones no funciona con cut, solo con cutPartial
impresora.imprimirEnImpresora(nombreImpresora)
.then(valor => {
loguear("Al imprimir: " + valor);
});
La diferencia es que estoy invocando a imprimirEnImpresora
pasando el nombre de la impresora, y no simplemente al método end
.
Otra solución es simplemente invocar a setImpresora
. La mayoría de ocasiones este problema ocurre porque el cliente usa el plugin gratuito e invoca a setImpresora
correctamente; le funciona y compra la versión premium, pero al usar la versión premium se le olvida invocar a setImpresora
, por lo que aparece el error sql: no rows in result set.
Puedes hacer dos cosas: volver a invocar al método setImpresora
con el nombre de tu impresora, o comenzar a usar el método imprimirEnImpresora
en lugar del método end
.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.