Autor Tema: Impresión y Programa Doble  (Leído 5393 veces)

0 Usuarios y 1 Visitante están viendo este tema.

wolf_kof

  • Visitante
Impresión y Programa Doble
« en: Marzo 16, 2010, 01:25:37 pm »
Hola nuevamente me veo en la necesidad de pedirle ayuda a los expertos de leandroascierto  8) tengo la necesidad de colocar el software compartido, la necesidad es que necesito imprimir un reported dos veces desde un mismo lugar a diferentes impresoras, pero en realidad ya me canse de utilizar el datareport y quisiera saber que arian ustedes como lo harian por que ami ya se me agotaron las ideas  :-\
« última modificación: Marzo 27, 2010, 10:43:12 pm por LeandroA »

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Impresión y Programa Doble
« Respuesta #1 en: Marzo 16, 2010, 01:30:19 pm »
Crystal Report, 8.5.. Como estas mi pana?
« última modificación: Marzo 27, 2010, 10:43:32 pm por LeandroA »
Miguel Núñez.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Impresión y Programa Doble
« Respuesta #2 en: Marzo 16, 2010, 02:58:46 pm »
Hola nuevamente me veo en la necesidad de pedirle ayuda a los expertos de leandroascierto  8) tengo la necesidad de colocar el software compartido, la necesidad es que necesito imprimir un reported dos veces desde un mismo lugar a diferentes impresoras, pero en realidad ya me canse de utilizar el datareport y quisiera saber que arian ustedes como lo harian por que ami ya se me agotaron las ideas  :-\

Bueno yo también recomendaría Crystal Report, pero lo que tu preguntas si se puede resolver con el bien querido y nada ponderado DataReport
Imprimir un reporte dos veces es bastante sencillo:
MiReport.Printreport
MiReport.Printreport

Si fuera necesario, en el medio puedes poner un Msbgox("Verifique que el segundo papel este colocado")

Ahora, hacerlo a dos impresoras también se puede hacer... 3, 4, n, impresoras.

Asi lo haría.
Primero que nada esto es un modulo:
Código: (VB) [Seleccionar]
'------------ PARA LA SELECCION DE IMPRESORAS -----------------
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lparam As String) As Long            '
Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
'----------------------------------------------------------------

Luego en tu boton de imprimr:

Código: (VB) [Seleccionar]

On Error GoTo ControlErrores
Mensaje = "Desea Imprimir?"
Estilo = vbYesNo + vbQuestion + vbDefaultButton2
Titulo = "PREGUNTA"
Respuesta = MsgBox(Mensaje2, Estilo2, Título2)

If Respuesta = vbYes Then
       memImpresoraPredeterminada = Printer.DeviceName

      r = WriteProfileString("windows", "Device", "Impresora1," + Printer.DriverName + "," + Printer.Port)
      MiReporte.PrintReport

'SI QUIERES AQUI PONES UNA ADVERTENCIA O AVISO DE QUE LA SEGUNDA IMPRESORA ESTE PRENDIDA, SINO NO PONGAS NADA
      r = WriteProfileString("windows", "Device", "Impresora2," + Printer.DriverName + "," + Printer.Port)
      MiReporte.PrintReport

      procRestaurarImpresoraPredeterminada

ControlErrores:
    Select Case Err.Number
    Case 8555 'No hay la impresora
      MsgBox ("Problema de Impresion, no se pudo imprimir el documento porque la impresora no existe, vuelva a crearla y configure al papel adecuado")
      Resume Next
    End Select
Ahora, Impresora1 e Impresora2 deben ser los nombres exactos de tus impresoras, un poco de cuidado cuando esta compartida porque a veces se comparte como por ejemplo "EpsonXXX en PC01" , Sin embargo hay un truquito (que ahora no recuerdo) en el que se puede lograr poner la impresora compartida con el puro nombre de esta sin el Epsopn en tal PC.

Te recomiendo que no uses el nombre de la impresora por defecto, sino cambialo por un nombre mas adecuado y que tenga el papel especifico para tal fin. Yo por ejemplo tengo impresoras creadas como: "Reportes", "OVenta", "BolVenta" y "Factura" cada una con un tipo de papel diferente.
Por la linea:
Código: (VB) [Seleccionar]
r = WriteProfileString("windows", "Device", "Factura," + Printer.DriverName + "," + Printer.Port)
el código sabe a cual impresora debe ir el documento a imprimirse.

Insisto en usar el DataReport por el tema de la licencia, el CrystalReport creo que esta como 10 lucas y el cliente no quiere pagar. Espero haberte ayudado.
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Impresión y Programa Doble
« Respuesta #3 en: Marzo 16, 2010, 03:03:09 pm »
hola SSCCAANN   ;) bien mi duda no es imprimir mi reporte dos veces bueno si

a lo que me refiero es que tengo que imprimir el reporte dos veces en dos distintas impresoras-.

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Impresión y Programa Doble
« Respuesta #4 en: Marzo 16, 2010, 04:24:01 pm »
Wolf, allí tienes la solución de como hacerlo...! :D
Miguel Núñez.

wolf_kof

  • Visitante
Re:Impresión y Programa Doble
« Respuesta #5 en: Marzo 17, 2010, 01:10:25 am »
ok ok creo que no me he explicado bien!!!! Cuando doy clic en el boton de imprimir!!!! se tiene que imprimir en dos diferentes impresoras con un solo clic

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Impresión y Programa Doble
« Respuesta #6 en: Marzo 17, 2010, 02:08:32 am »
ok ok creo que no me he explicado bien!!!! Cuando doy clic en el boton de imprimir!!!! se tiene que imprimir en dos diferentes impresoras con un solo clic

Doc me sorprende tu interrogante. Pon todo el código que te escribí en un solo botón para que cuando el usuario haga clic se vaya la impresión a las dos impresoras y no pongas ningún aviso al medio.
Creo que con un DoEvent liberas a la primera y va la segunda, de pronto la segunda impresora es mas rápida y casi irían "al parecer" juntas.
Si te refieres a "instantaneidad" (concepto que para mi no existe, es una ilusión) es decir que de un mismo evento se desencadenen simultáneamente otros dos, no pues, siempre tiene que ocurrir uno antes que otro, así sea por milisegundos. Puedes hacer alguna "trampa" por ejemplo partiendo código y poniéndolos en timers para dar la "sensación" de que se imprimen a la vez, dependerá también de que imprimas (cantidad y calidad) para poder jugar con ellos y con las impresoras propiamente.
Es todo lo que se me ocurre.

Sobre la "trampa": Se me ocurre que en timer1 (con enabled false) tengas la orden para la impresora1 y en timer2 (con enabled false también) para la impresora2.
Cuando le das clic al botón imprimir pones timer1 y timer2 en true (internamente lo detienes después de mandar la impresión). El truco esta en que timer1 (que es el primero en arrancar) vaya a una velocidad menor que timer2. los tiempos tu ya los tendrías que calibrar. Al final el usuario vera que se imprimen a la vez, pero tu, yo y quien haya leído este post sabrá que es una ilusión. Salvo que me sorprendan con algún API mañoson del cual también me gustaría saber y dejaría de ser tan rustico jeje. Ojo, esto es una idea que tendrás que probar si te apetece, no tengo dos impresoras sino con gusto lo probaría.

Saludos
 
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Impresión y Programa Doble
« Respuesta #7 en: Marzo 18, 2010, 01:21:42 pm »
Ok graxias voy a probar y les comento graxias de nuevo  ;D y si perdon pero no habia visto la respuesta. Creo que edite mi respuesta antes que el editara la suya, perdon por el inconveniente.