Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Dr.Cornwallis am Mai 12, 2016, 14:10:40

Titel: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 14:10:40
Liebe Gemeinde,

vorab:

Ich bin weder ein Datenbankentwickler noch ein Access Guru, leider kam ich durch Zufall zu diesem Projekt(eig. IT Techniker).

Ziel der Db soll eine Auswertung der täglichen Arbeitszeit der Mitarbeiterin in einem ausgewählten Zeitraum sein(mit Formular Standort+Zeitraum auswählen, im Bericht anzeigen.

Ich möchte ein Access Formular basteln, bei diesem soll folgendes passieren:
Ich habe ein Kombifenster wo ich die jeweiligen Standorte auswählen kann, nun möchte ich noch zusätzlich ein 2. u. 3. Kombifenster einbauen um den Zeitraum festzulegen. Bit einem Button wird dann ein Bericht  geöffnet werden, der auf eine Abfrage zeigt.

Als Ziel soll ein Bericht geöffnet werden der alle Datensätze mit dem ausgewählten Standort + Zeitraum ausgibt.

Einen Screenshot vom prim. Table findet ihr im Anhang.

Das Problem:

Jeder Tag (1.6.2016 - 31.12.2016) ist eine eigene Spalte im Table, die eine Zahl(Arbeitszeit) enthalten.
ich möchte aber im Kombifeld nicht den Spalteninhalt auswählen, sondern die Spalte selbst.

Kann man dies irgendwie realisieren?


Danke für eure Hilfe!


Gruß

Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 14:53:03
Hallo,
grundsätzlich falscher Aufbau. Das ist Exceldenke, was für eine Datenbank unbrauchbar ist. Du brauchst eine extra Tabelle mit dem Datum als einzelnes Feld. In diese Tabelle muss der Mitarbeiter als Fremdschlüssel, jeder Tag gibt einen Datensatz und kein Feld. In diese Tabelle kommt dann auch das Feld für die Stunden. Du kannst dann völlig problemlos einen Zeitraum filtern, denn für das Datum gibt es ja nur eine Spalte.
Weiterhin wird eine extra Tabelle benötigt für die Abteilung. In der Mitarbeitertabelle ist dann nur ein Fremdschlüssel zur Abteilung.
In der Arbeitszeittabelle kommt kein Feld für die Abteilung, es sei denn die Mitarbeiter arbeiten wechselnd für unterschiedliche Abteilungen.

Was ist denn der dau#Code ?
Hast Du wirklich solche Feldnamen mit # und / ?
Das solltest Du schleunigst ändern.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: DF6GL am Mai 12, 2016, 14:56:18
Hallo,

gleich zum Eingewöhnen:  Vergiss diese Konstruktion.


Access läuft anders (als Excel). Es bedarf zunächst eine normalisierte Tabellenstruktur mit Definition von Beziehungen über die entpr. Schlüsselfelder.  Formulare und Berichte sind im Moment noch nicht an der Reihe.

Mindestaufbau:

tblMitarbeiter
MAID (PK,Autowert)
MA_Vorname (Text)
MA_Nachname (Text)
MA_PersNr ( Text, falls führende Nullen oder Buchstaben vorkommen, ansonsten Long, eindeutiger Index)
.
.
.


tblOrgEinheiten
OEID  (PK, Autowert)
OE_Name  (Text)
.
.


tblKalender  (nicht unbedingt erforderlich, aber empfehlenswert, wenn z. B. Feiertage, Brückentage, Urlaubstage usw. in irgendeiner Weise zu berücksichtigen sind---> Betriebskalender)


tblMAZeiten

MAZID (PK,Autowert)
MAZ_MAID (Long , FK zu tblMitarbeiter)
MAZ_OEID (Long, FK zu tblOrgEinheiten)
MAZ_Kreis (Long, was auch immer dies bedeutet, evtl. ist eine Tabelle tblKreise erforderlich)
MAZ_VCode  ( dito wie Kreis,  grundsätzlich KEINE SONDERZEICHEN im Namen verwenden)
MAZ_Datum (Datum/Uhrzeit,  entweder mit Datepicker ausgewählt oder bei Verwendung von tblKalender von dort ausgewählt.
MAZ_ArbZeit (Datum/Uhrzeit,  evtl. Double (oder Währung) mit Einheit "Industrieminuten" --> 1h = 100IM)
.
.
.


Alle Tabellen über die Schlüsselfelder in Beziehung gesetzt.




Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 16:02:23
Die Feldnamen kamen von dem exportierten SAP Report.
Es wird jeden Tag eine Excel vom SAP exportiert, diese beinhaltet Mitarbeiter, PersNr und Arbeitszeit(in einer Zahl zb. 8 steht für 8Stunden, Pause etc. sind bei diesem Wert bereits berücksichtigt.)Damit soll eine Auswertung entstehen, wie viele Überstunden im Zeitraum X, von Abteilung Y etc...

Ich importiere via VBA diesen SAP Report(xlsx) täglich in einen eigenen Table(SAP_EXPORT_AKTUELL), neue bzw. ausgeschiedene MA werden mit einer Abfrage(bezogen auf PersonalNr.) vom TABLE SAP_EXPORT gelöscht oder hinzugefügt. Dies ist dann der Table mit den aktuellen Mitarbeitern.

Jetzt das Problem dabei:

Ich kann die Arbeitszeiten nicht in einem Datensatz packen(und die Tage in eine Spalte), da diese beim exportieren aus dem SAP vertikal angelegt sind, weiters befinden sich in dieser Excel ca. 2000 Zeilen, da kommt Access an seine Grenzen(Spalten). Somit wäre es doch gara nicht möglich die Zeiten in einen Datensatz zu packen oder irre ich mich?

Ich bin leider der einzige IT Techniker im Unternehmen, somit kam ich ohne jegliche Vorkenntnisse zum Handkuss..War nicht meine Idee, aber ich soll jetzt das Beste daraus machen  :o...

Ps: Danke für die schnellen Antworten!

Gruß

Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: DF6GL am Mai 12, 2016, 16:22:33
Hallo,

wie auch immer,  wenn die Daten nicht wie vorgeschlagen in Access-Tabellen importiert werden können, wird es nicht zum dauerhaften Erfolg führen..

Zitatdiese beinhaltet Mitarbeiter, PersNr und Arbeitszeit
Das ist doch genau das, was gebraucht wird....  also einen DS pro MA und einer(!) Arbeitszeit. Wo die restlichen und erforderlichen Daten herkommen, z. B. der Arbeitstag (Datum) , musst Du selber erkunden. Jedenfalls ist eine Zusammenführen von Tagen (Datum) als Auflistung von Feldern in einen(!) Datensatz nicht brauchbar.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 16:26:15
Hallo,
um mit Access arbeiten zu können, ist ein normalisierter Tabellenaufbau erforderlich. Du wirst nicht umhinkommen, die Daten umzustrukturieren.
Über die Spalten so wie das jetzt ist, kannst Du nicht auswerten. Das ist nicht datenbankgerecht.
Wenn Du täglich importierst, ist das doch immer nur ein Datum, oder ?
Hängst Du dann am nächsten Tag die neuen Zeiten als Felder an, oder wie entstehen die Datumsfelder nebeneinander ?
Zitatdiese beinhaltet Mitarbeiter, PersNr und Arbeitszeit(
Das sind 3 Felder, das Datum noch dazu sind das 4 Felder.
Das sind 2000 DS jeden Tag. Da wird Access sicher eines Tages an seine Grenzen kommen. Es hängt vom gewünschten Zeitraum ab, aber 2.000.000 DS sind 1000 Tage = ca. 3 Jahre.
Reicht das ?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 16:53:56
Ok, das hat mir jemand in einem anderen Forum auch gesagt, also fang ich mit der Strukturierung noch mal von vorne an :'(.
Wie würdet ihr vorgehen? Ich fasse noch einmal zusammen:
Täglich eine Excel, die kommt vom SAP, diese beinhaltet folgende Spalten: Pers.NR, MA und die Stunden die er an diesem Tag gearbeitet hat, ca. 2000 Mitarbeiter.
Die Mitarbeiter ändern sich fast täglich, Ziel soll ein Formular sein, wo man in einem Kombifeld die Abteilung sowie den Zeitraum auswählen kann, damit soll dann ein Bericht geöffnet werden der die Arbeitszeiten der Mitarbeiter im gewählten Zeitraum darstellt, die Zeiten müssen nicht addiert oder ähnliches werden. Quasi: Mitarbeiter, PersNr, Abteilung, 1.6.2016, 2.6.2016, 3.6.2016 usw...

Danke für eure Hilfe!

Grüße
Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 17:10:44
Hallo,
einfach den Import aus SAP immer an die Tabelle als Datensatz anhängen. Mit einer Anfügeabfrage. In dieser Abfrage wird auch das Datumsfeld gefüllt.
Wo steht dann in dem SAP Import die Abteilung, kann ich nicht erkennen.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 17:24:20
Funktioniert das anhängen als Datensatz auch wenn der SAP Export immer einen anderen Namen hat(Abfrage TT.MM.JJJJ.xlsx)?
Sorry, in dieser Datei befindet sich auch die Abteilung, hab ich vorhin nicht beachtet.
Das einzige was nicht in dieser Excel enthalten ist, ist die Kostenstelle und der Bereich.
Diese habe ich in einem eigenen Table, ebenfalls mit der PersonalNr eingepflegt.

Grüße

Dr.c
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 17:29:06
Hallo,
Du kannst die Anfügeabfrage per VBA zusammenbauen und dann im VBA Code nach dem Dateinamen fragen. Die SAP Tabelle muss vorher importiert werden.
Erst dann kannst Du mit der Anfügeabfrage die Daten übertragen.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 17:39:13
Ok, soweit bin ich (denke ich) schon, ich habe 2 Abfragen die den aktuellen Import mit dem letzten Vergleich, ausgeschiedene Mitarbeiter werden entfernt, neue hinzugefügt(via VBA Code) und der Personalnummer nach sortiert(wie in der Excel)
Nur wie realisiere ich nun die Auswahl des Zeitraumes in der Abfrage?

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 18:46:19
Hallo,
die Abfrage wird auf den gewünschten Zeitbereich gefiltert.
Wie soll der Zeitbereich sein, tagweise, monatsweise ?
Und willst Du per Kombi ein Datum auswählen oder einen Monat, oder auch mehrere Monate ?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 18:52:58
Der Zeitraum bzw. der Bericht soll aus 3 Kombifeldern entstehen:
1. Feld: Abteilung
2. Feld: Von(zB. 1.6.2016)
3. Feld: Bis(zB. 7.6.2016)

Daraus soll der Bericht entstehen, der jetzige kann nur die Abteilung ausgeben, mit allen   
Arbeitszeiten die sich im Table befinden. Dieses Formular funktioniert also bis zu diesen Punkt.
Ich könnte natürlich die Abfrage jedes mal manuell ändern und das gewünschte Datum auswählen, das wäre aber zu umständlich.

Grüße

Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 19:07:48
Hallo,
aber irgendwie musst Du doch das Datum angeben, wie soll das gehen, als Feldeintrag in einem Formular ?

Bitte zeige mal den SQL Text der Abfrage die die Abteilungen zeigt.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 19:24:40
"aber irgendwie musst Du doch das Datum angeben, wie soll das gehen, als Feldeintrag in einem Formular ?"

Genau das ist mein Problem :-), ich wüsste nicht wie ich das lösen könnte, es ist mir auch klar dass ich für das Formular eine eigene Spalte für das Datum brauche, so kann ich aber nicht die Daten erfassen...es ist hoffnungslos :-).
Kann man das nicht irgendwie programmieren, dass man im Kombifeldern die Spalten auswählen kann und nicht deren Inhalt? Der Inhalt der Spalte soll dann im Bericht angezeigt werden.

In ca. 1 Stunde Teile ich einen Screenshot vom Code/Abfrage.

Danke!

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 19:30:35
Hallo,
in dem Formular werden doch keine Daten erfasst, die Daten liegen doch per Import vor. Du brauchst das Formular nur zum Filtern. Das Formular zeigt immer alle Daten an und wird dann auf die gewünschte Abteilung und den gewünschten Zeitraum gefiltert. Die Abfrage bleibt dabei unverändert.

Die Filterung erfolgt mit extra ungebunden Feldern.

ZitatIn ca. 1 Stunde Teile ich einen Screenshot vom Code/Abfrage
Kein Screenshot bitte, als Text hier rein kopieren. In Screenshots kann man die Texte nicht kopieren, die müsste man abschreiben.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 12, 2016, 22:37:11
Sorry ist doch etwas länger geworden, ich kopiere dir morgen den Text, was für einen Code soll ich posten?

Grüße

Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 12, 2016, 22:47:00
Hallo,
ZitatBitte zeige mal den SQL Text der Abfrage die die Abteilungen zeigt.
Du hast ja geschrieben, dass der jetzige Bericht die Abteilungen ausgibt. Und von diesem Bericht die Datenherkunft (Abfrage) als SQL Text.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 13, 2016, 07:28:49
Hallo,

also der SQL Text der Abfrage auf den der Bericht zeigt sieht so aus:

SELECT Rohdaten.Kostenstelle, SAP_EXPORT.[Name Mitarb#/Bewerb#], SAP_EXPORT.[OrgEinh#], SAP_EXPORT.PersNr, Rohdaten.ZUBA, Rohdaten.[DM Bereich], SAP_EXPORT.[1_Jun_2016], SAP_EXPORT.[2_Jun_2016]
FROM Rohdaten RIGHT JOIN SAP_EXPORT ON Rohdaten.[OrgEinh#] = SAP_EXPORT.[OrgEinh#];


Grüße

Dr.C
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 17, 2016, 08:53:35
Hallo,

ich dachte es wäre klar geworden, dass du einen Datensatz pro Tag brauchst und nicht separate Spalten für jeden Tag.  ???

Gehen wir also davon aus, dass der Datensatz nur eine Datumsspalte hat.
Wenn du dann ein Formular (bspw. "frmAuswahl") hast zur Vorgabe der Parameter, so könnte der SQL-Code folgendermaßen erweitert werden:
SELECT Rohdaten.Kostenstelle, SAP_EXPORT.[Name Mitarb#/Bewerb#], SAP_EXPORT.[OrgEinh#], SAP_EXPORT.PersNr, Rohdaten.ZUBA, Rohdaten.[DM Bereich], SAP_EXPORT.[Datum]
FROM Rohdaten RIGHT JOIN SAP_EXPORT ON Rohdaten.[OrgEinh#] = SAP_EXPORT.[OrgEinh#]
WHERE SAP_EXPORT.[OrgEinh#] = Forms!frmAuswahl!txtOrgEinh AND SAP_EXPORT.[Datum] BETWEEN Forms!frmAuswahl!datvon AND Forms!frmAuswahl!datbis;


Oder du filterst beim Öffnen des Berichts:
DoCmd.OpenReport "repName", acViewPreview, , "SAP_EXPORT.[OrgEinh#] = " & Me!txtOrgEinh & " AND SAP_EXPORT.[Datum] BETWEEN " & Format(Me!datvon, "\#yyyy\/mm\/dd\#") & " AND " & Format(Me!datbis, "\#yyyy\/mm\/dd\#")
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 18, 2016, 10:25:32
Hallo,

das Problem ist dass täglich 2000 Zeilen vom SAP exportiert werden, also muss man die (Arbeits)Zeiten in eine eigene Spalte packen da Access keine 2000 Datensätze speichern kann, ansonsten wäre ich schon längst fertig :-).

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 18, 2016, 10:39:28
Du sprichst von Zeilen und Datensätzen, da ist die Zahl 2000 kein Problem für Access!

PS:
Zeig doch mal ein Beispiel einer aus SAP exportierten Datei, dann sehen wir weiter.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 18, 2016, 10:55:18
Hallo,
Zitatda Access keine 2000 Datensätze speichern kann
wie kommst Du darauf ?
Selbst 2.000.000 sind da keine Hürde.
Wohlgemerkt, Datensätze, so wie Du es geschrieben hast.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 18, 2016, 13:18:01
hab mal einen Screenshot vom Sap Export gemacht, dieser komm täglich neu auf das Netzlaufwerk, beinhaltet immer 1500-2000 Mitarbeiter inkl. deren Arbeitszeit etc....

Ich habe diese Datei einmal transponiert(Ausrichtung von vertikal auf horizontal) damit ich die Arbeitszeiten in eine Zeile packen kann, da war bei glaube 255 Schluss. Würde ich pro Tag ein Feld her nehmen, dann könnte ich die Arbeitszeit in dieses Feld importieren, aber wie wähle ich dann in einem Bericht den Zeitraum aus?


Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 18, 2016, 13:24:49
Hallo,

die Datei ist doch perfekt! Von der Idee des Transponierens solltest du dich endlich verabschieden. Die Tage gehören nicht nebeneinander sondern untereinander.

Wie du das später in einem Formular oder Bericht darstellst, ist eine ganz andere Sache. Da kannst du bei Bedarf eine Kreuztabellenabfrage einsetzen, um die gewünschte Ansicht zu erhalten.

Zitataber wie wähle ich dann in einem Bericht den Zeitraum aus?
Eben drum (!) speichert man die Daten separat, insbesondere zugunsten der besseren Auswertbarkeit.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 18, 2016, 13:35:21
ja aber wenn ich die Arbeitszeit täglich untereinander einfüge(hab ich das richtig verstanden?), wie schaffe ich dann einen Bezug zu den dazugehörigen Mitarbeitern bzw. zum Datum?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 18, 2016, 13:57:29
Ich meine, das wurde bereits gesagt, lediglich die folgenden Datenfelder werden in der Tabelle benötigt:
PersNr, Datum, Stunden  (evtl. weitere)
Praktisch genauso wie du sie geliefert bekommst, nur das Datum musst du beim Import hinzufügen.

PS:
"untereinander" heißt: in separaten Datensätzen speichern, also zeilenweise in Excel-Denke.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 18, 2016, 14:09:26
Zitat von: MaggieMay am Mai 18, 2016, 13:57:29
Ich meine, das wurde bereits gesagt, lediglich die folgenden Datenfelder werden in der Tabelle benötigt:
PersNr, Datum, Stunden  (evtl. weitere)
Praktisch genauso wie du sie geliefert bekommst, nur das Datum musst du beim Import hinzufügen.

PS:
"untereinander" heißt: in separaten Datensätzen speichern, also zeilenweise in Excel-Denke.

Ok gut und wie mache ich das mit dem Datum am Besten? dh. im Table wo täglich die Arbeitszeit importiert wird, muss auch dann noch ein zusätzl. Feld mit "Datum" eingefügt werden!?
Ich habe nochmal von vorne angefangen, meine derzeitigen Tables sehen so aus(Anhang):

Jetzt also noch beim Table "Korridor" eine Spalte/Feld mit "Datum" einfügen?

Danke für eure/deine Geduld!

Gruß

Dr.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 18, 2016, 14:45:39
Wenn die aus SAP exportierte Tabelle das Datum bereits enthalten würde wäre das natürlich optimal und würde der Fehlervermeidung dienen. Andernfalls musst du das Datum halt beim Import angeben, entweder per Formular oder Parameterabfrage.

Ansonsten brauchst du noch eine Personaltabelle mit allen mitarbeiterbezogenen Daten. In der täglich fortzuschreibenden Tabelle mit den Stunden brauchst du dann nur noch die Personalnummer als Referenz.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 18, 2016, 18:26:39
Hallo,
die Tabelle "Datentage" ist verzichtbar. In die Accesstabelle muss nur ein Feld für das Datum für das die Zeiten gelten. Monat und KW ist ohnehin überflüssig, da sich beides aus dem Datum ableiten lässt.

Du solltest auch unbedingt die Sonderzeichen (# /) aus den Feldnamen entfernen. Besonders der Gartenzaun (#) der Datumswerte kennzeichnet.

Die Tabellennamen finde ich verwirrend. Da gibt es die Tabelle Rohdaten, die ich als SAP Import erkennen würde. Aber da gibt es keinen Bezug zum MA.

Irgendwie denkst Du immer noch viel zu kompliziert. Das ist alles viel einfacher als Du denkst.
In der Accesstabelle werden 3 (mit PK 4) Spalten benötig (wie bereits gesagt).
In dem Datumsfeld kannst Du dann beliebige Zeiträume filtern, (KW, Monat, Jahr), alles über das eine Feld. Die Tabelle verlängert sich mit neuen Daten immer nach unten. Jeden Tag um 2000 DS.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 09:44:16
IHR SEID DIE BESTEN!!!!
Jetzt habe ich es verstanden(hat etwas gedauert), ich musste einfach mein Excel Denken deaktivieren :-).
Daten werden erfasst, mit einer Anfügeanfrage füge ich täglich die Werte an den Table an(werde ich noch automatisieren). Somit fällt auch dieser dämliche Abgleich (ob neuer oder ausgeschiedener MA) weg, Hammer!

Jetzt habe ich allerdings noch eine letzte Hürde(der eigentliche Grund für diesen Thread):
Mit meinen drei Kombifeldern im Formular kann ich nun die Abteilung und das Datum aus den Tables auswählen(von und bis).

Wie muss der VBA Code des Buttons(Befehl57_Click()) aussehen damit folgendes passiert:

1. Kombifeld = Abteilung auswählen (Daten vom Table Rohdaten)
2. Kombifeld = von(Datum) (Daten vom Table Korridor) Format tt.mm.jjjj
3. Kombifeld = bis(Datum) (Daten vom Table Korridor) Format tt.mm.jjjj

Nun soll ein Bericht(bereits vorhanden) geöffnet werden(bis dahin habe ich den Code), der die Werte der Abteilung im ausgewählten Zeitraum ausgibt.

So sieht mein Code bis jetzt aus:

DoCmd.OpenReport "Bericht Korridor", acViewPreview, wherecondition:="ZUBA = '" & Me!txtOrgEinh.Value & "' AND Datum >= " & Me!datvon.Value & " AND Datum <= " & Me!datbis.Value

Vielen Dank für eure Hilfe!


Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 19, 2016, 11:56:23
Hallo,
das mit dem Datum geht so nicht. Datumswerte müssen SQL Konform verwendet werden entweder ISO Format (jjjj.mm.tt) oder US Format (mm.tt.jjjj).
Die Formateinstellung des Datumsfeldes ist dabei unbedeutend.

Siehe hierzu:
FAQ 6.8 Datum an SQL-String übergeben  (http://www.donkarl.com?FAQ6.8)
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 11:58:51
Hallo,

das Datenfeld ZUBA ist vom Typ Text? Dann sollte es folgendermaßen klappen:
DoCmd.OpenReport "Bericht Korridor", acViewPreview, , "ZUBA = '" & Me!txtOrgEinh & "' AND Datum >= " & Format(Me!datvon, "\#yyyy\/mm\/dd\#") & " AND Datum <= " & Format(Me!datbis, "\#yyyy\/mm\/dd\#")

BTW:
"Datum" ist ein reservierter Name und sollte besser nicht für eigene Objekte verwendet werden.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 12:04:16
ZUBA ist eine Zahl, das Datum ändere ich noch um in das og. Format um. Ich melde mich sobald ich fertig bin.

Danke nochmal!

Lg

Mario
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 12:05:14
ZitatZUBA ist eine Zahl
Dann lass die Hochkommata weg.

Zitatdas Datum ändere ich noch um
Was meinst du damit? Das Datenfeld sollst du nicht ändern, aber du musst die Format-Funktion so wie oben gezeigt auf die Formularfelder anwenden.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 12:32:05
Zitat von: MaggieMay am Mai 19, 2016, 12:05:14
ZitatZUBA ist eine Zahl
Dann lass die Hochkommata weg.

Zitatdas Datum ändere ich noch um
Was meinst du damit? Das Datenfeld sollst du nicht ändern, aber du musst die Format-Funktion so wie oben gezeigt auf die Formularfelder anwenden.

Ich habe den Inhalt im Feld umgeändert (von dd.mm.yyyy auf yyyy.mm.dd)
Das Feld selbst habe ich umbenannt auf "Periode" und den Code etc. ebenfalls angepasst.
Klicke ich den Button, popt ein Fenster auf wo ich die Abteilung(ZUBA) eingeben muss, anschließend auch das Datum obwohl alles bereits in den Kombifeldern ausgewählt ist.

Was mache ich da falsch?



Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 12:38:46
Ok die Auswahl funktioniert jetzt nach dem Entfernen der Hochkommas :-).

Eine Frage noch:

wie setze ich die Beziehung zwischen den Tables "Rohdaten" und "Korridor"?
Die OrgEinh soll dafür als Schlüssel dienen(ist in beiden Tables enthalten).

Danke !

Gruß Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 19, 2016, 13:00:38
Hallo,
ZitatIch habe den Inhalt im Feld umgeändert (von dd.mm.yyyy auf yyyy.mm.dd)
nein, das ist völlig bdeutungslos. Das habe ich auch oben geschrieben. Das Datum muss in dem SQL String formatiert werden, wie von MaggieMay beschrieben und in meinem Link (FAQ...) erläutert. Das hat mit dem eingestellten Format nichts zu tun, das ist wurscht.

ZitatDie OrgEinh soll dafür als Schlüssel dienen(ist in beiden Tables enthalten).
Über diese Felder läuft auch die Beziehung.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 13:57:22
Ich denke ich habe die Hochkommas falsch entfernt, jetzt wurde der Rest des Codes aus kommentiert.
Bitte noch einmal für Idioten, wo muss ich die Hochkommas entfernen damit die "ZUBA" als Zahl definiert wird?

Gruß und Danke!
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 14:02:00
Zitatwo muss ich die Hochkommas entfernen
Du musst halt unterscheiden zwischen Hochkomma (') und Gänsefüßchen ("), dann gibt es eigentlich nur eine Wahl.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 14:09:59
Jetzt habe ich einen Syntax Fehler(siehe Screenshot)

DoCmd.OpenReport "Bericht Korridor", acViewPreview, , "ZUBA = " & Me!txtOrgEinh & "' AND Periode >= " & Format(Me!datvon, "\#yyyy\/mm\/dd\#") & " AND Periode <= " & Format(Me!datbis, "\#yyyy\/mm\/dd\#")
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MzKlMu am Mai 19, 2016, 14:13:16
Hallo,
auch für Az (") und Hochkomma (') gilt grundsätzlich nur paarweise verwendbar. Daher hilft zählen.  ;D
Das Hochkomma vor And ist falsch.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 14:19:40
Sorry, ja das habe ich übersehen :-).
Dennoch kommt jetzt wieder dieses dämliche Fenster "Parameterwert eingeben" obwohl alles bereits in den Kombifeldern ausgewählt ist.
Es ist zum verzweifeln...
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 14:45:00
Ist denn "txtOrgEinh" der Name des Kombifeldes?

Was genau steht denn in dem Parameterfenster, wofür wird die Eingabe verlangt?

Und/oder:
Setze mal einen Haltepunkt in den Code und schau dir an, was die einzelnen Steuerelemente tatsächlich enthalten.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 14:59:28
Zitat von: MaggieMay am Mai 19, 2016, 14:45:00
Ist denn "txtOrgEinh" der Name des Kombifeldes?

Was genau steht denn in dem Parameterfenster, wofür wird die Eingabe verlangt?

Und/oder:
Setze mal einen Haltepunkt in den Code und schau dir an, was die einzelnen Steuerelemente tatsächlich enthalten.

Habs jetzt so weit dass das Formular meine Eingaben akzeptiert, nur wird einfach nichts gefiltert.
Ich habe jetzt mal die Beziehung unter die Lupe genommen, dort steht bei Beziehungstyp: Undefiniert.
Glaube es liegt auch daran, ich wähle eine ZUBA(Rohdaten) aus, anhand der OrgEinh müsste er dann die dazugehörigen Daten finden, da die OrgEinh der beiden Tables verknüpft sind(siehe Screenshot).
Schätze mal es liegt am Beziehungstyp...
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 15:06:06
Hi,

zeig doch bitte mal den SQL-Code der dem Bericht zugrunde liegenden Abfrage.

PS:
Beziehungen sollten grundsätzlich mit referentieller Integrität eingerichtet werden, aber damit hat der Fehler hier nichts zu tun.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 15:07:04
SELECT Korridor_Daten.PersNr, Korridor_Daten.Mitarbeiter, Rohdaten.[OrgEinh#], Rohdaten.Kostenstelle, Rohdaten.[DM Bereich], Korridor_Daten.Anzahl
FROM Korridor_Daten INNER JOIN Rohdaten ON Korridor_Daten.OrgEinh = Rohdaten.[OrgEinh#];
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 15:07:54
Wo in der Abfrage siehst du das Datenfeld ZUBA??
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 15:11:53
Das hätte ich eigentlich eingefügt und den Haken bei "anzeigen" entfernt, da es im Bericht überflüssig wäre, warum es jetzt nicht im SQL Text angezeigt wird, verstehe ich auch nicht.
Heißt das also die ZUBA sowie die Periode müssen angezeigt werden(in der Query)?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 15:16:06
Zitatwarum es jetzt nicht im SQL Text angezeigt wird, verstehe ich auch nicht.
Naja, vielleicht weil du den Haken rausgenommen hast?!  :P

Natürlich müssen die Datenfelder nach denen du filtern willst auch in der Abfrage enthalten sein.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 19, 2016, 15:20:13
Trotzdem funktioniert der Filter nicht, auch wenn ich alles einblende... Öffnet man einfach die query, passt die Beziehung, also daran kann es nicht liegen.
Der Filter wird einfach nicht akzeptiert/genutzt...
Ich bin normalerweise kein Trinker aber heute brauch ich einen Schnaps :-)
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 19, 2016, 16:04:26
Dann zeig doch bitte nochmal den aktuellen Stand deines Codes (SQL + VBA).
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 08:58:23
Hallo,

so weit so gut, jetzt funktioniert die Auswahl im Formular:
DoCmd.OpenReport "test_Kreuztabelle2", acViewPreview, WhereCondition:="ZUBA = " & Me!txtOrgEinh & " AND Periode BETWEEN #" & Format(datvon.Value, "yyyy\/mm\/dd") & "# AND #" & Format(datbis.Value, "yyyy\/mm\/dd") & "#"


Nun habe ich eine Kreuztabelle erstellt, damit das Datum als Spaltenüberschrift angezeigt wird, jetzt zum nächsten Problem:

MIt dem Bericht der aus der Kreuztabelle entsteht, funktioniert die Auswahl im Formular wieder nicht, meine Vermutung:

Er findet die Datumswerte nicht da diese jetzt als Überschrift dienen.

Kann man dies irgendwie umgehen?


Danke!

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: DF6GL am Mai 25, 2016, 10:55:31
Hallo,

möglicherweise klappt es deshalb nicht:



DoCmd.OpenReport "test_Kreuztabelle2", acViewPreview, WhereCondition:="ZUBA = " & Me!txtOrgEinh & " AND Periode BETWEEN #" & Format(Me!datvon, "yyyy\-mm\-dd") & "# AND #" & Format(Me!datbis, "yyyy\-mm\-dd") & "#"


Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 10:59:50
Hi,

ich denke die Vermutung, dass der auf der Kreuztabellenabfrage basierende Bericht nicht mehr nach dem Datum gefiltert werden kann, ist schon ganz richtig. Die Filterung müsste also vor oder in der KT-Abfrage passieren.

Wenn du dazu Hilfe brauchst, zeige bitte den SQL-Code der KT-Abfrage.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 11:04:33
Hallo,
@df6: du meinst also ich soll die rot markierten Zeichen entfernen?

@MaggieMay: habe ich dann nicht wieder das Problem dass die Daten nicht aktualisiert werden?
Es kommen täglich 2000 neue Datensätze in den Table.

Dieses Projekt raubt mir noch den letzten Nerv!

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 11:11:57
@Dr.:
Ich kann dir nicht ganz folgen. Was hat das Filtern einer Kreuztabellenabfrage bzw. eines Berichts mit der Aktualisierbarkeit einer Tabelle zu tun?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 11:38:01
Damit das neue Datum quasi autom. im Bericht angefügt wird.
Es hat keinen Sinn, ihr gebt euer Bestes um mir zu helfen, aber ein komplettes Projekt in einem Forum zu realisieren ist einfach unmöglich.

Werde mal mit dem Chef reden dass so etwas eine Zumutung für jemanden ist, der mit dieser Materie keinerlei Erfahrung hat.

Gruß

Dr.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 11:43:18
Zitat von: Dr.Cornwallis am Mai 25, 2016, 11:04:33
Hallo,
@df6: du meinst also ich soll die rot markierten Zeichen entfernen?

@MaggieMay: habe ich dann nicht wieder das Problem dass die Daten nicht aktualisiert werden?
Es kommen täglich 2000 neue Datensätze in den Table.

Dieses Projekt raubt mir noch den letzten Nerv!

Gruß

Dr.

Sorry, hab ich vorhin übersehen, hier der Code:

TRANSFORM Sum(Korridor_Daten.Anzahl) AS SummevonAnzahl
SELECT Korridor_Daten.Mitarbeiter, Rohdaten.ZUBA
FROM Rohdaten INNER JOIN Korridor_Daten ON Rohdaten.[OrgEinh#] = Korridor_Daten.OrgEinh
WHERE (((DateSerial(Year([Periode]),Month([Periode]),1))=DateSerial(Year(Now()),Month(Now()),1)))
GROUP BY Korridor_Daten.Mitarbeiter, Rohdaten.ZUBA
PIVOT DateAdd("d",-(Weekday([Korridor_Daten]![Periode],1))+IIf(Weekday([Korridor_Daten]![Periode],7)=1,1,8),[Korridor_Daten]![Periode]);


DatAdd und DatSerial hat nicht geholfen, bzw. erreiche ich damit nicht das gewünschte Ergebnis.


Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: DF6GL am Mai 25, 2016, 11:57:49
Hallo,

nein, nicht entfernen, sondern korrigieren.....

wobei sich das nur auf richtige Formatierung eines Datumswertes bezieht und nicht unbedingt auf die Lösung Deines Problems.


IN Sql muss entweder das USA-Format oder das ISO-Format verwendet werden:

USA:  #31/12/2016#
ISO:   #2016-12-31#
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 13:35:52
Hi,
Zitat von: Dr.Cornwallis am Mai 25, 2016, 11:43:18DatAdd und DatSerial hat nicht geholfen
wer oder was hat dich denn auf diese Idee gebracht?

So hätte ich mir das vorgestellt:
TRANSFORM Sum(Korridor_Daten.Anzahl) AS SummevonAnzahl
SELECT Korridor_Daten.Mitarbeiter, Rohdaten.ZUBA
FROM Rohdaten INNER JOIN Korridor_Daten ON Rohdaten.[OrgEinh#] = Korridor_Daten.OrgEinh
WHERE ZUBA = Forms!formname!txtOrgEinh AND Periode BETWEEN Format(Forms!formname!datvon, "\#yyyy\/mm\/dd\#")  AND Format(Forms!formname!datbis, "\#yyyy\/mm\/dd\#")
GROUP BY Korridor_Daten.Mitarbeiter, Rohdaten.ZUBA
PIVOT DateAdd("d",-(Weekday([Korridor_Daten]![Periode],1))+IIf(Weekday([Korridor_Daten]![Periode],7)=1,1,8),[Korridor_Daten]![Periode]);

wobei ich jetzt den PIVOT-Eintrag jetzt einfach mal übernommen habe, in der Annahme dass das so gewollt ist.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 13:44:18
Danke für deine Mühe, muss ich dann wahrscheinlich noch den Code vom Button ändern(das der Bericht ohne Bedingung geöffnet wird)?

Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 13:53:19
Öffne ich die Kreuztabelle manuell oder fülle das Formular aus, erhalte ich folgende Fehlermeldung(Anhang).
Code wurde an mein Formular natürlich angepasst.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 13:56:21
Zitat von: Dr.Cornwallis am Mai 25, 2016, 13:44:18
muss ich dann wahrscheinlich noch den Code vom Button ändern(das der Bericht ohne Bedingung geöffnet wird)?
Ja, klar.

Zitaterhalte ich folgende Fehlermeldung
Die Gültigkeit der Namen kannst nur du überprüfen.
Gut möglich, dass die Parameter in der Abfrage deklariert werden müssen.
Wenn aber nur der eine angemeckert wird, liegt es wohl doch eher am Namen.

Ansonsten:
Parameters Forms!formname!txtOrgEinh Integer, Forms!formname!datvon Date, Forms!formname!datbis Date;als erste Zeile in die Abfrage einfügen.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 14:03:51
also der Inhalt vom Kombifeld txtOrgEinh(sollte ich mal auf txtZUBA umändern) ist eine Zahl, die Orgeinheit selbst ist ein Text.
Hab den Code eingefügt, klappt dennoch nicht...vllt. Lust auf TeamViewer? :-) -> doch nicht, Firewall ist dagegen :-)

Gruß Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 14:30:47

Zitatwobei ich jetzt den PIVOT-Eintrag jetzt einfach mal übernommen habe, in der Annahme dass das so gewollt ist.

lassen wir das mal weg :-)
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 14:58:01
Du könntest eine Beispiel-DB hochladen mit dem zum Nachstellen des Problems benötigten Objekten (Formular, Abfrage(n), Bericht).
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 15:18:46
Ok, kann ich machen, das einzige Problem ist dass ich den Bericht nicht aus der Kreuztabelle erstellen kann, da bereits bei der Kreuztabelle das Problem entsteht bzw. dieser bei der Datenblattansicht bereits auftritt. Also kann ich keine Felder für den Bericht auswählen.
Moment ich erstelle kurz diese DB und lade sie dann hoch

Gruß

Dr.

Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 15:35:51
DB ist leider zu groß, hat etwas über 1000KB...
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 25, 2016, 15:40:36
So jetzt aber...DB im Anhang, natürlich nur mit dem relevanten Tables,Forms und Querys.
Im Table Korridor_Daten sind normalerweise 1000e von diesen Datensätzen


Gruß

Dr.
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: DF6GL am Mai 25, 2016, 16:16:40
Hallo,


lies mal hier:

http://www.donkarl.com/?FAQ3.18
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 25, 2016, 16:18:49
Du musst bei der Deklaration der Parameter in der KT-Abfrage natürlich auch den korrekten Formularnamen angeben, sonst wird das nichts.

Kannst du bitte mal mit Worten erklären, was du mit dem Pivot-Ausdruck (DateAdd...) bezweckst? Wieso ermittelst du den Wochentag mal auf Basis von 1 (=Sonntag) und 7 (=Samstag) als ersten Wochentag der Woche?
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: Dr.Cornwallis am Mai 27, 2016, 08:08:28
Zitat von: DF6GL am Mai 25, 2016, 16:16:40
Hallo,


lies mal hier:

http://www.donkarl.com/?FAQ3.18

Ein paar Posts weiter oben hat mir MaggieMay bereits den SQL Code dafür geschrieben, klappt trotzdem nicht.
@Maggie: ich habe die diesen Code geändert um zu verstehen was dieser Code macht.

Gruß
Titel: Re: Hilfe bei Kombifeld und Formular
Beitrag von: MaggieMay am Mai 27, 2016, 10:45:12
Hallo,
Zitat von: Dr.Cornwallis am Mai 27, 2016, 08:08:28@Maggie: ich habe die diesen Code geändert um zu verstehen was dieser Code macht.
ich weiß jetzt nicht recht, was du mir damit sagen willst.

Hast du die Parameters-Deklaration korrigiert? Dann sollte das klappen.

Die Erklärung bzgl. des PIVOT-Ausdrucks hätte ich auch noch gern.