Mi problema es que quiero imprimir con Printer una imagen que esta en mi base de datos y no lo he logrado con el loadpicture, de que otra forma lo podría hacer.
1 Respuesta
Respuesta de denciso
1
1
denciso, Soy una persona multifacética, tanto manejo la informática,...
Y si estas viendo la imagen en el control que tienes en tu forma...
Mi base de datos esta en mysql
No veo la imagen, por que solo lo mando a la impresora, tengo que mandar esto desde una dll... Por ahora estoy probando fuera de la dll.. pero me marca un error, este es mi código: ---------------------------------------- Dim indice, texto Dim rsmulti As ADODB.Recordset, cmdmulti As ADODB.Command 'consulta a la tabla multimedia Dim Imagen1 As Image Dim Stream As ADODB.Stream Set cnn = New ADODB.Connection Set cmdmulti = New ADODB.Command ' Nuevo objeto Stream para poder leer el campo de imagen Set Stream = New ADODB.Stream conexion 'If cnn.State = 1 Then cnn.Close cnn.Open For indice = 0 To Printers.Count - 1 Set Printer = Printers(indice) 'Nombre del dispositivo. texto = Printer.DeviceName If texto = "taquilla" Then 'Orden de imprimir dentro del if. With Printer .ScaleWidth = 7400 ' Especifica el tipo de datos ( binario ) Stream.Type = adTypeBinary Stream.Open With cmdmulti Set .ActiveConnection = cnn .CommandText = "select * from multimedia_taquilla where cla_multi='3'" ' and descripcion_multi='boleto' and posicion_multi='TODOS'" .CommandType = adCmdText Set rsmulti = .Execute() End With Stream.Write rsmulti.Fields("rsmulti!archivo_multi").Value ' este método graba un archivo temporal en disco _ ( en el app.path que luego se elimina ) Stream.SaveToFile App.Path & "\temp", adSaveCreateOverWrite .PaintPicture LoadPicture(App.Path & "\temp"), 100, 100, 5000, 2500 .ScaleHeight = 17100 .EndDoc End With End If Next ------------------------------------- Gracias
Y cual es el nombre del archivo en forma temporal, se me hace que eso es lo que falta y tampoco me dijiste que error te manda... Este tipo de código es similar a uno que tengo implementando y funciona de forma correcta...
El error es "Error 3265.. No se encontró el elemento en la colección..." ¿En dónde se supone que le estoy indicando el archivo en forma temporal? Gracias, por responder... en realidad debo sacar esto hoy :S
Aquí debes de indicar el nombre: Este método graba un archivo temporal en disco _ ( en el app. Path que luego se elimina ) Stream.SaveToFile App.Path & "\temp", adSaveCreateOverWrite .PaintPicture LoadPicture(App.Path & "\temp"), 100, 100, 5000, 2500 .ScaleHeight = 17100 .EndDoc End With Apurate porque estoy a unos minutos de irme de mi trabajo a descansar y hasta mañana me pongo en contacto...
O sea le pongo c:/mis documentos...¿? En lugar de App.path
¿Perdón en donde dice "\temp" ese lo cambio?
Me marca error aquí: Stream.Write rsmulti.Fields("rsmulti!archivo_multi").Value El error es el que le digo---
Gracias por su ayuda. Ahora tengo otro problema.. quiero imprimir un código de barras de forma vertical. Lo debo hacer con printer, alguna sugerencia, supongamos que ya tengo la fuente.. como le puedo hacer. Saludos.
Pues solamente que inviertas las posiciones, no lo he hecho pero porque no ves las aplicaciones que tienes disponibles en:
Gracias, se me olvido que le había preguntado, lo resolví moviendo un opción en las propiedades de la impresora, pero muchas gracias por su ayuda ;-)