PDA

Vollständige Version anzeigen : Datensätze x mal kopieren


ziege
03.10.2001, 09:39
Hallo,

folgendes Problem. (Access 00)
Zum Drucken von Etiketten möchte ich Datensätze in eine temporäre Tabelle kopieren um sie dann von dort ausdrucken zu können.
Dabei soll die Anzahl der zu kopierenden Datensätze aus einem Feld im Formular ausgelesen werden.

Beispiel:
Eine Sendung besteht aus 2 Kisten also benötige ich 2 Etiketten also müßte der aktuelle Datensatz mit den Adressdaten 2 x in die temporäre Tabelle kopiert werden.

Ich habe schon folgende Lösung aus diesem Forum umgesetzt:
(Eingebunden in das Ereigniss "Beim Drucken" des Berichtes)

If Me!AnzahlEtiketten = 0 Then
Me.NextRecord=True
Me.MoveLayout=False
Me.PrintSection = False
Else
If PrintCount < AnzahlEtiketten Then
Me.NextRecord = False
End if
End if

Das funktioniert aber scheinbar nur mit "ganz normalen Druckern".
Ich muß die Etiketten aber auf einem Zebra Drucker S 400 ausdrucken. Der Druckertreiber geht aber hin und ersetzt die vom oben aufgeführten Code eigentlich vorgegebene Anzahl von Etiketten durch die in den Druckereinstellungen hinterlegte Anzahl von Kopien eines Etikettes.

Beispiel:
Anzahl der Etiketten = 3 - Zahl der Kopien die in den Druckerdetails vorgegeben sind = 1
Also bekomme ich 1 Etikett. Egal was ich mache.

Daher habe ich mir die Lösung mit der temporären Tabelle überlegt.

Das Problem besteht nun darin wie bekomme ich eine beliebige Anzahl kopien eines Datensatzes in die Tabelle. Wenn ich folgenden Code verwende läuft dies in eine endlos Schleife. Warum ?

'Deklariert die beiden Variablen für den Zähler und das Atribut zum Verlassen der Schleife.
Dim Zähler As Integer
Dim Ende As Integer

'Anfangswerte für die Attribute setzen.
Zähler = 0
Ende = True
'Den ersten Datensatz aufsuchen und mit der Übergabe beginnen.
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdRecordsGoToFirst

'Hier beginnt die Schleife.
Do
Do While Zähler <= Me![AnzahlEtiketten]
'Übergabe der einzelnen Datensätze an die temporäre Tabelle.
DoCmd.OpenQuery "qry_Etikett_temp", acNormal, acEdit

Zähler = Zähler + 1
If Zähler = Me![AnzahlEtiketten] Then
Ende = False
Exit Do
End If
DoCmd.RunCommand acCmdRecordsGoToNext
Loop
Loop Until Ende = False

Mit einer Anfügeabfrage bin ich, glaube ich, auch nicht ganz glücklich weil Access 00 dafür sehr viel Zeit benötigt. Gibt es eine andere Lösung ?

P.S. Gedruckt werden einreihige Endlosetiketten.

Besten Dank im vorraus.

Ziege

Manuela Kulpa
03.10.2001, 09:54
<font face="Verdana" size="2">Hallo Ziege!

Schau dir doch mal die Beispiel-DB Etiketten drucken von <a href="http://www.kraasch.de" target="_blank">Reinhard Kraasch</a> an, diese findest du hier:

<a href="http://www.kraasch.de/beispiele.htm" target="_blank">rkse - Beispieldatenbanken Access</a>

vg
Manuela</font>

ziege
03.10.2001, 18:59
Hallo Manuela,

zuerst besten Dank für die schnelle Antwort.
Ich habe das Teil getestet. Und leider immer noch Probleme. Mit einem HP Deskjet 500 funkt alles, selbst wenn ich 25 Etiketten haben möchte. Der Zebra Drucker hingegen gibt ab 4 Etiketten auf, manchmal auch erst ab 6 Etiketten. Warum ist mir schleierhaft.
Das alles ist mir zu unsicher.
Ich würde lieber die Lösung mit einer temporären Tabelle austesten.
Hast du dazu evtl. einen Tip bzgl. des mehrfachen kopieren eines Datensatz in eine Tabelle.

Gruß

Ziege