Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Laufzeitfehler bei ändern der Druckereinstellung

Begonnen von Stapi, März 22, 2012, 18:57:22

⏪ vorheriges - nächstes ⏩

Stapi

Guten Abend

Habe vor wenigen Tagen schon mal ein Thema eröffnet, es geschlossen wo sich dann aber erneute Probleme eingestellt haben die ich im Moment leider nicht lösen kann. Somit erneut eure Hilfe benötige.

http://www.access-o-mania.de/forum/index.php?topic=15540.0

Ich möchte / muss in einer Replikat Gruppe das drucken von Berichten ausschließlich in der Druckfarbe Schwarz ermöglichen.
Mein Code lautet:
DoCmd.Echo false
DoCmd.OpenReport stDocBericht, acViewDesign
Reports(stDocBericht).Printer.ColorMode = acPRCMMonochrome
RunCommand acCmdSave
DoCmd.Close acReport, stDocBericht,acSaveYes
DoCmd.Echo True
DoCmd.Openreport stDocBericht, , , BrKrit

Nun kommt es bei Ausführung der Zeile ,, RunCommand acCmdSave" zum Laufzeitfehler 2046
,,Die Aktion Speichern steht im Moment nicht zur Verfügung"
Nun weiß ich aber auch  das Änderungen  in der Entwurfsansicht eines Bericht im Replikat nicht möglich sind, liegt hier der Fehler oder gibt es eine andere Möglichkeit das Speichern per VBA durch zuführen?? 
Grüße aus dem schönen NRW
Stefan

DF6GL

Hallo,


tja, spontan würde ich sagen, statt den Entwurf speichern zu wollen, einen monochromatischen Drucker auswählen und über den zu ducken.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Stapi

Hallo

Die Situation ist leider so das wir eine Mobile Kofferlösung haben, in der ein Farbdrucker verbaut ist, bei zwei Kofferlösungen sind ältere Canon Drucker verbaut die ich über die Druckeinstellung im Vorfeld so einstellen kann das aus Access heraus nur in schwarz gedruckt wird. Bei der neuen Generation sind auch Canon verbaut lassen sich lassen sich auch auf nur schwarz umstellen. Aber aus Access heraus wird trotz der gleichen Druckeinstellung Schwarz alles in Farbe gedruckt.

Hat noch jemand einen Tipp ???
Grüße aus dem schönen NRW
Stefan

database

Hallo,

du kannst ja auch den im Entwurfsmodus geöffneten und geänderten Bericht drucken - oder?

Da du den Bericht bei jedem Aufruf der Druckroutine in den Entwurf schickst könntest du auf das Speichern der Änderung ja eigentlich auch verzichten

DoCmd.Echo false
DoCmd.OpenReport stDocBericht, acViewDesign
Reports(stDocBericht).Printer.ColorMode = acPRCMMonochrome
RunCommand acCmdSave
DoCmd.Close acReport, stDocBericht,acSaveYes
'DoCmd.Echo True
DoCmd.Openreport stDocBericht, , , BrKrit
DoCmd.Close acReport, stDocBericht,acSaveNo

Was würde denn in diesem Fall passieren?

Stapi

Hallo Peter

Wenn ich den Bericht nicht über den Befehl "RunCommandacCmdSave" oder " DoCmd.Save" speicher wird die Änderung der Funktion Printer.ColorMode nicht übernommen. Lasse ich wie du Vorgeschlagen
ZitatDoCmd.Close acReport, stDocBericht,acSaveYes
das Schließen des Bericht aus, wird die Where Bedingung ignoriert
ZitatDoCmd.Openreport stDocBericht, , , BrKrit
, aber dann immer noch in Farbe. In dem Befehl Bericht Schließen kann ich auf das speichern verzichten das habe ich heute getestet.
Grüße aus dem schönen NRW
Stefan

database

Hallo,

das klingt nicht gut - hilft dir also nicht viel...  :-\

Die Konstellation ist aber auch nicht grad einfach.

