5.1k Aufrufe
Gefragt in Datenbanken von matty Einsteiger_in (89 Punkte)
Hallo hallo,

ich habe ein Problem, habe aber noch keine Antwort darauf gefunden.

Ausgangsituation, es geht um Etikettendruck:

Meine DB hat zwei Tabellen (Tab1 und Tab2), 1:n Verbindung. In der Tab1 sind die Titel der Zeitschriften, in den Tab2 gibt man durch einen Formular die Ausgabennummer ein. Bei Eingabe der Ausgabenummer wird in eine andere Spalte der Tab2 automatisch der "Tagesdatum" generiert.

Soweit sogut.

Jetzt sollte in ein weiteres Feld der Tab2 die laufende Nummer der Eingaben basierend auf den Anzahl der "Tagesdatum" erscheinen, Also wenn ich heute z.B. 200 Eingaben machen würde, sollte in dieses Feld aufsteigend dazu die Zahlen 1,2,3,4,5, bis 200 stehen. Am kommenden Tag sollte die Zählung wieder bei 1 anfangen. Wenn ich dann am morgigen Tag z.B. 150 Eingaben machen würde, sollten in dieses Feld die Zahlen aufsteigend 1,2,3,4,5 usw. bis 150 stehen.
Sinn der Sache ist, wenn schon 21 Angaben gemacht sind könnte ich direkt ein Etikettenblatt ausdrucken, welche von einen anderen Kollegen schon auf die Zeitschriften aufgeklebt werden kann. danach 22 bis 42 ausdrucken usw. usw. Damit könnte ich viel Zeit sparen. Sonst müsste ich warten bis alle, teilweise bis zu 300 Eingaben gemacht sind. hmmm...

Ist in dieser Form das möglich? Könntet Ihr mich bitte weiterhelfen?

Vielen Dank schon in Voraus.
Gruß Matty

PS
Die Gesamtanzahl der Eingaben kriege ich hin, aber ich bräuchte dies wie oben beschrieben.
Wenn meine Beschreibung nicht ganz klar und deutlich sein sollte bitte fragen. Achja, ich habe win7 64Bit und Access2k3
Danke nochmal.

11 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Matty,

Je nach Ausgabenummer eine mit 1 beginnende fortlaufende Nummerierung kann ich mir direkt in Access nicht vorstellen, ginge vielleicht über Excel, ist aber nach meinem Dafürhalten nicht erforderlich.

Meine Empfehlung wäre erstelle mit Tabelle1 und Tabelle2 (als Abfrage) ein Formular, füge in das Hauptformular ein Kombifeld für den Titel ein, über den Titel erscheint im Unterformular die dazugehörige Ausgabenummer, Titel und Datum (Datum vorher in der Abfrage>Aufbauen>Datum:Datum() vorbereitet).
1:n Beziehung Titel (Tabelle1)>Titel (Tabelle2)
Vorausgesetzt Titel und Ausgabenummer gehen konform!

Mittels formularbasierten Filters kann der Titel ausgewählt werden und in der Navigationsleiste des Unterformulars ist ersichtlich wie viele Eingaben bereits gemacht wurden.
In der Seitenansicht ist ersichtlich was ausgedruckt werden soll.

Wie die Eingaben aussehen, die gemacht werden sollen (150; 200 usw.), kann ich auf Grund der Anfrage nicht nachvollziehen.


Gruß

Paul1
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Hallo,
also mir geht es wie Paul1 - ich werde auch nicht recht schlau aus
deiner Beschreibung. Deinen Begriff "Eingaben" habe ich für mich
jetzt mal mit einer beliebigen Eingabe (z.B. Adresse) pro
Zeitschriftexemplar übersetzt.
Denn könntest du ja die "laufende Nr" der Eingaben mit Datentyp
Autowert belegen, dann zählt die DB automatisch bei jeder
neuen Eingabe hoch, ohne dass du irgendetwas Weiteres
unternehmen müsstest.
In der Tab2 könntest du denn noch ein Feld "Gedruckt" mit Datentyp
"Ja/Nein" bzw. Bool unterbringen, in dem du pro Eingabe speicherst,
ob das Etikett schon gedruckt wurde. Wenn mal ein Etikett
nachgedruckt werden soll, kannst du das Feld dafür zurücksetzen.
Dann druckst du einfach die ersten 20 Etiketten pro Tagesdatum,
die im Feld "Gedruckt" ein false haben und setzt es danach auf
true und so weiter bis alles gedruckt ist. Dann kannst du die
"laufende Nr" noch mit auf die Etiketten drucken, damit ihr euch
intern verständigen könnt, welches Etikett eventuell nochmal
gedruckt werden soll, du musst es aber nicht, wie Paul1 schon
schrieb.

