Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Makro liest nur die erste ROW einer Spalte

Begonnen von LukkiNoob, März 14, 2023, 18:19:29

⏪ vorheriges - nächstes ⏩

LukkiNoob

Hallo und Guten Abend :)

Ich hoffe ich bin im Richtigen Abteil gelandet.
Erstmal hoffe ich natürlich das alle bei bester Gesundheit sind und es allen soweit gut geht :3

Ich brauche Hilfe bei einem kleinen Projekt.
Ich habe zwei Datenbanken
-tblMitarbeiter
-tblAufgaben

Dazu habe ich eine Abfrage erstellt in welcher ich die beiden Tabellen in Beziehung
-Mitarbeiterabfrage

Hinzu kommt jetzt der Pikante teil, das Formular
-Mitarbeiterabfrage

An sich wollte ich nun folgendes:
In dem Formular "Mitarbeiterabfrage" sind zwei Textfelder "TextID" und "TextKey" und eine Schaltfläche.
Ich dachte mir nun, so einfach wie ich gestrickt bin. Ich könnte einfach via Makro und richtiger Zuweisung es so hinbekommen das er die Eingaben in dieser Textfelder mit den Spalten der Tabelle -tblMitarbeiter- vergleicht und bei richtiger Eingabe das nächste Formular öffnen.
Also ich muss sagen ich habe es zum Teil hinbekommen.
Dies sieht jetzt so aus
Sie dürfen in diesem Board keine Dateianhänge sehen.
und Vollständigkeitshalber nochmal die Beziehung die ich zwischen den beiden Tabellen geschlossen habe.
(Siehe Anhang)
Problem ist jetzt.
Das meine aktuelle Konstellation immer nur die erste Reihe der beiden Spalten abgleicht.
Als Beispiel:
ID|SBKey
1 |1234 <-Im Stande abzugleichen
2 |1234 <-Wird nicht mit einbezogen

Hat jemand Rat.
Natürlich kann man das ganze mit VBA und Dlookup machen. Aber da bin ich ehrlich habe ich massive Syntaxprobleme. :(
Mir wäre es von daher schon wichtig auch diesen Schritt jetzt noch also den "Login" auf diesen weg hinzubekommen.
Ich bin mir fast sicher, dass ich hier noch definieren kann/müsste in welchen Reihen er nachprüfen soll
[ID]"" & [SBKey]""=[TextID] & [TextKey]


Ich hoffe ich konnte mein Problem ausführlich beschreiben und habe jetzt niemandem Anlass geboten die Hände über den Kopf zuschlagen :D

Beste Grüße
Lukas

MzKlMu

#1
Hallo,
Ich habe nichts verstanden.
Du hast auch keine 2 Datenbanken, sondern 2 Tabellen in einer Datenbank.
Sind das die Beziehungen oder die Verknüpfungen einer Abfrage?
Unabhängig von den Verknüpfungen sind auch Beziehungen anzulegen.
Da ist dann auch referentielle Integrität einzustellen.
Zeige also bitte mal ein Bild des Beziehungsfensters.
Gruß Klaus

LukkiNoob

Danke erstmal für die Antwort :)

Sie dürfen in diesem Board keine Dateianhänge sehen.

Hier sind noch die Beziehungen und die referentielle Integrität ist gesetzt.

Und naja tut mir leid, das ich mein Anliegen nicht verständlich rüberbringen konnte.
An sich geht es sich halt nur um ein Login.
Ich habe soweit alles fertig.
Nur eben das Problem, dass er wenn ich aus einem Formular-Textfeld Werte mit der Tabelle abgleiche, nur die erste Reihe abgeglichen wird.
In der Tabelle tblMitarbeiter werden die rows 2,3,4,5,6,7,8,9,10 trotz Inhalt gar nicht überprüft.



MzKlMu

Hallo,
es ist mirimmer noch ein Rätsel was Du da vorhast.
Zitatrows 2,3,4,5,6,7,8,9,10 trotz Inhalt gar nicht überprüft.
Welche Rows meinst Du denn da die Spalten der Tabelle ? Was willst Du da vergleichen ?
Und ich denke Du hast Aufgaben, wo ist da ein Login ?

Erkläre mal das Vorhaben mit anderen Worten und in Gänze.
Gruß Klaus

LukkiNoob

#4
Guten Morgen :)

Ich wollte hier auch nicht der Rätselmeister sein :D
Also es geht sich mir darum.

Aktuell öffnen meine Mitarbeiter eine Exceltabelle wo sie ihre täglichen Aufgaben in einzelnen Bereichen angezeigt bekommen(Nur als Stückzahl) Das dient ihnen ledig morgens als Orientierung wieviel ansteht.