Sag' kann man die farbfähigen Drucker nicht standardmäßig auf s/w einstellen, so dass IMMER s/w gedruckt wird und zum Farbdrucken dieses explizit angegeben werden muß.
Das sollte doch über den Druckertreiber zu erreichen sein - also ohne VBA im BS selbst die Druckereinstellungen (den Standard) ändern.

Ich hab' mal irgendwo gesehen, dass sich der Druckertreiber selbst mit VBA und APIs ansprechen läßt - weiß aber nicht mehr wo das war...

bahasu

Zitat von: database am März 25, 2012, 11:12:04
Ich hab' mal irgendwo gesehen, dass sich der Druckertreiber selbst mit VBA und APIs ansprechen läßt - weiß aber nicht mehr wo das war...

Hi Stefan,

habe den Hinweis von Peter aufgegriffen und das gefunden:
http://translate.google.de/translate?hl=de&langpair=en%7Cde&u=http://www.lessanvaezi.com/changing-printer-settings-using-the-windows-api/

Dort wird u.a. verwendet:
Public Sub SetColorMode(ByVal sPrinterName As String, iColorMode As Long) 
    SetPrinterProperty sPrinterName, DM_COLOR, iColorMode 
End Sub

Vielleicht hilft das.

Harald
Servus

Stapi

Hallo

@ Harald, Vielen Dank für den Link. Muss mich dort einarbeiten da bedingt durch die Kofferlösung wir Uterschiedliche Drucker im Einsatz haben. Aber er wird immer bei allen Anwendungen als Standart Drucker unter Window eingestellt, ich hoffe das ich das nutzen kann.

@Peter Deinen Hinweiß mit der Standart Drucker Einstellung
ZitatSag' kann man die farbfähigen Drucker nicht standardmäßig auf s/w einstellen, so dass IMMER s/w gedruckt wird und zum Farbdrucken dieses explizit angegeben werden muß.
hat bis zum Einsatz des "neuen" Drucker auch so funktoniert. Nur dieser neue Beagte Drucker ignoriert diese Einstellung unter Access
Grüße aus dem schönen NRW
Stefan

Stapi

Hallo

Habe mir über diesem Link.
http://support.microsoft.com/kb/507368/de
Die API Einstellung Standart Drucker in ein Modul (mit Namen Drucker) kopiert, nun muss ich ja den über Window eingestellten Standart Drucker ermitteln um den von @Harald gezeigten Code ansprechen zu können.
ZitatPublic Sub SetColorMode(ByVal sPrinterName As String, iColorMode As Long) 
    SetPrinterProperty sPrinterName, DM_COLOR, iColorMode 
End Sub
Da das aber meine ersten Versuche mit der Win API sind, wäre es sehr nett wenn mir ab hier einer etwas helfen könnte damit ich das Verstehe was ich hier machen muss.
Grüße aus dem schönen NRW
Stefan

database

#9
Hallo,

Zitat....Nur dieser neue Beagte Drucker ignoriert diese Einstellung unter Access....

Tja dann schmeiß' den Drucker zum Fenster raus!  ...    ;D :D ;D ;) :) 8)

zum Code von bahasu...

Die Routine setzt die Eigenschaft für farb oder s/w ausdruck.

Du mußt ihr beim Aufruf den Namen des Druckers und den gewünschten iColorMode übergeben (für s/w GLAUBE ich ist das 1)

Etwa so

   Call SetColorMode("DeinSuperDrucker",1)

Funktionieren wird diese Geschichte allerdings nur im Zusammenspiel mit dem API-Codebeispiel aus seinem Link,
das die entsprechnde Routine dort drinnen steht.
Daher solltest du dieses in ein Standardmodul kopieren und entsprechend nachbearbeiten (Zeilennummern und nicht benötigte Textstellen rausfischen)
Die Routine greift dann auf die Druckereinstellungen zu und ändert diese - so wie du das manuell in den entsprechnden Eigenschaftsfenstern der Druckereinstellungen machen würdest.