Gruß
0 Punkte
Beantwortet von matty Einsteiger_in (89 Punkte)
Hallo,

@Paul1
@lorf55

Vielen dank für euere Antworten, ihr habt mich auf neue Ideen gebracht. Ich probiere es vorerst aus und wenn es klappt melde ich mich wieder. Danke nochmal :)

Gruß Matty
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Matty,

siehe auch:

ActiveBarcode

für sämtliche Access-Versionen

Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
ECDL-Syllabus Version 4.0[/sub]
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Matty,

Habe ein einfaches Konzept erstellt wie ich es mir vorstellen könnte mit dem nachfolgenden Arbeitsablauf:

Hauptformular Tabelle1
Das Unterformular wurde aus „Tabelle2 Abfrage“ erstellt
>Entwurfsansicht Abfrage
>gedruckt
>auf „nein“ gestellt
Beziehungen 1:n: Tabelle1 „Titel“>Tabelle2 „Titel“

Wenn z.B. 21 Eintragungen für Ausgabe1 druckreif sind (ersichtlich im Formular) können die Etiketten ausgedruckt werden, anschließend die 21 Kästchen anhaken, damit erscheinen beim nächsten Aufruf der Ausgabenummer (Titel) nur mehr die anschließend nicht gedruckten und der Vorgang kann für die nächsten Etiketten wiederholt werden.

Für den Druck selbst:

>formularbasierter Filter
>Titel auswählen
>Filter anwenden
>Seitenansicht anschauen
>eventuell Seite einrichten
>wenn es passt dann drucken
>anschließend Haken bei gedruckt nicht vergessen

Wie gesagt, das wäre eine Möglichkeit den Etikettendruck im Sinne der Anfrage durchzuführen auch wenn es sich um Barcodes handeln sollte.
Bei größeren Mengen würde ich einen Etikettendrucker mit der integrierten Software empfehlen ähnlich den bekanntgegebenen Link aus AW 4.

Konzept

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Matty,

Ich habe mir das nochmals angeschaut, zum Etikettenausdrucken eignet sich am besten ein Bericht. Das Formular kann und soll zum Daten eingeben, ändern etc. und nach Ausdruck des Berichtes die Haken setzen weiter verwendet werden.

Der Umweg über den formularbasierten Filter ist nicht mehr erforderlich, da alle eingegebenen Datensätze ausgedruckt werden und nach setzen der Haken im Formular scheinen nur mehr die nicht ausgedruckten Datensätze auf.

2 Button habe ich im Formular hinzugefügt:
"Bericht drucken"
"Berichtsvorschau"

Schau es Dir unverbindlich an und teste es.

Die Haken statt einzeln auf einmal zu setzen ist mir im Unterformular trotz Recherchen nicht gelungen (wäre ja zu schön).

Formular-Bericht

Gruß

Paul1
0 Punkte
Beantwortet von matty Einsteiger_in (89 Punkte)
Hallo Paul1,

du machst die richtig gedanken, vielen Dank dafür. :)

Wie schon erwähnt, die Daten werden in ein Formular eingegeben. Wie in deiner Beispiel DB gemacht ist habe auch ein Bericht für das Etikettenblatt mit "Berichtvorschau" und "Bericht drucken" erstellt. Nur für das Feld mit den Häckchen macht mir sorgen. Sie zu pflegen braucht viel Zeit und wir haben keine. Sobald die DB "scharf" geschaltet wird sollen in begrenzter Zeit (ca. 1,5h) um die 180 Stück an Zeitschriften oder Zeitungen abgefertigt werden (Dateneigabe, Etikettendruck, Aufkleben des Etiketts). Da würde man schnell den Übersicht verlieren was gedruckt war oder nicht. Ich möchte die Anzahl der Handgriffe auf ein Minimum reduzieren.