Doch es kommt immer wieder dazu, dass einzelne Mitarbeiter sich verlesen, oder in der falschen Spalte sind, oder in der falschen Mappe. So entsteht dann meistens zur Mittagszeit wenn es auffällt Streitigkeiten.
(Ist eine Pädagogische Hilfseinrichtung)

Ich habe jetzt schon alles durchweg versucht in Excel mit Formatierung und wie oben erwähnt mit Mappen.
Aber Fakt ist. Jeder darf nur Zugriff auf seine eigenen Zahlen haben damit sowas nicht weiter vorkommt.

Meine Aufgabe ist es, morgens aus einer Exceltabelle die Arbeiten nach Schwierigkeit und Fachgebiet auf die einzelnen Mitarbeiter aufzuteilen. Bzw festzulegen wie viel jeder in den einzelnen Bereichen zu erledigen hat.

Gerade weil es in letzter Zeit öfter zu Streitigkeiten gekommen ist, suche ich nach einer Lösung.

Deswegen habe ich nun für die Datenbank -Aufgaben - ein Formular erstellt. Welche sich beim Laden automatisch auf die Eingabe des vorangegangen Formulars filtert.
Das vorangegangene Formular soll halt für meine Mitarbeiter das Startformular sein (Wie ein Login = nicht wirklich ein Login)
Zwei Zahlen [ID] [SBKey] die nur der Mitarbeiter kennt und in zwei Textfelder einzutragen sind und durch knopfdruck zu bestätigen.


____________________Was ich mir dachte?_______________________________
Ich möchte jedem Mitarbeiter seine ID und eine vier stellige Pin zuweisen.
Der Mitarbeiter hat dann die Möglichkeit diese im Startformular einzugeben sodass im darauf folgenden Formular nur seine Werte angezeigt werden die ich seiner ID Unter der Tabelle -Aufgaben- am morgen zugewiesen habe.
Dann mit einem Button das Formular wieder schließen.
Dann gehe ich Nachmittags, nachdem ich alle verabschiedet habe hin und ziehe mir ohne die MitarbeiterID aus der Tabelle -tblAufgaben- einen Bericht. Die MitarbeiterID nehme ich natürlich bewusst raus, es geht sich mir nicht um ein Protokoll. Aber muss ich meinem Vorgesetzten dennoch was vorlegen.
Jede Zahl spricht halt für eine "Arbeitsbeschaffungsmaßnahme"
___________________Was habe ich also schon?____________________________
An sich ist alles andere soweit fertig.
Nur das wie erwähnt mein oben gennantes Makro nur die erste row (Spalten sind doch die in der horizontalen? Ich meine aber hiermit die vertikale also nach unten)
Das Makro wählt die Spalte (Horizontale, also oben) ja auch an. Geht aber nur in die erste Reihe (Vertikale, nach unten)
Da ich aber 12 zu betreuende heranwachsende habe, muss dieses Makro"[ID] & [SBKey]=[TextID] & [TextKey]"
im Stande sein, mindestens 12 Reihen in der Tabelle -tblMitarbeiter einzubeziehen.

Ich bin mir Sicher das in meinem Makro
[ID] & [SBKey]=[TextID] & [TextKey]
Enfach nur einen Verweis für die reihen fehlt
Als Beispiel:
[ID]"" & [SBKey]""=[TextID] & [TextKey]

Denn es funktionieren ja mit der ersten Reihe aus -tblMitarbeiter. Ich möchte aber das es mit allen reihen abgleicht.
Aber warum gleicht er es nur mit der ersten Reihe? (Ich hoffe ich konnte klarmachen was ich mit Row meinte)
Hier nochmal visuell
Sie dürfen in diesem Board keine Dateianhänge sehen.

Er liest halt nur die blau hinterlegte 1 1234. Also wenn ich die erste Reihe jetzt lösche. Komm ich mich mit dem Makro und der Eingabe von 2 1234 in die beiden Textfelder weiter ins nächste Formular.

Edit:
Ich habe jetzt nur mal die Umgebung nachgebaut mit dem wo es jetzt hängt, schon aus lernzwecken.
Mit dem was ich vorhabe, kann man mir das da am besten zeigen, sodass ich es selber auf das bestehende anwenden kann?
Sie dürfen in diesem Board keine Dateianhänge sehen.

Vorausgesetzt ich konnte vermitteln wohin es gehen soll :D


Beste Grüße
Lukas

Beaker s.a.

