Solución a Error en el servidor: sql: no rows in result set en plugin de impresora térmica

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.

sql: no rows in result set

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.

Solución correcta

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.

Solución simple

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.

En resumen

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.