Seite 1 von 1
Unterformular - Monat zu Datum
Verfasst: Mi 1. Apr 2015, 11:47
von tjay
Hallo zusammnen,
ich will mir gerade für meine Arbeit eine Stundenerfassung zusammnen bauen. Tabllen habe ich alle Fertig und eigentlich funktioniert auch alles soweit bis auf mein Formular. Ich möchte ein Feld haben, in dem ich den Monat auswähle (z.B. Mrz.2015) und in der darunterliegenden Tabelle sollen alle Tageseinträge für die entsprechenden Tage mit Datum (z.B. 01.Mrz.2015, 02.Mrz.2015, 03.Mrz.2015,....) angezeigt und bearbeitet werden können. Gibt es eine Möglichkeit das elegant ohne Makros zu lösen ? Wichitg wäre mir vor allem, dass die Tabelle mit den Tageseinträgen auf einer Datenbank-Tabelle beruht, so dass ich auch neue Daten und Einträge inserten kann.
Hier noch die Datenbank

Re: Unterformular - Monat zu Datum
Verfasst: Mi 1. Apr 2015, 16:37
von RobertG
Hallo tjay,
verstehe ich das richtig, dass Du nur nach einer Möglichkeit suchst, die Tage eines kompletten Monats entsprechend angezeigt zu bekommen?
Du übergibst ein Datum, möchtest dazu den entsprechenden Monat komplett angezeigt bekommen und gegebenenfalls zu dem Tag einen Eintrag in einem Unterformular zu dem Tag machen, richtig:
Erstelle eine Tabelle mit Werten von 1 - 31. Ich habe die für den folgenden Code "NrBis31" genannt. Die Tabelle besteht nur aus dem Feld "Nr". Das Feld ist Primärschlüssel bis Du alle Werte eingetragen hast. Danach die Primärschlüsseldefinition raus nehmen, damit die Tabelle nicht weiter editiert wird.
Code: Alles auswählen
SELECT DISTINCT
CAST( YEAR(:pDatum) || '-' ||
CASEWHEN
( "M"."Nr" < 10, '0' || "M"."Nr", '' || "M"."Nr" ) || '-' ||
CASEWHEN
( "D"."Nr" < 10, '0' || "D"."Nr", '' || "D"."Nr" )
AS DATE )
AS "Datum"
FROM "NrBis31" AS "D", "NrBis31" AS "M"
WHERE
"M"."Nr" = MONTH(:pDatum)
AND "D"."Nr" <= 31
Wenn Du bei dieser Abfrage ein Datum eingibst, dann werden Dir alle Datumswerte zu dem entsprechenden Monat ausgegeben - in der Abfrage leider als Zahlen, aber für das Formular macht das nichts.
Diese Abfrage setzt Du jetzt als Quelle in das Unterformular, in dem bisher nur zwei Datumswerte auftauchen. Verknüpft wird mit dem Parameter :pDatum. Damit hast Du alle Datumswerte für den Monat des Hauptformulars zur Verfügung.
Gruß
Robert
Re: Unterformular - Monat zu Datum
Verfasst: Do 2. Apr 2015, 10:29
von tjay
Ja, das ist eignentlich genau das was ich haben will

Die Idee ansich ist echt nicht schlecht, wäre selber nie drauf gekommen. Der SQl muss aber noch ein wenig getunned werden, denn sonst zeigt er bei eingabe von

