La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5926 - PROBLEMA IMPRIMIR DIRECTAMENTE A LPT!
Autor:  Jordi Adell
Hola! Quiero imprimir etiquetas desde VB 6.0, para ello no quiero usar el objeto PRINTER. Los datos que quiero imprimir los recupero de un recordset.

Imprimo directamente a LPT1: con

DIM Nombre AS String
WITH datos.recordset
Nom = "NOMBRE : " & .fields("Nombre").value
OPEN "LPT1:" FOR OUTPUT AS #1
PRINT #1, Nom
CLOSE #1

Este proceso me falla, al llegar a CLOSE #1, se "cuelga" el programa. He probado con:

Nom = CStr("NOMBRE : " & .fields("Nombre").value)
Nom = "NOMBRE : " + .fields("Nombre").value

Y el resultado es igual, pero si asigno:

Nom = .fields("Nombre").value

funciona perfectamente.
Alguien tiene idea de porqué.
Gracias y un saludo a todos.

  Respuesta:  Gerald Valdes
Tengo dos respuestas con las que podrias probar, una es bien simple y quizas funcione, en vez de utilizar en comando "with" para ahorrarte espacio en la linea:

Nom = "NOMBRE : " & .fields("Nombre").value

dale sin "with" el comando completo, total es una sola linea en la que utilizas el "with" y no es tanto el espacio que ahorras, hay veces que ese comando marea el programa, por ejemplo cuando es un "with" anidado, la linea quedaria asi:

Nom = "NOMBRE : " & datos.recordset.fields("Nombre").value

lo otro que puedes hacer es en vez de dar un open como "LPT:", haz un open a un archivo normal, como por ejemplo open "c:\imp.-_-" for output as #1 asegurandote que que el archivo que creas no sea ninguno ya existente (por eso la extension "-_-") y cuando termines de guardarle los datos y hagas el close lo imprimes utilizando un shell, quedaria algo asi...

DIM Nombre AS String

*(saca esta linea, no te la recomiendo para un solo comando)
*WITH datos.recordset

Nom = "NOMBRE : " & datos.recordset.fields("Nombre").value
OPEN "c:\impri.-_-" FOR OUTPUT AS #1
PRINT #1, Nom
CLOSE #1

shell "type c:\impri.-_- > lpt1"

espero que te sirva, chaop

nota: si no funciona con lpt1, prueba con prn