Mis saludos antes que nada.
------------------------------------------------------------------
Considero que deberías establecer una tablita en donde almacenes las IMPRESORAS ACTIVAS O INSTALADAS
TODO ESTO LO TRABAJO PARA CARGARLAS EN UN COMBO
* A tomar las impresoras instaladas
For lnI = 1 To Aprinters(aPrintArray)
aPrintArray[lnI,1] = Space(1) + aPrintArray[lnI,1]
Endfor
*--------------------------------------------------------------------------
* Determino cual de las impresoras es la PREDETERMINADA
For i = 1 To Alen(aPrintArray)
lnPos = i
If Upper(Set('PRINTER',2))$Upper(aPrintArray[i])
Exit
Endif
Endfor
Thisform.TXTImpresora.Value = aPrintArray[lnPos] && Asigno al combo la predeterminada por el usuario desde el SO
con esto puedes agregar las impresoras en la tabla
LUEGO PARA TRABAJARLAS DESDE LA TABLA
* Para establecer via SO la predeterminada, esto lo puedes hacer para cada impresora
* Obviamente luego dejas establecida la predeterminada original
ws = Createobject("WScript.Network")
ws.SetDefaultPrinter(Alltrim(NombreImpresora))
ANTES DE IMPRIMIR VERIFICA SI ESTAN DISPONIBLE, YA QUE AUNQUE ESTEN INSTALADAS NO PUEDEN ESTAR DISPONIBLE
*!* Es necesario Verificar el Estado de las Impresoras antes de lanzar el Reporte *!*
If Aprinters(gaPrinters) > 0 && Mayor a Cero si hay al menos una impresora Instalada
If !Printstatus() && False, cuando
MessaGeBox("La Impresora se encuentra Desconectada ó Apagada, Verifique!",16+48,cTituloSoftware)
Thisform.Release()
Return .F.
Else
If Sys(13) = 'OFFLINE'
MessaGeBox("La Impresora Está fuera de línea!, Verifique",16+48,cTituloSoftware)
Thisform.Release()
Return .F.
Endif
* Todo está bién
Endif
Else && No hay impresoras Instaladas
MessaGeBox("Debe Instalar una Impresora en esta Computadora para esta operación!",16+48,cTituloSoftware)
Thisform.Release()
Return .F.
Endif
------------------------------------------------------------------
Bueno aca los TIPS trata de IMPLEMENTAR
Saludos cordiales;Managua, Nicaragua
Centroamérica