Datum = '01.02.2015' die Tage:
01.02.2015
02.02.2015
.
.
.
28.02.2015
01.03.2015
02.03.2015
03.03.2015
um das zu beheben hab ich ihn etwas umgeschrieben:
Code: Alles auswählen
SELECT
DISTINCT "Datum"
FROM
( SELECT
DISTINCT CAST( YEAR( :pDatum ) || '-' ||
CASEWHEN( "M"."Nr" < 10, '0' || "M"."Nr", '' || "M"."Nr" ) || '-' ||
CASEWHEN( "D"."Nr" < 10, '0' || "D"."Nr", '' || "D"."Nr" ) AS DATE )
AS "Datum"
FROM
"NrBis31" AS "D",
"NrBis31" AS "M"
WHERE
"M"."Nr" = MONTH( :pDatum )
AND "D"."Nr" <= 31
) "temp"
WHERE
MONTH( "temp"."Datum" ) = MONTH( :pDatum )
Ich habe aber immer noch ein Problem im Formular. Wenn ich aus diesem SQL eine Abfrage erstelle und sie als "Master"-Formular verwende, dann stürtzt entweder Base komplett ab oder ich deaktiviere im Unterformular die SQL-Analyse und bekomme die Fehlermeldung:
Code: Alles auswählen
SQL-Status: SOO10
Fehler-Code: -62
Invalid argument in JDBC call: parameter index out of range: 1
Code: Alles auswählen
Das SQL-Kommando, welches zu diesem Fehler führte, ist:
SELECT * FROM "Zeiten"
Ich werde aus den Fehlermeldungen nicht so ganz schlau,... Was mache ich da falsch?
Re: Unterformular - Monat zu Datum
Verfasst: Do 2. Apr 2015, 12:02
von RobertG
Hallo tjay,
das liegt an der für mich etwas schwer durchschaubaren Konstruktion mit mapping1 und mapping2.
Wenn Du das UnterUnterformular "Mapping1" eine Stufe hoch ziehst und direkt unter "Monate" legst, von "Monate" aus mit "pDatum" verbindest, von "Mapping1" zu "MainForm" mit "Datum" verbindest, dann werden die Datumswerte weiter gegeben.
Ich nehme an, dass da die Datumstypen nicht übereinstimmen.
Gruß
Robert
Re: Unterformular - Monat zu Datum
Verfasst: Do 2. Apr 2015, 23:51
von F3K Total
Hallo,
hatte gerade einen ähnlichen Fall. Da habe ich einen frei einstellbaren Kalender verwendet.
Das Prinzip ist ähnlich. Habe ich mit deiner Datei zusammengewürfelt, schau mal, ob es passt.
Gruß R
Re: Unterformular - Monat zu Datum
Verfasst: Mi 8. Apr 2015, 13:00
von tjay
Super vielen Dank! das ist genau das was ich nicht hinbekommen habe

Re: Unterformular - Monat zu Datum
Verfasst: Sa 23. Mai 2015, 13:42
von Brotnascher
Hi, das Beispiel scheint genau das zu sein, was ich für mein aktuelles Problem (Zeiteingabe nach Mitarbeiter und Datumsauswahl sortiert) zu sein. Ich habe versucht das ganze auf mein Problem umzumünzen bzw. nachzubauen. Hat bisher auch super geklappt, jedoch ist mir unklar wie ich die Tabelle V_KALENDER aus der letzten Beispieldatei (Zeiten_neu) erzeuge, bzw implementiere.
Vielleicht kann jemand dazu noch ein paar erklärende Worte abgegeben. Mir ist auch das dazugehörige Symbol bei den Tabellen unbekannt.
Mit freundlichen Grüßen
Martin
Re: Unterformular - Monat zu Datum
Verfasst: Sa 23. Mai 2015, 16:01
von F3K Total
Hi,
es handelt sich dabei nicht um eine Tabelle, sondern um eine Ansicht. Ist vergleichbar mit einer Abfrage, nur nicht beschreibbar/änderbar.
Mache einen Rechtsklick auf V_KALENDER -> in SQL-Ansicht bearbeiten ..., dann siehst du wie die Ansicht definiert ist.
Sie zieht sich die Zahlen zur Erzeugung des Datums aus der Tabelle T_Z und grenzt den aktuellen Bereich über die Werte VON und BIS aus der Tabelle T_FILTER ein.
Gruß R