ich muß folgemnde Aufgabe lösen.
Thema: Protokollieren von Anwesenkeit.
In einer Datenbank möchte ich in monatlichen Tabellen eine Anwesenheit von Personen Dokomentieren.
Wobei die Zeilen die Namen und Zimmernummern enthalten und die Spalten das Datum.
Am Monatsende soll die Tabelle als calc Tabelle ausgegeben,gespeichert werden und in der Datenbank gelöscht und neu für den nächsten Monat erstellt werden. Wobei alle Felder auf den Wert 1 gesetzt werden sollen, die an händisch in der Tabelle/ Formular geändert werden können.
Später möchte ich wenn neue Bewohner einziehen die an die Tabelle anfügen.
Nun habe ich ein SQL Statement getestet:
DROP TABLE "Tbl_Anwesend"
SELECT "Tbl_Bewohner"."Name" || + ( ' ' ) + "Tbl_Bewohner"."Vorname"
|| + ( ' ' ) + "Tbl_Bewohner"."Zimmer" AS "Name"INTO "Tbl_Anwesend"
FROM"Tbl_Bewohner" WHERE "Abgemeldet" IS NULL
ALTER TABLE "Tbl_Anwesend" ADD"1" VARCHAR(35)ADD"2" VARCHAR(35)
UPDATE "Tbl_Anwesend"SET "1" = 1
Das funktioniert , nach den aktualisieren der Tabellen kann ich sie mir anschauen aber nicht bearbeiten.
Wenn ich danach die Datenbank schließe und neu starte bekomme ich eine Fehlermeldung über fehlende Tabelle weil im Script in zwei Zeilen diese erstelle Tabelle auftaucht!
Hier komme ich nicht weiter! Bitte um Hilfe!
Gruß Volker
Tabelle per Makro erstellen, löschen, ect.
Moderator: Moderatoren
Re: Tabelle per Makro erstellen, löschen, ect.
Hallo Volker,
mehrere nacheinander folgende Befehle werden entweder getrennt abgeschickt oder über ein Semikolon beendet.
Gruß
Robert
mehrere nacheinander folgende Befehle werden entweder getrennt abgeschickt oder über ein Semikolon beendet.
Nach diesem Schritt existiert die Tabelle nicht mehr. Hier solltest Du den Befehl auch mit einem Semikolon beenden.VolkerH hat geschrieben: DROP TABLE "Tbl_Anwesend"
Warum Du mit || und zusätzlich noch + arbeitest ist mir unklar. Zumindest erstellst Du hier eine Tabelle "Tbl_Anwesend" mit dem Feld "Name" ohne einen Primärschlüssel. Die wird gleich zu Beginn mit Inhalt versehen, lässt sich aber nicht mehr editieren, da der Schlüssel fehlt.VolkerH hat geschrieben: SELECT "Tbl_Bewohner"."Name" || + ( ' ' ) + "Tbl_Bewohner"."Vorname"
|| + ( ' ' ) + "Tbl_Bewohner"."Zimmer" AS "Name" INTO "Tbl_Anwesend"
FROM "Tbl_Bewohner" WHERE "Abgemeldet" IS NULL
Hier fügst Du 2 Textfelder hinzu, die Du anschließend aber mit Zahlen füllen willst. Warum nicht direkt Felder des Typs TINYINT?VolkerH hat geschrieben: ALTER TABLE "Tbl_Anwesend" ADD"1" VARCHAR(35)ADD"2" VARCHAR(35)
Gruß
Robert
Re: Tabelle per Makro erstellen, löschen, ect.
Hallo Robert, vielen Dank für Deine Hilfe! Für mich als "Lehrling" sind die SQL Begriffe Neuland.
Ich habe das Problem jetzt soweit gelöst:
Ich arbeite mit einer Tabelle Tbl_Anwesend mit 31 Spalten für die Wochentage die entweder am Monatsende gelöscht oder überschrieben werden kann.
Schön wäre noch eine Möglichkeit die überzähligen Spalten je nach Monat auszublenden bzw zu leeren.
Delete from"Tbl_Anwesend";
INSERT INTO "Tbl_Anwesend" ( "Bewohner_ID" ) SELECT("ID") FROM "Tbl_Bewohner"WHERE "Abgemeldet" IS NULL;
UPDATE "Tbl_Anwesend"
SET "1"= 1;
UPDATE "Tbl_Anwesend"
SET "2"= 1;
ect. bis 31
Gruß Volker
Ich habe das Problem jetzt soweit gelöst:
Ich arbeite mit einer Tabelle Tbl_Anwesend mit 31 Spalten für die Wochentage die entweder am Monatsende gelöscht oder überschrieben werden kann.
Schön wäre noch eine Möglichkeit die überzähligen Spalten je nach Monat auszublenden bzw zu leeren.
Delete from"Tbl_Anwesend";
INSERT INTO "Tbl_Anwesend" ( "Bewohner_ID" ) SELECT("ID") FROM "Tbl_Bewohner"WHERE "Abgemeldet" IS NULL;
UPDATE "Tbl_Anwesend"
SET "1"= 1;
UPDATE "Tbl_Anwesend"
SET "2"= 1;
ect. bis 31
Gruß Volker
Re: Tabelle per Makro erstellen, löschen, ect.
Hallo Volker,
die Update-Befehle laufen ins Leere. Du müsstest lauter Alter-Befehle anschließen und dann die Felder befüllen.
Mir ist nicht klar, warum Du überhaupt so eine Tabelle erstellst. Du hast doch bereits irgendwo anders die Anwesenheit stehen. Da müsstest Du doch mit einer Abfrage zum Ziel kommen, oder?
Die Grundtabelle für so ein Verfahren hätte nur zwei Felder:
Bewohner_ID und Datum_anwesend - beide zusammen wären Primärschlüssel, um Doppler zu verhindern.
Solch eine Tabelle müsste ausgewertet werden.
Gruß
Robert
die Update-Befehle laufen ins Leere. Du müsstest lauter Alter-Befehle anschließen und dann die Felder befüllen.
Mir ist nicht klar, warum Du überhaupt so eine Tabelle erstellst. Du hast doch bereits irgendwo anders die Anwesenheit stehen. Da müsstest Du doch mit einer Abfrage zum Ziel kommen, oder?
Die Grundtabelle für so ein Verfahren hätte nur zwei Felder:
Bewohner_ID und Datum_anwesend - beide zusammen wären Primärschlüssel, um Doppler zu verhindern.
Solch eine Tabelle müsste ausgewertet werden.
Gruß
Robert