Hallo, ich habe folgende probleme:
datenbank ist beigefügt
ich würde gerne das Formular frmArzte so abändern, daß man mittels einer Liste je nach eingabe von daten, den gewünschten wert auswählen kann.
also, wenn ich postleitzahl eingebe, filtert die liste anhand der postleitzahl, so daß man halt nur noch betreffende orte sieht. geb ich dazu noch den ort ein, sollten halt nur noch die betreffenden straßen verfügbar sein.
es wäre sicherlich auch möglich, das ganze mit kombifeldern zu lösen.
die textfelder momentan dienen lediglich der information, um zu sehen, was man ausgewählt hat.
ich hoffe, daß ich mich nicht zu umständlich ausgedrückt habe.
danke
Hi,
vielleicht hilft http://www.donkarl.com?FAQ4.36 (http://www.donkarl.com?FAQ4.36)
Harald
danke Harald,
ich habe im Formular folgende Variante von Donkarl genutzt:
Es kann aber auch ein SQL-Ausdruck sein, der in der Eigenschaft Datensatzherkunft des abhängigen Kombis steht oder der im Ereignis-Code Nach Aktualisierung des übergeordneten Kombis zugewiesen wird:
Me!cbo_Artikel.RowSource = "SELECT ArtikelBezeichnung FROM tbl_Artikel WHERE GruppenID= " & Me!cbo_Gruppen
Der Versuch auf meine Gegebenheiten anzupassen:
Me!cbo_Adresse.RowSource = "SELECT Ort FROM tblAdressen WHERE PLZ_ID_F= " & Me!cbo_PLZ
Es liegen die Tabelle tblPLZ mit PLZ_ID, Postleitzahl und Ort, sowie die Tabelle tblAdressen mit Adress_ID, PLZ_ID_F, Strasse und ZusatzInfo zugrunde.
Im Formular habe ich das Kombinationsfeld: PLZ mit der Datensatzherkunft: SELECT [tblPLZ].[PLZ_ID], [tblPLZ].[Postleitzahl], [tblPLZ].[Ort] FROM [tblPLZ] ORDER BY [Postleitzahl], [Ort];
und dann das, welches ja davon abhängig sein soll: Adresse mit dem oben geschriebenen SQL Code in Datensatzherkunft.
Es kommt jedoch die Meldung: Die auf diesem Formular oder in diesem Bericht Datensatzquelle 'Me!cbo_Adresse.RowSource = "SELECT Ort FROM tblAdressen WHERE PLZ_ID_F= " & Me!cbo_PLZ' ist nicht vorhanden.
Der Name der Datensatzquelle wurde falsch geschrieben, die Datensatzquelle wurde falsch geschrieben oder umbenannt, oder sie befindet sich in einer anderen Datenbank. ...
Wo liegt mein Fehler?
mfg Dirk
Hi,
SELECT Ort FROM tblAdressen WHERE PLZ_ID_F= " & Me!cbo_PLZ
setzt voraus, dass das Feld Ort in der Tabelle tblAdressen vorhanden ist.
Ist aber in tblPLZ vorhanden.
Harald
Nachtrag
Im Anhang findest Du für cbo_Adresse die Abhängigkeit von der Postleitzahl. Schwebte Dir das vor?
[Anhang gelöscht durch Administrator]
Hallo Harald,
die Abhängigkeit funktioniert, das suchte ich, danke,
jedoch ändert es bei mir nun aber alle datensätze auf dieselbe adresse...
???
Hi Dirk,
habe ich das richtig verstanden, dass in allen Datensätze die Adresse geändert wurde?!?
Kannst Du eine abgespeckte Datenbank (a2003, gezippt) zur Verfügung stellen?
Harald
Hab ich das richtig gesehn? Dein 1000'er Beitrag... bei mir ;-)
ich häng mal an.
es handelt sich um das formular frmArzte_n. dort habe ich deinen Vorschlag aus deinem anhang eingebastelt.
und wenn ich nun im formular unten die postleitzahl auswähle werden schon um ufo alle auf die gewählte geändert. und wenn ich dann oben bei adresse ne straße auswähle, bekommen auch alle die selbe straße.
Moin Dirk,
Zitat von: dfone am Januar 22, 2013, 21:01:59
ich häng mal an.
Wo ist der Anhang?
Harald
ups...
sorry
[Anhang gelöscht durch Administrator]
Hi Dirk,
dass nach der Auswahl in dem besagten Kombifeld "alle" Datensätze einen "neuen" Inhalt bekommen, ist nur ein "Schein"-Ergebnis, da "cbo_Adresse" ein ungebundenes Steuerelement ist.
"Wenn ich postleitzahl eingebe, filtert die liste anhand der postleitzahl, so daß man halt nur noch betreffende orte sieht. geb ich dazu noch den ort ein, sollten halt nur noch die betreffenden straßen verfügbar sein"
Wofür sollen "betreffenden straßen" verfügbar sein?
a) für eine Eingabe in einer Tabelle? Dann fehl aber noch ein Feld zum Speichern.
b) für eine Datenselektion? Mögliche Fragestellung könnte sein: z.B. liste mir alle Ärzte aus der "Marzipanstrasse".
Harald
für die speicherung der arztadressen.
einerseits zur Information, wo wohnt der arzt, andererseit evtl später mal, um damit entfernungen für die zonen zu "berechnen" bzw. zu hinterlegen.
mfg dirk
Hi Dirk,
soll in dem Formular frmArzte_n die in den Stammdaten vorhandene Adresse zugeordnet werden oder
soll hier auch die Möglichkeit bestehen, eine neue Adresse (Strasse, Ort ...) anzulegen?
Die erste Option hat kein bis wenig VBA-Aufwand,
die zweite wird etwas umfangreicher.
Harald
das formular ist für die stammdatenpflege gedacht, es sollen dort die daten der ärzte bearbeitet werden. neue ärzte... ärzte löschen... usw.
mfg dirk
Hi Dirk,
im Formular "frmArzte_n" habe ich ein paar Änderungen durchgeführt:
1. die obigen Kombi-Felder habe ich in den Formularkopf verschoben. Wenn dort in PLZ eine Auswahl getroffen wird, werden im Kombifeld Ort nur die dazu passenden Orte angezeigt.
2. Die bei 1 getätigte Auswahl wirkt sich auf die Auswahlliste PLZ im Detailbereich des Formulars aus. Dort sind nur die zu 1 passenden Einträge auswählbar. Diese Beschränkung gilt unter bestimmten Bedingungen (siehe VBA-Teil).
Gespeichert wird in PLZ der Fremdschlüssel aus der Adress-Tabelle.
In den folgenden Feldern werden die aus der Auswahlliste passenden Werte (Orts-, Strassen- und Zusatzinfo-Angaben) angezeigt. Diese Daten sind über den Adress-Fremdschlüssel normalisiert.
Geändert werden sie nur über eine Änderung im Feld PLZ des Detailbereichs.
Hilft das?
Harald
[Anhang gelöscht durch Administrator]
danke,
damit kann ich was anfangen... :)
mfg dirk
hallo Harald,
hab ma ne Frage,
Ich finde die Ortsauswahl im Formlarkopf doppelt gemoppelt, es würde doch ausreichen, wenn ich daß obere Kombifeld (cbo_PLZ) zur Ortsauswahl nutze, dort kann ich doch schon die Orte eindeutig auswählen.
Das untere Kombifeld (cbo_Ort) könnte man doch in ein Textfeld wandeln, was dann lediglich noch den Ort zur Postleitzahl als Info anzeigt.
Ansonsten ist es schon super, daß ich im cbo_Adresse die "abhängige" Straße auswählen kann.
mfg Dirk
Mahlzeit,
Hab es, glaub ich, selber hinbekommen Harald.
Ich hab ein Textfeld hinzugefügt (txtfld_Ort) und dort bei Steuerelementinhalt =[cbo_PLZ].[Column](2) eigefügt.
Danach habe ich das Ereignis von cbo_Adresse so geändert:
Private Sub cbo_Adresse_Enter()
Dim Bedingung As String
If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
Bedingung = ""
If Nz(Me.cbo_PLZ, "") > "" Then Bedingung = Bedingung & " and tblPLZ.Postleitzahl='" & Me.cbo_PLZ.Column(1) & "'"
If Nz(Me.txtfld_Ort, "") > "" Then Bedingung = Bedingung & " and tblPLZ.Ort='" & Me.txtfld_Ort & "'"
Bedingung = Mid(Bedingung, 6)
End If
Me.cbo_Adresse.RowSource = "SELECT tblAdressen.Adresse_ID, tblPLZ.Postleitzahl, tblPLZ.Ort, tblAdressen.Strasse, tblAdressen.ZusatzInfo FROM tblPLZ RIGHT JOIN tblAdressen ON tblPLZ.PLZ_ID = tblAdressen.PLZ_ID " & _
IIf(Bedingung > "", "WHERE " & Bedingung, "") & _
" ORDER BY tblPLZ.Postleitzahl, tblPLZ.Ort, tblAdressen.Strasse;"
End Sub
Also die Bedingungen für cbo_Adresse geändert und auf das txtfld_Ort gelenkt.
Jetzt ist nur noch folgendes Problem, wenn ich nen Arzt im Detailbereich auswähle, welcher schon eine Adresse hat, dann funktioniert es nicht mehr, dann bekomm ich alle Adressen im cbo_Adresse angezeigt.
Läßt sich das auch noch mit in die Filterung einbauen?
Freu... Mfg Dirk
Hi Dirk,
Zitat
Ich finde die Ortsauswahl im Formlarkopf doppelt gemoppelt, es würde doch ausreichen, wenn ich daß obere Kombifeld (cbo_PLZ) zur Ortsauswahl nutze, dort kann ich doch schon die Orte eindeutig auswählen.
Es gab mindestens eine PLZ, die 3 Orte hatte.
Wenn es trotzdem vereinfacht werden soll, muß die bei Ort stehende VBA-Routine bei der PLZ aufgenommen werden und um den Bedingungsteil mit dem Ort gekürzt werden. Die kürzung betrifft dann auch den unten folgenden Teil.
Zur zweiten Meldung:
Probier mal als Schnellschuß {ist ungetestet}:
statt: If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
dann: If Nz(Me.cbo_Adresse, "") = "" And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
Ansonsten stell die aktuelle db-Version in komprimierter + gezippter Form hier zur Verfügung, damit ich daran basteln kann.
Harald
Hi Harald,
Dein Versuch
ZitatProbier mal als Schnellschuß {ist ungetestet}:
statt: If (Me.NewRecord Or Nz(Me.cbo_Adresse, "") = "") And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
dann: If Nz(Me.cbo_Adresse, "") = "" And (Nz(Me.txtfld_Ort, "") > "" Or Nz(Me.cbo_PLZ, "") > "") Then
bringt leider nix.
meine Version hängt an
[Anhang gelöscht durch Administrator]
Hi,
anbei eine Version.
Hoffentlich hatte ich Dein Anliegen korrekt verstanden.
Harald
[Anhang gelöscht durch Administrator]
so würde es schon gehen,
nach auswahl des ortes im formularkopf bringt es mir trotz schon vorhandener adresse auch die zm ort gehörenden straßen.
noch ne klitzekleine frage, wäre es auch möglich, die straßenauswahl einerseits vom cbo_PLZ und von adresse_ort abhängig zu machen, also daß ich entweder oben im cbo_PLZ den ort wähle und die entsprechenden straßen im cbo_adresse bekomm
oder eben falls arzt schon adresse hat, den ort anstatt vom cbo_plz aus dem feld adresse_ort nutze. so daß dann nur cbo_adresse auswählen muß.
also, wenn ich nur die straße ändern möchte, dh. der ort bleibt gleich, kann ich direkt im cbo_adresse entsprechende straße wählen.
wenn ich jedoch den ort mitändern muß, dann halt der weg über cbo_plz und dann cbo_adresse. so wie es jetz ja geht.
mfg dirk
Hi,
ein paar "kleine" Änderungen anbei.
Wenn im Detailbereich plz eingetragen ist, kann der Ort noch geändert werden.
Wenn der Ort eingetragen ist kann in "Strasse" der Inhalt geändert werden.
"Strasse" ist von Ort + PLZ + der PLZ aus dem Formularkopf abhängig
Ort ist von PLZ (Detailbereich) + PLZ (Kopf) abhängig
PLZ (Detailbereich) ist von PLZ (Kopf) abhängig.
Jetzt stellt sich mir die Frage, ob Du überhaupt noch die Vorauswahl im Formularkopf benötigst.
Harald
[Anhang gelöscht durch Administrator]
danke, ich schau mal rein...
ich denke, so komm ich nun zurecht.
Hallo,
ich habe ebenfalls nach Vorbild des Beispiels auf Donkarls Seite eine Abhängigkeit gebastelt. Allerdings sind die beiden Kombifelder nicht in einem Formular, sondern das eine im Formular, das andere im Ufo.
Ich habe mehrere Varianten ausprobiert, jedoch bleibt in jedem Fall die abhängige Liste leer. Ebenso habe ich probiert, eine Kombiliste im gleichen Formular an die abhängige Kombiliste zu binden. Das Ergebnis bleibt ebenfalls das gleiche.
Folgendes habe ich unter Datensatzherkunft eingegeben:
Me!cboWartung_Auswahl.RowSource = "SELECT [tblWochenwartung].[woch_ID], [tblWochenwartung].[woch_einheit], [tblWochenwartung].[woch_art], [tblWartungAuswahl].[aus_wahl_ID] FROM [tblWochenwartung], [tblWartungAuswahl] WHERE [tblWochenwartung].[woch_art] = " &Me![tblWartungAuswahl].[aus_wahl_ID] ORDER BY [woch_ID];
Im Anhang ein Screenshot, der zumindest die Beziehungen sowie das fragliche Formular abbildet. Wenn es hilft, lade ich aber auch gerne die Datenbank hoch. Vielleicht kann ja aber so bereits jemand sehen, was ich offensichtlich falsch gemacht habe.
Mit dem überlangen Einzeiler (ist der Editor auch in Wartung?), der keinen gültigen VBA-Code darstellt, lässt sich wenig bis nichts anfangen. Das gleiche gilt für den Bild-Upload.
Mit einer abgespeckten Beispiel-DB mit einigen Spieldaten kann Dir vermutlich am ehesten geholfen werden.
Ja, dass der Code so nicht richtig formatiert ist, war mir irgendwie ja klar. Ist nur die letzte Fassung dessen, was ich alles schon ausprobiert habe.
Anbei mal eine abgespeckte Variante meiner DB.
Gruß,
Dennis
Hallo,
ZitatAllerdings sind die beiden Kombifelder nicht in einem Formular, sondern das eine im Formular, das andere im Ufo.
Me!NameUFoControl.Form!cboWartung_Auswahl.RowSource = ...(siehe auch http://www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2))
Ob überhaupt Datensätzen zurück geliefert werden musst du selber rausfinden.
gruss ekkehard
Vielen Dank für die Antwort. Gut möglich, dass mir das schon weiter hilft. Mir ist aber gerade ein Phänomen aufgefallen, das mich daran zweifeln lässt.
Und zwar führt selbst die Eingabe von
SELECT woch_einheit FROM tblWochenwartung
unter Datensatzherkunft zu einem Kombi ohne Inhalt.
Selbst wenn ich den Abfragegenerator einsetze, der genau diesen Code abbildet, bleibt das Kombi leer. Wähle ich unter Datensatzherkunft tblWochenwartung aus, wird mir jedoch alles so angezeigt, wie gewünscht. Gebe ich selbst tblWochenwartung ein, bleibt das Kombi wiederum leer.
Ich fürchte, ich mache etwas Grundlegendes falsch, da ich jetzt mal nicht davon ausgehe, dass Access 2016 nicht richtig läuft... Ich wäre für jeden Hinweis dankbar.
Gruß,
Dennis
Hallo,
wie sind denn die Spaltenbreite(n) des Kombifeldes eingestellt ?
Hallo,
unter Spaltenbreit ist "0cm;2,54cm" angegeben.
Gruß,
Dennis
EDIT: Ich habe gerade einmal mit den Spaltenbreiten gespielt und 1cm;2,54cm angegeben. Jetzt zeigt wird mir die ID von tblWochenwartung angezeigt. Klicke ich das Kombi an, kommt die Fehlermeldung, dass tblWochenwartung nicht vorhanden sei. Wähle ich unter Datensatzherkunft im Dropdown-Menü tblWochenwartung aus, so wird mir nun aber ganz korrekt die ID nebst der gewünschten Daten angezeigt. Mir kommt das nach einem äußerst komischen Verhalten durch Access vor. Oder liege ich da falsch?
Da brauche ich mich nicht wundern, dass mir der RowSource-Befehl nichts ausgibt...
Hallo,
ZitatMir kommt das nach einem äußerst komischen Verhalten durch Access vor. Oder liege ich da falsch?
ja, da liegst Du falsch. Dein Kombi ist falsch eingestellt.
In #28 hast Du eine Abfrage gezeigt die nur eine Spalte hat. Wenn jetzt für die 1.Spalte des Kombis 0cm steht wird das Kombi auch nichts zeigen.
Das Kombi muss also als Datenherkunft schon mal 2 Spalten haben.
Die Reihenfolge der Spalten der Abfrage bestimmt auch die Reihenfolge der Spalten im Kombi.
In den Formateigenschaften des Kombis kann man eine Spaltenzahl eingeben, die muss auf 2 stehen.
Dann gibt es noch die gebundene Spalte (steht im Regelfall auf 1 und sollte so bleiben). Diese Spalte wird als Steuerelementinhalt übernommen und in den Datensatz geschrieben.
Du musst Dir diese Zusammenhänge unbedingt klar machen, dann klappt das auch mit dem Kombi.
Vielen Dank! Das hat zumindest dieses doch recht triviale Problem gelöst ::)
Jetzt muss ich nur noch meinen RowSource-Denkfehler einfangen. Irgendwas gebe ich da falsch an. Ich habe nun probehalber beide Kombis im selben UFo. Bevor ich das nicht klarbekomme, brauche ich mich ja nicht an das übergeordnete Problem wagen.
Me!cboAuswahl2.Form!cboEinheit.RowSource = "SELECT tblWochenwartung.woch_ID, tblWochenwartung.woch_einheit, tblWochenwartung.woch_art FROM tblWochenwartung WHERE tblWochenwartung.woch_art= " & Me!cboAuswahl2;
So sieht der nun von mir angepasste Code aus, aber leider trotzdem nicht funktioniert.
Um etwas grundsätzliches zu klären: RowSource kommt schon in das Kombi, das abhängig vom anderen unterschiedliche Inhalte anzeigen soll, richtig? Der Part ab SELECT müsste jetzt eigentlich stimmen, zumal er für sich stehend im Formular nun funtioniert. Ab WHERE bin ich mir nicht sicher.
Ich habe in der Tabelle tbl Wochenwartung eine Spalte eingefügt, die woch_art heißt und entweder 1 und 2 enthält. Je nachdem welche Wartung zum jeweiligen Element gehört. Und die wird dann ja - so verstehe ich es - mit cboAuswahl2 abgeglichen, was ja an sich lediglich die ID der zugrundeliegenden Tabelle abgleicht. Auch richtig?
Muss ich vorbereitend für diesen RowSource-Befehl noch etwas beachten, das für das Funktionieren des Befehls unabdingbar ist und mir durchgegangen ist?
Viele Grüße,
Dennis
EDIT: Dachte eigentlich, dass ich für Code ganz normal den html-Zeilenumbruch verwenden kann. Auch da habe ich wohl aber falsch gedacht :D
Hallo,
wenn woch_art vom Datentyp Zahl (in der Tabelle) definiert ist, sollte der SQL Code richtig sein. Bitte den Datentyp prüfen.
Der SQL Text geht auch kürzer:
Me!cboAuswahl2.Form!cboEinheit.RowSource = "SELECT woch_ID, woch_einheit, woch_art
FROM tblWochenwartung
WHERE woch_art= " & Me!cboAuswahl2
Bitte schildere noch mal Dein Problem im Zusammenhang mit obigem Code.
Ich habe jetzt keine Lust das alles noch mal komplett zu lesen.
PS:
Bitte benutze für Codedarstellungen die Codetags des Forums.
Hallo,
in cboAuswahl2 soll ja die Art der Wartung festgelegt werden. In cboEinheit sollen dann die zugehörigen Einheiten zur Auswahl stehen. So weit sicher klar.
Gebe ich den Code jedoch unter "Datensatzherkunft" an bleibt das Kombi cboEinheit leer. Auch beim betätigen des Kombis bleibt es leer. Lasse ich zusätzlich zu den Einheiten die zugehörigen IDs anzeigen, indem ich die erste Spalte auf 1cm setze, werden mir zwar die IDs angezeigt, nicht aber die Einheiten. Betätige ich dann das Kombi, bekomme ich die Fehlermeldung, dass die angegebene Datensatzquelle nicht vorhanden ist.
Viele Grüße,
Dennis
Hallo,
stimmt die Spaltenreihenfolge der Abfrage mit der Reihenfolge die Du sehen willst überein ?
Ist die Spaltenzahl des Kombis auf 2 eingestellt ?
Mir scheint, die steht immer noch auf 1.
Wenn Du nicht klar kommst, erstelle ein einfaches Beispiel das Dein Problem nachstellt.
Hallo,
bin jetzt leider nicht mehr am Arbeitsplatz. Überprüfe das direkt aber morgen nochmal. Für den einfachen SQL-Befehl hatte ich das ja bereits überprüft. Kann aber in der Tat sein, dass hier ein Zusammenhang besteht. Die Fehlermeldung würde dies dann aber indes nicht erklären, oder?
Wie auch immer, melde mich so oder so morgen. Vielen Dank für die bisherige Erhellung und einen schönen Abend!
Gruß,
Dennis
Hallo,
Me!cboAuswahl2.Form!cboEinheit.RowSource
Warum hat ein UFO-Control ein Prefix, dass auf ein Kombi hinweist?
gruss ekkehard
Hallo,
weil beide Kombis eigentlich in unterschiedlichen Formularen sein sollen. Ich habe nochmal eine angepasste DB angehängt. Die von Dir angesprochenen möglichen Probleme habe ich ausgeschlossen (glaube ich wenigstens) und habe außerdem die Reihenfolge der Tabellen-Elemente innerhalb des Befehls abgeändert, nur um zu sehen, ob hier ein Zusammenhangbesteht. Beim betätigen des Kombis bekomme ich leider trotzdem immer noch den Hinweis, dass die angegebene Datenquelle nicht vorhanden sei.
Viele Grüße,
Dennis
Hallo,
so etwas
Me!cboAuswahl2.Form!cboEinheit.RowSource = "SELECT .....
als Datenherkunft ist natürlich völlig falsch. Die Zuweisung der RowSource muss per VBA erfolgen. RowSource ist VBA ebenso Me. Daher kann auch Me so nicht verwendet werden.
Erkläre noch mal an Hand Deines Beispiel was Du wo machen willst. Ich habe den Überblick verloren.
Und das UFo-Control heisst "tblWoch_Wart Unterformular"
Me![tblWoch_Wart Unterformular].Form!cboEinheit.RowSource = "SELECT .....
Hallo,
kam mir gleich so vor, dass ich wenigstens den vorderen Teil nicht richtig für meine Belange angewendet habe. Hatte mich an Donkarls Tip für gebundene Listen orientiert.
An und für sich soll auf den Formularen nicht mehr passieren, als dass verschiedene Wartungen (wöchentlich/monatlich) einem bestimmten Datum und einem bestimmten Datum zugeordnet werden. Letztlich eigentlich ja kein großes Problem. Ich habe nur ein großes daraus gemacht, da Access für mich Neuland ist und ich erst nach einigen Wochen im Ansatz begriffen habe, wie eine DB funktioniert.
Zuerst wollte ich die einzelnen Wartungsschritte tabellarisch auflisten, um sie dann abzuhaken. Dank dieses Forums habe ich dann schnell festgestellt, dass dies nicht notwendig ist. Die Grundstruktur hatte ich für die Wochenwartung dann schnell.
Ich stieß dann aber auf das Problem, dass ich in einer späteren Auswertung natürlich auch direkt zwischen Wochen- oder Monatswartung wollte, sodass ich die verschiedenen Wartungsschritte in eine Tabelle gab, um sie über ein Kombi auszuwählen.
Jedoch soll nicht jeder Wartungsschritt mit Wochen- bzw. Monatswartung markiert sein, sodass ich das Kombi in einem übergeordneten Formular integrierte. Und über die Auswahl dieses Kombis soll dann im Kombi des UFos eben darüber entschieden werden, welche Wartungsschritte hier zur Auswahl angeboten werden.
Eigentlich sollte dann in einem späteren Schritt noch über die Auswahl eines bestimmten Fahrzeugs noch eine weitere Filterung der Kombis erfolgen. Da ich ja aber schon an nur zwei Kombis scheitere, lasse ich das wohl erstmal weg, bis ich etwas sicherer im Umgang mit Access geworden bin.
Denn eigentlich halte ich mich bereits an dieser Kleinigkeit schon viel zu lange auf, obwohl sowohl Mitarbeiter als auch verbrauchte Materialien noch überhaupt nicht Berücksichtigung gefunden haben.
Viele Grüße,
Dennis
Hallo,
jetzt hast Du viel geschrieben, aber ich weiß immer noch nicht um welches Formular es geht, und welche Kombis voneinander abhängig sein sollen.
@ekkehard
völlig unabhängig von dem Ufonamen ist doch die gezeigte Formel gar nicht möglich. Die Datensatzherkunft kann so nicht zugewiesen werden.
RowSource ist VBA.
Hallo,
es geht um frmWartungen und frmWartungen_ufoWochenwartung. Darin geht es um cboAuswahl in frmWartungen (bzw. cboAuswahl2 im UFo) sowie um cboEinheit im UFo.
Gruß,
Dennis
Hallo,
sorry, aber ich sitze doch nicht vor Deinem PC und ich habe keine Ahnung von den Zusammenhängen.
Wie hängen die beiden Kombis zusammen, bzw. wie sollen sie zusammenhängen ?
Hallo Klaus,
Da es um ein abhängiges Kombi geht war ich von VBA ausgegangen.
Hab's jetzt aber gesehen. War ich mal wieder etwas oberflächlich >:(
gruss ekkehard
Hallo,
entschuldigt bitte die Unschärfe. Also über cboAuswahl soll die Auswahl von Wochen- bzw. Monatswartung im cboEinheit nur die jeweils zutreffenden Wartungsschritte angezeigt werden. In tblWochenwartung habe ich dazu eine Spalte eingefügt, die entweder 1 oder 2 beinhaltet, je nachdem welcher Wert Wochen- oder Monatswartung als ID in tblWartungAuswahl zugrunde liegt.
So hatte ich mir das wenigstens überlegt. Ich hoffe, dass ich es jetzt etwas klarer Ausdrücken habe können :) Falls nicht, stehe ich einmal mehr doof da :D
Viele Grüße,
Dennis
Hallo,
irgendwie blicke ich da nicht durch.
In der Datenherkunft des Ufos gibt es eine Tabelle "tblStatusWoche" aber die Tabelle ist nicht vorhanden.
Kann es sein, dass Dein Beispiel nicht vollständig ist ?
Was soll denn im Ufo dargestellt werden ?
Die Zusammenhänge der abhängigen Kombis habe ich immer noch nicht begriffen.
Möglicherweise stehe ich ja auch auf der Leitung und jemand anders blickt da durch.
Hallo,
also, ich drehe nochmal alles auf null. Denn das Formular enthielt noch einige Experimente. Die Tabelle für Status habe ich aus Versehen dann obendrein auch noch gelöscht, sodass die Formulare eigentlich nicht funktionieren konnten.
Ich habe deshalb nochmal eine abgespeckte sowie bereinigte Version gebastelt, die vielleicht etwas Klarheit schafft. Zudem kann man die angedachte volle Funktionalität wohl auch nur dann erkennen, wenn man das frmBahnen aufruft.
Die Kombis sollen so funktionieren, wie schon beschrieben. Aber um es nochmal klarer zu machen, hole ich nochmal etwas weiter aus. Wir haben verschiedene Fahrzeuge, alles Prototypen, die wöchentlich bestimmte Wartungsoperationen durchlaufen. Einmal monatlich wird etwas genauer nachgesehen, sodass sich die Wartung deutlich unterscheidet und wesentlich mehr Punkte aufweist.
Das cboAuswahl soll also zum einen markieren, welche Wartung gerade durchgeführt wird und außerdem das im UFo angesiedelte cboEinheit insofern beeinflussen, als dass dort eben nur die für die entsprechende Wartung vorgesehenen Punkte angezeigt werden.
Man könnte diese Abhängigkeit ja sicher weglassen. Ich sehe hier aber die Gefahr, dass Wochenwartung ausgewählt wird, obwohl es sich um eine Monatswartung handelt.
Der Status gibt dann lediglich an, ob eine Wartungseinheit durchgeführt wurde, oder ob diese entsprechend i.O. oder n.i.O ist.
Sorry, finde es einigermaßen schwierig eine Access-Problematik für außenstehende abzubilden. Taste mich aber langsam heran. Ich bitte um Nachsicht :)
Viele Grüße,
Dennis
EDIT: Die Rangordnung der Formulare ist übrigens frmBahnen --> frmWartungen --> frmWartungen_ufoWochenwartung
Ich bastele Dir am Wochende eine Eingabemaske (und verändere auch etwas das Datenmodell).
Wie verhalten sich denn Wochen- und Monatswartungen gegenüber einer Golfbahnwartung? In den ersten beiden sind Zeitzyklen zu erkennen - in letzterem fehlt ein Zyklus, dafür ist er aber bahnspezifisch - das ist seltsam oder falsch?!
Hi,
aber bitte nicht zu viel machen, will es ja lernen :)
Und zyklisch? Wie meinst Du das? Wegen der Daten? Das sind nur Platzhalter und werden immer dann eigegeben, wenn die Wartungen durchgeführt werden. Die Terminierung der Wartung soll nicht über die DB laufen. Golfbahn fliegt aus diesem Formular zudem noch raus, da die etwas anders abläuft und mehr für sich steht.
Ich merke auf jeden Fall, dass der Aufbau so einer DB durchaus sehr viel Zeit in Anspruch nimmt und man besonders am Anfang sich immer von Fortschritt zu Fortschritt hangelt. Und dies zumal, wenn man nebenher noch völlig andere Aufgaben zu erledigen hat und Access dabei erst an dritter oder vierter Stelle kommt. Macht trotzdem sehr viel Spaß!
Viele Grüße,
Dennis
EDIT: Golfbahnen werden nur einmal im Monat überprüft. Die anderen Fahrzeuge sind häufiger im Einsatz und zudem anfälliger, sodass sie daher aus Wartungsperspektive etwas anders behandelt werden.
Dennis, wie versprochen, kommt hier eine mögliche Umsetzung - in erster Linie für die Eintragung erledigter Wartungsarbeiten. Da ich nur vor einem 13-Zoll Bildschirm sitze, sind die Steuerelemente vielleicht etwas zu dicht beieinander - aber das kannst Du ja leicht korrigieren.
Der Code in frmRueckmeldung ist durchweg kommentiert - in den anderen beiden Formularen jedoch nicht.
Bedienung: der Mechaniker/Rckmelder sucht sich seinen Namen links oben im Kombifeld aus. Hier könnte auch eine Vorauswahl über den Windows-Benutzer oder eine vorherige Anmeldung wirken. Anschließend wird ein Bahntyp selektiert. Danach stehen die entsprechendenden Bahnen als auch die definierten Wartungen (Wochenwartung, Monatswartung) zum Bahntyp zur Auswahl zur Verfügung. Nun kann das Jahr der Wartung selektiert werden. Es entstammt der Wartungsplan-Tabelle, wobei das letzte Jahr vorselektiert ist. Und danach ist die Kalenderwoche einzutragen. Nun werden alle Daten, die vorher für eine Wochenwartung eines Bahntyps definiert wurden und das Attribut aktiv aufweisen untereinander angezeigt. Offene (nicht eingetragene Wartungspunkte) sind farblich leicht im Statusfeld gekennzeichnet. Alles was abgearbeitet und OK ist, muss nur durch Auswahl im Kombifeld Status ausgewählt werden. Namen und Datum werden übernommen, können aber auch individuell eingetragen werden. Ist ein Status nicht OK bzw. wurde ein Punkt ausgelassen, habe ich die Forderung erstellt, im Feld Notiz einen Text zu hinterlegen.
In jeder Zeile befindet sich ein Lösch- und ein Speicherknopf. Löscht man einen Datensatz, wird dieser als virtueller Datensatz anschließend wieder angezeigt - ist aber in keiner Tabelle phisikalisch vorhanden. Der Speicherknopf ist dann nützlich, wenn nur ein Eintrag erfolgen soll und dann in der Kopfzeile eine andere Bahn selektiert wird., weil ich die Steuerelemente in der Kopfzeile, während des Editierens sperre. Ansonsten müsste man einen anderen Datensatz anwählen oder einen Shortcut bestmmen.
Ausbauen ließe die die Sache noch, dass (zumindest für den Mechaniker) nur Wartungungsangebote noch nicht (komplett) erledigter Aufgaben angezeigt werden. Die Implementierung dürfte einfach sein - ist mir aber erst während des Schreibens eingefallen.
Hallo Lachtaube,
das sieht super aus und wesentlich funktionaler als das, was ich mir als blutige Anfänger zurecht gebastelt habe. Vielen Dank für die Mühe! Das ist wirklich viel mehr, als nötig gewesen wäre. Da kann man wirklich nur 'WOW' sagen.
Ich muss mir jetzt nur verständlich machen, wie die einzigen Elemente ineinander greifen. Du hast mir ja eine wirklich gute Vorlage geliefert, nach deren Vorbild ich die übrigen Tabellen werde implementieren können. Ich möchte Access vor allem lernen und nicht gemachte Nester besudeln. :)
Ist es erlaubt, dieses Thema weiter zu verwenden, falls ich zu diesem speziellen Fall Fragen haben sollte? Hierher gehört ist ja jetzt nicht mehr. Und abhängige Listen und Kombis habe ich jetzt auch noch nicht verstanden :D
Viele Grüße,
Dennis
Dennis, die Abhängigkeit (Listenfelder werden genauso wie Kombifelder behandelt) findet im Kopfbereich der Formulare statt. Ich verwende dabei jedoch Parameterabfragen statt Abfragetexte zusammenzuschustern. Statt der gespeicherten Parameterabfragen könnte man auch Formularparameter über den Aufbau-Assistenten verwenden und könnte zum richtigen Zeitpunkt ein Requery auf das Kombi- oder Listenfeld absetzen. Jede Abfrage wäre dann aber nur für diese eine spezielle Situation verwendbar, während ich hingegen einige Parameterabfragen in mehreren Formularen verwende.
Wenn es bei den Fragen weiterhin um die abhängigen Kombi- bzw. Listenfelder geht, solltest Du hier in diesem Thread mit Deinen Fragen verweilen. Ansonsten wäre ein neues Thema angebracht, in dem Du ja auch einen Link auf dieses Thema setzen kannst, um nicht den ganzen Sermon des Datenbankaufbaus noch einmal runterleiern zu müssen.