Guten Abend,
ich habe folgendes Problem und suche schon länger nach einer Lösung. Das was ich bisher gefunden und ausprobiert habe hat leider nicht funktioniert.
Ich habe ein Datenblatt Formular. In der letzten Spalte wählt der Kollege für die Installation ein Datum aus (kleiner Kalender wird von Access eingeblendet). Wenn sich in der gleichen Filiale mehrere PC befinden sollen die Datensätze in diesem gleichen Datenblatt Formular auch das gleiche Datum automatisch erhalten.
Wäre für eine Hilfe sehr dankbar.
Viele Grüße
Trama
hallo,
das musst Du mal genauer erklären.
Wenn das richtig aufgebaut wurde, so haben alle PC's die gleiche Tabelle, die Änderungen haben daher immer automatisch alle, es muss nur das Formular aktualisiert werden.
Eine Datenbank in Mehrbenutzerumgebeung muss in Backend (nur die Tabellen) und Frontend (der Rest) aufgeteielt sein. Das Backend gibt es 1x auf dem Server, das Frontend hat jeder User auf seinem PC. Das heißt, jeder User schreibt in die gleiche(n) Tabelle(n), damit haben alle User die gleichen Daten.
Wie ist das bei Dir/Euch ?
Hallo Klaus,
danke für deine Nachricht. Es ist wie folgt aufgebaut.
Im Backend befindet sich eine Tabelle. Hier sind die Seriennummer aller PC's aufgeführt (Primärschlüssel). In diese Tabelle wird auch der Eintrag Datum aus dem Datenblatt Formular geschrieben.
Es existieren weitere Tabellen mit Informationen die im Formular aufgrund von der Seriennummer über Abfragen aufgelistet werden.
Jetzt haben manche Filialen 4 PC's.
Die Herausforderung ist, wenn ich in diesem Formular ein Datum auswähle für einen PC in einer Filiale, dass die restlichen 3 PC's in der gleichen Filiale im Formular automatisch das gleiche Datum erhalten. Ansonsten muss ich im Formular 4 mal das Datum auswählen. Hoffe ich konnte mich verständlich ausdrücken.
Viele Grüße Trama
Hallo,
was nun:
ZitatIm Backend befindet sich eine Tabelle
ZitatEs existieren weitere Tabellen ...
??
Zeige mal einen Screenshot des Beziehungsfensters.
Wenn ich das richtig interpretiere, sollen nicht die PCs als solches ein Datum (was ist dessen Bedeutung?) erhalten, sondern jeweils die Filiale.
Hallo Franz,
ich habe nur versucht auf die Antworten von Klaus einzugehen, damit man sich das vorstellen kann wie ungefähr das Gesamte aufgebaut ist. Wenn ich das richtig interpretiere wurde ich noch nicht ganz verstanden wonach ich suche. Ich glaube es hat nichts mit den Beziehungen und Verknüpfungen zu tun, sondern es geht hier um eine Ereignisprozedur wo ich nicht weiterkomme. Hierfür habe ich ein Beispielbild eingefügt. Die Daten befinden sich bis auf das Datum bereits in diesem Formular. Wenn ich in der letzten Spalte dieser Filiale ein Datum zuweise (26.03.2019), möchte ich das in den Datensätzen darunter, die ebenfalls die Filiale 8899 sind, auch das gleiche Datum erhalten.
Falls hierfür doch die Beziehungen etc. benötigt werden kann ich das gerne noch hochladen.
Danke noch einmal im vorab und Gruß Trama
Hallo,
zeige mal das Beziehungsbild.
Hallo Klaus,
anbei das Beziehungsbild.
Gruß Trama
Hallo,
das sind doch nicht Beziehungen Deiner Tabellen. Das sind die Systemtabellen.
Das hat mit den Beziehungen Deiner von Dir angelegten Tabellen nichts zu tun.
Da ist auch von den Feldnamen Deines Bilde von oben nichts zu sehen.
Ich fürchte, da fehlt einiges an Grundlagenwissen.
Die Beziehungen Deiner Datenbank musst Du selbst anlegen, mit Deinen Tabellen.
Hallo,
ok, das war ein Missverständnis. Anbei die Beziehungen der Tabellen.
Grundlagenwissen ist bisschen da : ).
In der Tabelle Datum (backend) werden die Einträge gespeichert. K-Nummer entspricht Seriennummer und ist der Primärschlüssel. Hoffe das hilft für mein Anliegen.
Gruß Trama
Hallo,
das ist auch nicht das Beziehungsbild, das sind die Verknüpfungen eine Abfrage.
Das hat mit den Beziehungen nichts zu tun.
Im Beziehungsfenster ist auch grundsätzlich referentielle Integrität einzustellen.
Das scheint mir aber reichlich verworren, wieso heißt das Feld "K_Nummer" und in den anderen Tabellen "Device" und in einer weiteren Tabelle dann "dmdcode", das kann doch alles nicht stimmen.
Die doppelt vorhandenen Wochentag Tabellen sind auch fragwürdig.
Auch Feldnamen wie Datum 1, Datum 2 etc. deuten auf ein verbesserungsbedürftiges Datenmodell hin.
Da gäbe es bestimmt noch viel mehr zu entdecken, wenn man die Tabellen mit den Feldern vollständig sehen würde.
Ich kann da auch keinen Zusammenhang mit dem in #4 gezeigten Bild erkennen.
In Feldnamen verwendet man auch keine Leer und Sonderzeichen, das macht nur Arbeit sonst nix.
Hallo,
danke. Es mag nicht Vorbildhaft angelegt sein jedoch funktioniert diese DB schon länger ohne Probleme und ist auch von der Performance sehr gut und stabil. Da die Daten von verschiedenen Quellen kommen hat die Seriennummer verschiedene Bezeichnungen. Die Tabelle Wochentag ist nicht doppelt vorhanden, das andere ist Wochenende. Wie dem auch ist, es scheint das mir nicht geholfen werden kann. Schade....
Gruß Trama
Hallo,
Um helfen zu können, muss man die Zusammenhänge verstehen. Und ich verstehe sie nicht.
Zwischen Wochentag und Wochende ist kein Unterschied, das lässt sich über die Wochentagsnummer bequem unterscheiden.
@Tante
Wenn das Datum für alle PCs einer Filiale das gleiche sein soll, führe das
Feld in der Filialen-Tabelle.
gruss ekkehard
@Klaus, tut mir leid, ich habe nicht damit gerechnet das dass so kompliziert sein kann. Ich ging davon aus das ich in meinem Formular einen code mit zum Beispiel dlookup schreiben muss. Kannst du mir einen Hinweis geben wie ich am besten dir noch mehr Details zur Verfügung stellen könnte? Ferner, dass es für Wochentag und Wochenende zwei Tabellen gibt hängt damit zusammen, dass die täglich unabhängig voneinander genieriert werden. Ich importiere sie automatisiert mit einem vba code.
@Ekkehard: Hmm...wüsste nicht wie ich das insgesamt umsetzen könnte.
Gruß Trama
@Tante
Tja, ich auch nicht solange du uns das Datenmodell verheimlichst, sofern
es denn überhaupt existiert.
gruss ekkehard
Hallo,
wenn Du schon die Fragen nicht beantwortest, bzw. kannst, dann musst Du mit dem folgenden Code selber klarkommen bzw. ihn (und das Formular) anpassen:
Sub Datum_Afterupdate()
Currentdb.Execute "Update tblDeineTabelle Set [Datum] =" & Format(Me![Datum],"\#yyyy-mm-dd\#") & " Where Ort = '" & Me!Ort & "'",dbFailonError
End Sub
Guten Abend,
@Franz, vielen Dank für den Code. Habe das in meinem Formular eingefügt und angepasst. Bekomme einen Laufzeitfehler 3061.
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
Ich möchte noch erwähnen das ich nichts verheimlichen möchte, es fehlt mir wissen um alle angeforderten Informationen im Forum zu teilen.
Mit einem kleinen Hinweis kann ich die gewünschten Infos teilen. Wäre super wenn es noch klappen würden.
Gruß Trama
Hallo,
poste (beschreibe) mal alles genau, was Du angepasst hast. (Code mit C&P kopieren).
Die Fehlermeldung deutet darauf hin, dass es irgend ein Feld nicht gibt, bzw. nicht so geschrieben ist, wie es tatsächlich heißt. Es kann auch ein Formular-Feld "leer" sein, dann existiert es ebenfalls zu diesem Zeitpunkt nicht, bzw. enthält NULL (=undefiniert, keinerlei Wert) .
Prüfe also ob "Datum" und "Ort" in der Tabelle wirklich so lauten, ob die Formular-Steuerelementnamen übereinstimmen und auch nicht leer sind.
Hallo Franz,
anbei der angepasste Code. Die screenshots von den Tabellen füge ich auch mit ein.
Private Sub Datum_1_AfterUpdate()
CurrentDb.Execute "Update Datum Set [Datum 1] =" & Format(Me![Datum 1], "\#yyyy-mm-dd\#") & " Where L6 = '" & Me!L6 & "'", dbFailOnError
End Sub
Gruß Trama
Hallo,
grausam.. ???
Benutze eine vernünftige (aussagekräftige) Benamsung! Auch eine Tabelle mit "Datum" zu benennen ist eher sinnlos.
Vermeide DRINGEND Sonder- und Leerzeichen in eigenerstellten Objekt(nam)en.
"Sinnvollerweise" zeigst Du nicht die vollständigen Felder der Tabelle "Datum". (Befindet sich "L6" in Tabelle "Datum" und welchen Datentyp hat das Feld?)
Vermutlich ist das Formularfeld "L6" leer (NULL) oder L6 gibt es nicht in Tabelle "Datum".
Hallo Franz, mir war nicht klar das der Code in der Tabelle nach L6 (Filialnummer) sucht, ich ging davon aus das dass im Formular selber geschieht. Wieder was dazu gelernt das dass nicht funktioniert. Hab L6 in der Tabelle Datum eingefügt und nun funktioniert es. Vielen Dank!!!
Ich weiß das die Bezeichnungen grausam sind, jedoch kann ich das nicht beeinflussen.
Viele Grüße
Hallo,
ich habe eine neue Datenbank aufgesetzt und den Code oben benutzt um die Datumseinträge automatisiert in die Felder einzutragen. Als ich das damals gemacht habe hat es ohne Probleme funktioniert. Jetzt geht es zwar auch jedoch bekomme ich eine Popup Fenster mit Schreibkonflikt. Egal was ich dort Auswähle (Datensatz speichern/In Zwischenablage kopieren/Eigene Änderungen verwerfen) funktioniert der Eintrag wie er soll. Woran könnte es liegen das diese Meldung mit Schreibkonflikt nun erscheint? Hab alles mögliche gesucht werde aber nicht fündig. Hat da jemand eine Idee?
Gruß Trama
Hallo Trama,
ZitatHat da jemand eine Idee?
Für mich deutet die Beschreibung auf ein falsch gewähltes Ereignis hin.
Der Code will ja alle DS aktualisieren, die den gegebenen Kriterien
entsprechen, - also auch den, den du gerade geändert (hast). Dieser
ist wahrscheinlich beim gewählten Ereignis noch nicht gespeichert, will
sagen, er befindet sich im Edit-Modus (Stift im DS-Markierer), was dann
den Schreibkonflikt auslöst.
1. das richtige Ereignis ist "Datumsfeld_AfterUpdate" (Nach Aktualisierung)
2. schreibe an den Anfang der Prozedur die Zeile
Me.Dirty = FalseDamit wird der DS explizit gespeichert, und ist dann für das UPDATE nicht
mehr gesperrt.
gruss ekkehard
Hallo Ekkehard,
Tausend Dank, funktioniert super!
Ich habe nun nur noch das Problem wenn ich das Datum löschen möchte (falls mal falsch ausgewählt wurde), dass eine Fehlermeldung erscheint "Laufzeitfehler 3144. Syntaxfehler in UPDATE- Anweisung. Wenn ich das noch gelöst bekomme bin ich mit meiner DB fertig.
Hoffe das ist einfach zu lösen, hast du hierfür auch eine Lösung?
Viele Grüße Trama
Hallo,
und wie lautet nun das aktuelle Update-Statement?
Hallo Franz,
das sieht wie folgt aus:
Private Sub Datum_AfterUpdate()
Me.Dirty = False
CurrentDb.Execute "Update TBLKNummer Set [Datum] =" & Format(Me![Datum], "\#yyyy-mm-dd\#") & " Where Filiale = '" & Me!Filiale & "'", dbFailOnError
End Sub
Gruß Trama
Hallo,
auf den ersten Blick sehe ich keinen Syntax-Fehler...
--Ist das Feld "Datum" in der Tabelle TBLKNummer vom Datentyp Datum/Uhrzeit?
--Steht im Formularfeld "Me![Datum]" ein gültiges Datum?
-- Hat das Feld "Filiale" den Datentyp TEXT?
--Ist das Form evtl. an die Tabelle TBLKNummer gebunden?
Warum soll überhaupt das Datum aktualisiert werden?
Hallo,
@Franz
Zitat--Steht im Formularfeld "Me![Datum]" ein gültiges Datum?
Wahrscheinlich nicht, -
Zitatwenn ich das Datum löschen möchte (falls mal falsch ausgewählt wurde),
@Trama
Auf ein leeres Datumsfeld müsstest du im Ereignis "Vor Aktualisierung"
(VBA _BeforeUpdate) prüfen. Da kannst du eine korrekte Eingabe
erzwingen; - Abbruch des Speichervorgangs mit
Cancel = TrueOder du prüfst es in der jetzigen Prozedur vor dem UPDATE und unter-
drückst es oder verpasst ihm ein Standarddatum.
gruss ekkehard