Ausdruck über Netzdrucker

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Werner
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 114
Registriert: Sa, 18. Mär 2006 16:08

Ausdruck über Netzdrucker

Beitrag von Werner »

Ich habe immer noch Probleme, wenn ein Kunde mit einer Windows 2003 Serverlösung aus einem Xbase++ Programm heraus drucken möchte.

Beim Aufruf von DCPRINT ON SIZE 66,80 To oPrinter `FONT font10 USEDEFAULT AUTOEJECT kam die Fehlermeldung:

VALTYPE: U VALUE: NIÖ
Parameter hat falschen Typ
gebCode:2
operation: papersize
severity:2
subcode: 1025
Thread:1
tries:0

In dem Zusammenhang hätte ich noch eine weitergehende Frage:

Kann man einen Xbase++-Druck über einen speziellen (Drucker-)Pfad auch direkt auf einen Netzdrucker leiten? Wenn ja, wie müsste ein solcher Pfad konkret aussehen? In dem Zusammenhang wird manchmal auch von einer IP-Nummer gesprochen; was ist das?

In der Hoffnung, dass mir jemand helfen kann!

MfG
Werner
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Ausdruck über Netzdrucker

Beitrag von Martin Altmann »

Hallo Werner,
Werner hat geschrieben:In dem Zusammenhang wird manchmal auch von einer IP-Nummer gesprochen; was ist das?
das ist die "Hausnummer" eines Rechners. Jeder Rechner mit einer Netzwerkkarte, der auch im Internet (oder auch im interen Netz) hängt, bekommt eine solche IP-Adresse. Sie sieht zum Beispiel folgendermaßen aus: 192.168.12.34
Jedes einzelne Zifferntripel reicht von 0 bis 255 (nach dem aktuellen IP-Standard), wobei sowohl der 0 als auch der 255 eine jeweils besondere Bedeutung zukommen und diese nicht vergeben werden.
Statt der IP-Adresse kann man auch einen Klarnamen verwenden (z.B. www.microsoft.com), der dann automatisch über die sogenannten DNS-Server (DomainNameService) auf die entsprechende IP-Adresse umgesetzt wird.
Am Rechner selber wird dann die IP-Adresse auf die entsprechende Netzwerkkarte umgesetzt, indem die echte Adresse der Netzwerkkarte (MAC-Adresse oder auch physikalische Adresse) genommen wird, die immer folgendermaßen aufgebaut ist:
12-34-56-78-90-AB
Die jeweiligen Zahlen sind im Hexadezimalsystem angegeben.
Wenn Du an Deinem PC auf der Eingabeaufforderung das Kommando ipconfig -all absetzt, bekommst Du nicht nur Deine IP-Adresse, sonden auch die eigentliche MAC-Adresse genannt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Ausdruck über Netzdrucker

Beitrag von brandelh »

VALTYPE: U VALUE: NIL
Parameter hat falschen Typ
gebCode:2
operation: papersize
Der Drucker gibt NIL als Papiergröße zurück. Hier sollte ein anderes Ergebnis herauskommen. Wurde dieser Drucker eventuell angehalten (im Kontextmenü) ? Diese Info müßte der Windows Druckertreiber zur Verfügung stellen. Eventuell muß man diese dort erst definieren...
Kann man einen xBase++-Druck über einen speziellen (Drucker-)Pfad auch direkt auf einen Netzdrucker leiten? Wenn ja, wie müsste ein solcher Pfad konkret aussehen?
Ich arbeite nicht mit express. XbpPrinter() nutzt den Druckerpfad, welcher in Windows eingestellt ist, wie jedes andere richtige Windowsprogramm. Wenn man nach DOS Manier drucken möchte UND einen PCL4 oder PS2 oder ESC/P oder IBM Proprinter kompatiblen Drucker hat, kann man auch direkt auf den UNC Namen (so der richtige Name) drucken. Es gibt auch noch das IP-Printing, das kann aber nicht direkt verwendet werden, sondern wird intern vom Druckertreiber genutzt, falls ein Drucker im IP-Netz hängt. Der UNC Name wird bei der Druckerfreigabe angegeben und besteht aus \\SERVER\DRUCKERNAME (wobei hier SERVER der Rechnername des Rechners ist, welcher den Drucker freigibt).

Das folgende Beispiel funktioniert erst mit der neuen 1.90 (hoffentlich):

set printer to \\server\drucker
set printer on
? "Test"
set printer to

Ob das aber das ist, was du willst ?
Wenn der Drucker an USB hängt, oder ein GDI Drucker ist (hostbased etc.) dann geht das direkte Drucken (meist) nicht.
Gruß
Hubert
BIK
UDF-Programmierer
UDF-Programmierer
Beiträge: 68
Registriert: Di, 23. Aug 2011 14:34
Hat sich bedankt: 1 Mal

Re: Ausdruck über Netzdrucker

Beitrag von BIK »

Eine Frage zur Nutzung der IP eines Druckers:

Wir haben im Netzwerk mehrere IP Drucker mit vorgedruckten Formularen, die jeweils mit Klarnamen "Drucker_XY" angesprochen,
und so auch tadellos funktionieren. Diese Drucker werden ohne die Möglichkeit einer Auswahl direkt nach der Eingabe
der Daten beschickt.

Nun ändern die Kollegen ab und an "ihren" Druckernamen und dann geht der Druck ins leere.
Könntet ihr mir bitte einen Tipp geben, wie ich die IP-Adresse des Drucker verwenden kann damit bei allfälliger
Änderung des Druckernamens der Ausdruck trotzdem raus kommt.

Gruß,
Bernhard
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Ausdruck über Netzdrucker

Beitrag von Herbert »

Generell sollte man nicht fix einen Drucker ohne Wahlmöglichkeit einoprogrammieren. Genau solche Ereignisse bewirken einen unnötigen Supportakt.

Lass doch in einem Wahlfenster alle Drucker auflisten, damit der User dort optional einen Drucker auswählen kann.

Andernfalls auf die Schnelle empfehle ich dir, den Druckernaamen als Parameter für den Nutzer änderbar einzurichten.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ausdruck über Netzdrucker

Beitrag von AUGE_OHR »

BIK hat geschrieben:Nun ändern die Kollegen ab und an "ihren" Druckernamen und dann geht der Druck ins leere.
Könntet ihr mir bitte einen Tipp geben, wie ich die IP-Adresse des Drucker verwenden kann damit bei allfälliger Änderung des Druckernamens der Ausdruck trotzdem raus kommt.
auf Windows 10 upgraden ... ich schaffe es nicht, unter Druckereigenschaften, den Namen zu verändern.

zwischen IP und der Bezeichnung des Druckers gibt es IMHO keinen Zusammenhang.

mit XbpPrinter:List() kann man sich ja ein Array der vorhandenen Drucker Namen ausgeben lassen.
in einer DBF habe ich nun "meinen" Druckernamen und ein Feld für den gewünschten Drucker.

per ASCAN suche ich nun den Druckernamen im Array.
wenn nicht gefunden wird der XbpPrintDialog() aufgerufen und das Ergebnis in der DBF gespeichert.
gruss by OHR
Jimmy
BIK
UDF-Programmierer
UDF-Programmierer
Beiträge: 68
Registriert: Di, 23. Aug 2011 14:34
Hat sich bedankt: 1 Mal

Re: Ausdruck über Netzdrucker

Beitrag von BIK »

Herbert hat geschrieben:Generell sollte man nicht fix einen Drucker ohne Wahlmöglichkeit einoprogrammieren. Genau solche Ereignisse bewirken einen unnötigen Supportakt.
Lass doch in einem Wahlfenster alle Drucker auflisten, damit der User dort optional einen Drucker auswählen kann.
Andernfalls auf die Schnelle empfehle ich dir, den Druckernaamen als Parameter für den Nutzer änderbar einzurichten.
Wir hatten das schon mit der Druckerwahl!
Die Dokumente sind einmalig und mit einer laufenden Nummer versehen und je nach Abteilung in anderen Sprachen gedruckt.
Nun kam es immer wieder vor, dass z.B. Papiere die nach Frankreich gehen sollten nicht die Landessprache aufwies!
AUGE_OHR hat geschrieben:
BIK hat geschrieben: zwischen IP und der Bezeichnung des Druckers gibt es IMHO keinen Zusammenhang.
Ich dachte, dass ich über die printerPS, so wie jetzt mit 'Druckernamen' oder '\\Server01\Drucker', auch mit der IP den Drucker erreiche.

Gruß,
Bernhard
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ausdruck über Netzdrucker

Beitrag von AUGE_OHR »

BIK hat geschrieben:Ich dachte, dass ich über die printerPS, so wie jetzt mit 'Druckernamen' oder '\\Server01\Drucker', auch mit der IP den Drucker erreiche.
wie schon gesagt gibt dir XbpPrinter():List() die "Namen" aus ... aber wenn die umbenannt wurden ...

ich habe es noch mal mit WMI ausprobiert. das funktioniert mit einer IP

http://www.xbaseforum.de/viewtopic.php? ... ter#p90329
unter "PortName" findest du die IP und unter "Caption","DeviceID" und "Name" den veränderten Druckernamen.
gruss by OHR
Jimmy
BIK
UDF-Programmierer
UDF-Programmierer
Beiträge: 68
Registriert: Di, 23. Aug 2011 14:34
Hat sich bedankt: 1 Mal

Re: Ausdruck über Netzdrucker

Beitrag von BIK »

Danke
Antworten