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 :PDatum = '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

Die Dateninhalte konnten nicht geladen werden.

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 :D

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