Hallo Lukas,
Das Datenmodell stimmt so nicht.
1. die Spalten in Aufgaben müssen Zeilen (Datensätze) sein
2. zwischen MA und Aufgaben würde ich eine Zwischentabelle (n:m)
einbauen, um einzelne Aufgaben, vor allem auch mit einem Datum
den MA zuordnen zu können, dann auch mehrere an einem Tag möglich
3. Beziehungen sind mit dem Typ 1 anzulegen, - andere Typen werden
in Abfragen (heisst dort Verknüpfung) realisiert wenn nötig.
4. Macros vergiss mal ganz schnell wieder. Die verwendet hier
keiner (ausser den Anfängern), weshalb du dazu auch eher wenig Hilfe
erwarten kannst.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

#6
Hallo,
habe jetzt erst gesehen, dass da eine Beispieldb dabei war.
Aber ekkehard hat schon alles gesagt, das Datenmodell ist falsch. Hier sind 4 Tabellen notwendig.
- Mitarbeiter
- Aufgaben (je ein Datensatz)
- AufgabenJeTag (PS und Datum ggf. noch weitere Felder zum Tag/Datum
- AufgabenZuteilung (FS zu Mitarbeiter, FS zur Aufgabe, FS zu AufgabenJeTag, ggf. Erledigungsvermerk/Datum)
FS=Fremdschlüssel
Wahrscheinlich ist auch noch eine Kalendertabelle sinnvoll.

Das muss zwingend umgebaut werden, so wie das jetzt ist, ist das für eine Datenbank ungeeignet.
Gruß Klaus

LukkiNoob

Hallo Ekkehard

1. Du meinst also das die Arbeiten in den Zeilen aufgeführt werden soll und nicht in den Spalten?
2.Das ist aufjedenfall ein Argument, aber ist es denn notwendig wenn dies nicht nötig ist.
In meinen 7 Jahren hier in der Einrichtung habe ich an der morgentlichen Zuweisung nie was ändern. Ich möchte auch nichts groß protokollieren. Sondern nur einmal am Tag jeden das aufrufen lassen. Das Datum habe ich auch nur für die Damen und Herren zur orientierung als Tagesdatum drin.
3.Danke für den Tipp. Habe es direkt geändert.

4. Naja gut, wenn du das direkt so sagen kannst. Schade.
Hatte halt gehofft, dass hier jemand weis was meinem Makro einfach fehlt. Oder jemand So lieb wäre das auf meine Struktur anzuwenden.
Ansonsten mache ich wohl einfach Unsichtbare Textfelder x Summe Mitarbeiter wo ein Wert drinnen der die Summe aus ID+Code wiederspiegelt.
Klar muss ich dann das Makro x Mitarbeiter an den Button binden.
Wenn - Oder - Oder - Oder - Oder - Oder - Oder - Oder - Oder - Oder - Dann :D
Mir wäre es am liebsten ab morgen eine Lösung zu haben, in meiner Einrichtung ist jede Quelle für Streitigkeiten im Keim zu ersticken, da wenn es dazu kommt nicht selten zu schweren Körperverletzungen kommt. (Und das wegen Kleinigkeiten)

Und ich möchte natürlich ehrlich sein, es geht sich mir jetzt vorwiegend um eine Schnelle Lösung.
Es ist vielleicht Frech, aber kann mir das jemand nur so Blanco machen?
Also nur das es mit dem einem Formular klappt, das er es mit der tblMitarbeiter abgleicht und das Folgeformular öffnet.
Sodass ich bei den Aufgaben undso noch selber Hand anlegen muss.

Aber so sehe ich auch besser die Unterschiede was du jetzt zb. meinst @Beaker s.a.
Denn in der Übersetzung Text zu Wirklichkeit mangelts bei mir ordentlich :D

Nachtrag. (Beim Absenden wurde mir ein neuer Beitrag angezeigt:D)
Warum müssen denn die aufgaben Datensätze sein.
Wenn ich nicht den Mitarbeiter Zuweise sonder MitarbeiterX 5 Segmente in Haushalt zu elredigen hat?

Wäre das für ein eigenes Projekt oder wie gesagt in meiner Freizeit. würde und müsste ich mir die Zeit nehmen und garnicht erst fragen.
Ich bitte um ordentliche Stütze, sodass ich wieder mit einem guten Gefühl zu meiner Arbeit fahren kann.

Aber dennoch möchte ich schon an dieser Stelle jeden für seine Zeit und seine Meinung dazu danken :)



Beste Grüße
Lukas


MzKlMu

