Seite 1 von 1

Brauche Hilfe beim drucken von Zeiträumen auf Etiketten

Verfasst: Do, 27.09.2012 11:34
von Esiotrot
Hi,
ich hab ein etwas ungewöhnliches Problem: Ich soll Termine für einen Sprechtag drucken. Sie sollen selbstklebend sein, daher müssen sie auf Etikettenpapier gedruckt werden.
Jedes Etikett sollte so Aussehen:

Name
Raumnr.
Zeit

Name und Raumnummer sollte auf dem ganzen Blatt dasselbe sein, aber die Zeit muss immer weiter voranschreiten. Also 8:00-8:15 Uhr, auf dem nächsten 8:15-8:30 Uhr, dann 8:30-8:45 Uhr und so weiter.
Ich habe bereits eine Datenbank mit allen Namen und den dazugehörigen Raumnummern erstellt, die auch richtig auf den Etiketten dargestellt werden. Mir fehlt aber noch die Schleife, mit der man den Zeitraum angibt. und ich weiß nicht, wie sie aussehen könnte. Oder muss man es gar nicht mit einer Schleife lösen?
Vielen Dank im voraus für jeden Vorschlag und jeden Link zu einem Thread/Hilfevideo/was auch immer.

Re: Brauche Hilfe beim drucken von Zeiträumen auf Etiketten

Verfasst: Do, 27.09.2012 12:49
von DPunch
Servus

Leg Dir eine Tabelle an, die nur eine einzige Spalte hat und trag dort alle möglichen Zeiten ein.
z.B.
Tabelle: "Zeiten",
Spalte: "Zeit" varchar
Inhalte: Zeile 1: "08:00-08:15", Zeile 2 "08:15-08:30" etcetc

Nun kannst Du einen sogenannten Crossjoin zwischen Deiner Tabelle und der Zeiten-Tabelle machen und hast alle relevanten Informationen.
Nehmen wir an, Deine Tabelle sähe so aus:
Tabelle: "meineTabelle",
Spalten: "Name", "Raumnr."

Im SQL würde das dann so abgefragt werden:

Code: Alles auswählen

SELECT "a"."Name","a"."Raumnr.","b"."Zeit" 
FROM "meineTabelle" AS "a" JOIN "Zeiten" AS "b" ON 1 = 1 ORDER BY "a"."Name" ASC, "b"."Zeit" ASC
Diese Abfrage kannst Du dann als Grundlage für Deine Etiketten nehmen.

Re: Brauche Hilfe beim drucken von Zeiträumen auf Etiketten

Verfasst: Fr, 05.10.2012 20:16
von Esiotrot
Vielen Dank für die Antwort!
Ich verstehe wie es ablaufen soll und es macht auch viel Sinn, aber leider öffnet sich jedes mal die Fehler meldung, dass mehr als eine Tabelle verwendet wird und die Abfrage daher nicht ausgeführt werden kann.

:(

Re: Brauche Hilfe beim drucken von Zeiträumen auf Etiketten

Verfasst: Fr, 05.10.2012 21:47
von RobertG
Wenn ich das einfach mit der GUI zusammenklicke kommt bei mir die folgende Abfrage zustande:

Code: Alles auswählen

SELECT "Raum"."Name", "Raum"."Raumnr", "Zeiten"."Zeit" FROM "Raum", "Zeiten"
Dadurch werden automatisch zuerst die Daten aus dem ersten Datensatz der Tabelle "Raum" genommen und mit allen Datensätzen aus der Tabelle "Zeit" kombiniert. Anschließend wird der zweite Datensatz aus der Tabelle Raum genommen usw.

Gruß

Robert

Re: Brauche Hilfe beim drucken von Zeiträumen auf Etiketten

Verfasst: Sa, 06.10.2012 10:12
von juetho
Wie RobertG sagt, wird das kartesische Produkt der beiden Tabellen benötigt: Du brauchst eine Abfrage, bei der jeder Datensatz der Tabelle a mit jedem Datensatz der Tabelle b verknüpft wird. Ob das mit der einfachen FROM-Klausel (Roberts Vorschlag) oder einem impliziten CROSS JOIN (DPunchs Vorschlag) oder einem ausdrücklichen CROSS JOIN (mein Vorschlag, den nicht jeder SQL-Dialekt kennt) erfolgt, ist unwichtig und hat mit dem noch bestehenden Problem nichts zu tun. Mehr zu diesen Varianten siehe SQL: Mehrere Tabellen und den dort folgenden Kapiteln.

Code: Alles auswählen

SELECT a.Name AS Name, a.Raumnr AS Raum, b.Zeit AS Zeit
  FROM meineTabelle AS a CROSS JOIN Zeiten AS b
 ORDER BY a.Name ASC, b.Zeit ASC
Esiotrot hat geschrieben:... aber leider öffnet sich jedes mal die Fehler meldung, dass mehr als eine Tabelle verwendet wird und die Abfrage daher nicht ausgeführt werden kann.
An welcher Stelle und wie willst du die Abfrage ausführen? Wenn du sie als Abfrage fest speicherst, steht sie als Datenquelle sowohl im Writer (Serienbrief-Funktion) als auch in Base (für Berichte) zur Verfügung.

Die Fehlermeldung kann ich mir allenfalls so erklären: Weil für die Spalten der Ergebnismenge kein Spalten-Alias angegeben ist, glaubt Base, dass die Daten aus zwei verschiedenen Datenquellen geholt werden müssen (obwohl SELECT durch FROM bzw. JOIN die Quellen in einer gemeinsamen Datenquelle verknüpft). Deshalb schlage ich als ersten Versuch vor: Füge Spalten-Aliasse hinzu und greife bei den Ausgabe-Elementen auf diese Namen zu (also auf "Raum" statt "a.Raumnr").

Nebenbei: Die dauernden Gänsefüßchen bei Tabellen- und Spaltennamen stören mich wahnsinnig; sie machen Befehle sehr unübersichtlich (erst recht im Quellcode von Makros). Soweit ich das bisher festgestellt habe, sind sie unnötig, solange die Bezeichner nur die Buchstaben a...z (ohne Unterscheidung von Groß- und Kleinschreibung) und den Unterstrich verwenden. Bei einem Spaltennamen "Raumnr." (mit Punkt) müssen Gänsefüßchen sein, bei "Raumnr" nicht.

Gruß Jürgen