Hier ein Auszug aus meine Tabelle2:

WUNSCHFELD; Datum ; Ausgabe ; Ausg_ID;Titel_ID
1 ; 14-Okt-12;1;2;1
2 ;14-Okt-12;.2; 3 ; 3
3 ; 14-Okt-12;3 ; 4 ; 22
4; 14-Okt-12;4 ; 5 ; 36
5; 14-Okt-12; 12 ; 6 ; 15
6; 14-Okt-12;45 ; 7 ; 16
7; 14-Okt-12; 56 ; 8 ; 19
8; 14-Okt-12 ; 23 ; 9 ; 128
1; 15-Okt-12 ; 18 ; 10 ; 1
2;15-Okt-12 ; 47 ; 11; 2
3;15-Okt-12; 48 ; 12 ; 5
1; 17-Okt-12; 5 ; 13 ; 1
2; 17-Okt-12; 6 ; 14 ; 3
3;17-Okt-12; 13 ; 15 ; 128
4; 17-Okt-12; 14, ; 16 ; 21
5; 17-Okt-12; 15 ; 17 ; 22

Titel_ID: Verknüpfung zu Titeltabelle (Tabelle1)
Ausg_ID: Autowert
Ausgabe: Die Ausgabennummer der Zeitschrift, dieser Wert wird manuell eingegeben.
Datum: Tagesdatum. wird ausgelöst sobald in "Ausgabe" eine Änderung vorgenommen wurde (Befehl in Eingabeformular "Bei Änderung").

Und jetzt kommt mein WUNSCHFELD, noch ohne Inhalt:
Ich habe mir so vorgestellt, sobald der Tagesdatum in "Datum" erscheint, sollte in dieses Feld die Zahl aufsteigend erscheinen wieviele Eingaben, mit Bezug auf Tagesdatum schon gemacht wurden.
Am nächsten Tag müsste der Inhalt des Feldes wieder mit 1 anfangen, da neues Tagesdatum usw, in den kommenden Tagen dann weiter so. So könnte ich eine Abfrage erstellen, basierend auf Tagesdatum, welche mir die tägliche Eingaben zählt. So könnten die Kollegen per Klick auch zwischendurch Etiketten ausdrucken damit die Zeitschriften während der Eingaben schon mal etikettiert werden können. Das würde die Arbeit sehr erleichtern.

An diese Stelle komme ich nicht weiter.

Gibt es ein Befehl der sowas bewerkstelligen kann? Kennst du so einen? Für neue Ideen bin ich immer offen.

Danke und Gruß
Matty
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Du könntest vor jeder neuen Eingabe für den aktuellen Tag das
Maximum des Wunschfeldes ermitteln.

SELECT Max(WUNSCHFELD) AS [Max von WUNSCHFELD]
FROM Tab
GROUP BY Art.datum
HAVING (((Art.datum)=Date()));


Gibt es keinen Wert - startest du mit 1, sonst zählst du 1 dazu.
0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Etwas ausfühlicher.
Abfrage MaxID =
SELECT Max([Tab].[id]) AS [Max von id]
FROM Tab
GROUP BY [Tab].[datum]
HAVING (((Tab.datum)=Date()));


Die aktuell höchste Zahl des Wunschfeldes ermittelst du mit VBA "bei Änderung":
Dim rstTabelle As ADODB.Recordset
Dim id
' Ein Datensatz
Set rstTabelle = New ADODB.Recordset

' Öffnen des Datensatzes
rstTabelle.Open "MaxID", CurrentProject.Connection, _
adOpenStatic, adLockOptimistic
id = 0
With rstTabelle
If Not .EOF Then ' Solange kein Tabellenende
id = rstTabelle.Fields("Max von id").Value
End If
.Close
End With
id = id + 1
Set rstTabelle = Nothing



Gruß
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Matty,

Das mit den Haken einzeln setzen für alle ausgedruckten Etiketten, war einer meiner Hauptprobleme in meinem Konzept, da zeitaufwendig.
Von der laufenden Nummerierung habe ich deshalb Abstand genommen, zumal ich das Datumsfeld mit der Funktion "Datum()" belegte.

Werde es mir nochmals ansehen, kann aber nichts versprechen.

Gruß

Paul1
...