#8
Hallo,
glaube mir, das wird so nix. Du musst das umstrukturieren.
So wie das jetzt ist, hast Du ja z.B. zur Hauswirtschaft nur eine 0 drin, was soll denn da eingetragen werden ?
Hier müsste der Primärschlüssel des Mitarbeiters als Fremdschlüssel eingetragen werden. Das Feld für den Mitarbeiter (3 Feld von oben) ist auch falsch.
Das kannst Du so nicht lassen, das ist unbrauchbar und auch als Schnelllösung nicht zu verwenden.
Wenn Du bei Deinem jetzigen Aufbau bleiben willst, müssen die Beziehungen aussehen wie im Bild.
Die TAbellennamen mit der Zahl (_1, _2 ...) sind alias Tabellen die von Access automatisch angelegt werden. Bei der Zuordnung des Mitarbeiters müssen die Aliastabellennamen dem Feldnamen vorangestellt werden, sonst kann Access die Inhalte nicht unterscheiden. Der Aufwand das richtig zu machen ist beträchtlich und komplizierter als bei dem vorgeschlagenen Umbau.

ZitatWenn ich nicht den Mitarbeiter Zuweise sonder MitarbeiterX 5 Segmente in Haushalt zu elredigen hat?
Was sind denn nun wieder die Segmente, werden da die Aufgaben weiter unterteilt ?

PS:
Man kann nicht einfach mal so eine Datenbank machen. Eine Datenbank erfordert auch einen völlig anderen Tabellenaufbau als Excel. Access muss man lernen, da geht nichts intuitiv wie bei Word oder Excel.
Wenn Du weiter machen willst, musst Du Dich mit den Grundlagen zu Access beschäftigen.
Gruß Klaus

Beaker s.a.

Hallo Lukas,
Auch wenn es falsch ist bevor das Datenmodell nicht korrekt ist, und auch
wirklich nur auf die Schnelle.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

LukkiNoob

#10
Hello und Danke für die Antworten.

@MzKlMu
Also ich denke ich sollte hier erklären was mein Plan ist.
Ich öffne Morgens die Tabelle Aufgaben.
Dort erfasse ich dann zu jedem Mitarbeiter einen Datensatz der angibt wieviel Sigmente jeder Mitarbeiter Pro Spalte(Arbeitsfeld) zu erledigen hat.
Sie dürfen in diesem Board keine Dateianhänge sehen.
Hier würde aufgeführt wieviel Mitarbeiter 3&5 an Sigmente zu erledigen haben.
Wenn ich Sigmente meine, rede ich von einem Internen Ausdruck für Arbeitsblock. Arbeitseinheit sozusagen aber nichts was für die Datenbank eine Relevanz hätte.

Du hast natürlich vollkommen recht. Und ich muss leider Unterstreichen, dass es aus der Notgeboren jetzt dazu kommt, das ich um eure Hilfe bitte und eine Schnelle Lösung erbitte.
Aber mein Kerngedanke war, Ich schau es mir erstmal an und versuche auf die kürze der Zeit was zu realisieren. Weil Interesse ist aufjedenfall vorhanden. Und ich denke einfach, wenn mir jemand zeigt, wie es richtig auszusehen hat, in einem Schema mit dem ich dan tägl. arbeite. bringt mir die Thematik ja schon von sich aus näher, gerade wenn man jemand ist. Der gerne nachbaut und versucht dabei die zusammenhänge zu verstehen. So habe ich bereits immer am besten gelernt.
Ich will halt nurnochmal sagen, dass ich gewiss noch die ein oder andere Frage stellen werde um auch aktiv mit Input zu arbeiten. Aber dann wenn ich auch den Freiraum dazu habe, damit es eben nicht übers Knie gebrochen ist.

@Beaker s.a.

Oha herzlichen dank dir.
Natürlich hast du vollkommen recht, aber ich möchte die Geschichte von oben nicht nochmal zu besten geben. Aber doch stehe ich dazu.
Und ich werde wie erwähnt auch noch Fragen stellen, wo ich dann auch die Zeit habe, aktiv mit dem entstandenen Input zu arbeiten.

Edit:
Beste Beispiel. Ich habe nie in meinen Gedanken die Syntax gut bilden können. Diese aber in meinen Belängen zusehen. bringt mit persönlich schon viel :)
Dank dir nochmals. Und wenn ich soweit bin und mit dem Verständnis nicht weiterkomme beim einlesen für eine sauber Struktur. Komme ich zurück. :)
Das war jetzt keine Drohung :D

Beste Grüße
Lukas

Beaker s.a.

ZitatArbeitseinheit sozusagen aber nichts was für die Datenbank eine Relevanz hätte.
Die stellt sich dann mit steigenden Anforderungen an die DB ein.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

LukkiNoob

Ich danke euch.

Das hat die letzten zwei Tage der Woche super funktioniert.

Genau seinen Zweck erfüllt.


Und ich gelobe bei weiteren Problemen erstmal in Ruhe und mit Zeit "die Sache richtig anzugehen" :)
Also erst zu nerven wenn ich durch einlesen und versuchen es anzuwenden nicht weiterkomme. :)

Ein schönes Wochenende

Und ich setze den Beitrag auf erledigt.

Besten Gruß
Lukas