Denkbar wäre auch, dass du 2 Reports in deine DB einpackst und beim 2. eben die benötigten Einstellungen vorab manuell einbringst.
Wird dann der entsprechende Drucker verwendet - der Name läßt sich mit VBA ja feststellen - wird der s/w Bericht aufgerufen sonst eben der andere.
Möglich, dass die Speicherungs-Problematik mit dem Replikat zusammenhängt - ich kann das leider nicht nachstellen.

Stapi

Hallo Peter

ZitatTja dann schmeiß' den Drucker zum Fenster raus!  ...
Da hab ich leider keinen Einfluss drauf.
Die Datenbank die ich nutze war mal zur Arbeitserleichterung gedacht, aber bedingt durch immer weitere Anforderungen wächst sie mit jedem Jahr in ihre Funktioen. Da ich mir in den letzten Jahren im Eigenstudium mit Access befasse, dauert es oft Tage für Funktionen die ihr als Profis sofort aus dem Ärmel Zaubert. Darum bitte ich um Nachsicht wenn ich zwei mal Fragen muss, und nun auch mit API??
Aber was hilft es, Danke für deine Unterstützung

Grüße aus dem schönen NRW
Stefan

database

Hi,

der Fensterschmiß war auch nur zum Scherz gemeint ...

Ich weiß, wie frustrierend manche Dinge sein können - so ist es SICHER kein Problem, wenn du Fragen stellst.
Leider wissen wir halt auch nicht auf JEDE Frage auf Anhieb die passende Antwort und es bedarf einiger Versuche, bis wir dann ans Ziel gelangen.

Was ich mich aber jetzt noch immer frage und nicht verstehe ... wenn du den Bericht mit den gewünschten VBA - Änderungen als Standard-Bericht verwendest sollte das doch gehen.
Ich meine also dass du die s/w Einstellung, die du als VBA-Routine einbauen willst oder versucht hast kannst du doch auch über die Berichtseigenschaften/Druckeigenschaften
im Entwurfsmodus des Berichts 'zu Fuß' erledigen.
Wenn du das im Original machst, müßte die Sache ja greifen.
Ich könnte mir vorstellen, dass diese Einstellungen dann ins Replikat mitgenommen werden und im besagten Koffer zur Verfügung stehen sollten.
Hast du das schon versucht? Auf jenen Koffern in denen die genügsamen alten Drucker eingebaut sind sollten diese damit ja auch keine Probleme haben.


Stapi

Hallo Peter
ZitatWas ich mich aber jetzt noch immer frage und nicht verstehe ... wenn du den Bericht mit den gewünschten VBA - Änderungen als Standard-Bericht verwendest sollte das doch gehen.
Ja das geht auch

ZitatIch meine also dass du die s/w Einstellung, die du als VBA-Routine einbauen willst oder versucht hast kannst du doch auch über die Berichtseigenschaften/Druckeigenschaften
im Entwurfsmodus des Berichts 'zu Fuß' erledigen
Wo kann ich das den in der Eigenschaft des Bericht einstellen, auch diese Idee habe ich Versucht, habe aber den Nötigen Hinweis in meinen vielen Büchern nicht gefunden.

ZitatWenn du das im Original machst, müßte die Sache ja greifen.
Ich könnte mir vorstellen, dass diese Einstellungen dann ins Replikat mitgenommen werden
Die Überlegung hatte ich auch schon ins Auge gefast bevor ich @Harald seinen Post gelesen hatte, nur muss ich dafür soren das die Umstellung nur Desingmaster dann möglich ist, im Replikat würde das denn zum Asturz von Access führen, wie ich ja schon jetzt leidvoll feststellen durfte.

Grüße aus dem schönen NRW
Stefan

Stapi

Hallo

Sollte ich bei der Umsetzung noch Probleme bekommen, werde ich ein neues Thema eröffnen.

Vielen Dank an alle für die entsprechenden Tipps
Grüße aus dem schönen NRW
Stefan