Hallo,
Ist es möglich wenn ich 2 Dropdownfelder habe, eines davon auszublenden, je nachdem was das 1. anzeigt. Beispiel: Das erste Dropdownfeld kann 6 verschiedene Sachen anzeigen, bei einem dieser Einträge aber gibt es noch ein Unterverzeichnis, so dass wenn dies im 1. Dropdownfeld angezeigt wird, erscheint das 2. Dropdownfeld mit dem ich dann das Unterverzeichnis aussuchen kann. Ist dies überhaupt möglich, und wenn ja wie?
Lg
Hi,
Ausblenden ist machbar mit der Eigenschaft
If "Deine Bedingung = was auch immer" then
Me.DeinFeld.Visible = False
else
Me.DeinFeld.Visible = true
end if
Harald
Vielen Dank
Wo in welches Dropdown muss dieses Vba geschrieben werden, in das Dropdown was immer zu sehen ist, bzw in das was ein und ausgeblendet werden soll?
Lg
Hi,
vom 1. Dropdown (was immer zu sehen ist) in das Ereignis "Nach Aktualisieren".
Harald
Danke
Ich kriege hierbei immer Laufzeitfehler. Das Vba sieht so aus:$
Private Sub ServiceAttache_AfterUpdate()
If "ServiceAttache = MAN" Then
Me.ServiceManoeuvre.Visible = False
Else
Me.ServiceManoeuvre.Visible = True
End If
End Sub
ServiceAttache ist der Name des 1. Dropdownfeldes
ServiceManoeuvre der Name des 2. Dropdownfeldes was ein und ausgeblendet werden soll
MAN der Wert bei dem das 2. Dropdownfeld eingeblendet werden soll.
Hallo
ein kleiner Fehler ein Anführungszeichen steht falsch.
Richtig:
If ServiceAttache = "MAN" Then
Gruß
Johann
Ja das war mir auch aufgefallen, hatte dies auch ausprobiert, dann startet der Debugger zwar nicht, aber das Feld wird trotzdem nicht unsichtbar ???
Ich gebe ja den Namen ein des Feldes den ich im Eigenschaftsfenster unter "Andere" "Name" angegeben habe?
Hallo,
setzte mal einen Haltepunkt und schau dir an was im Feld ServieAttache steht.
Ich gehe mal davon aus das hier nicht MAN der Inhalt ist.
Gruß
Johann
Das Problem könnte sein weil MAN aus einem Nachschlagefeld kommt, dass ich mit den Zahlen (Auto-Id) Werten fahren muss, werde das mal probieren
Hallo,
ZitatDas Problem könnte sein weil MAN aus einem Nachschlagefeld kommt,
dringender Rat: Verzichte in Tabellen unbedingt auf Nachschlagefelder. Die sind von Übel und verhindern den sauberen Aufbau einer DB. Da hat Microsoft Mist gemacht, so schön wie das am Anfang aussieht. Die Probleme bekommst Du ja gerade mit.
Hinter MAN steht eine Zahl und die muss verwendet werden.
Nähere Infos zu den Nachschlagefeldern siehe hier:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern (http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern)
In Formularen kannst Du diese problemlos verwenden.
Hi,
noch ein Hinweis:
Auf dem Feld, das ausgeblendet werden soll, darf der Fokus nicht gesetzt sein.
Harald
Also ich wurde damals in Access mit Nachschlagefelder angelernt, ich denke mal meine Datenbank kann ich nicht so ohne weiteres zurücksetzen und ohne Nachschlagefelder arbeiten. Und dann käme noch hinzu: Wenn man keine Nachschlagefelder macht, wie kann man dann in der Tabelle ein Dropdown Menu bekommen?
Das mit der Ziffer funktioniert allerdings auch nicht. Einen Focus habe ich auf das Feld per VBA nicht gerichtet, oder meinst du eine konkrete Option in den Eigenschaften?
Hallo,
ZitatAlso ich wurde damals in Access mit Nachschlagefelder angelernt,
Da hat man Dir mit Verlaub Unsinn bei gebracht. Der obige Link beschreibt deutlich die Nachteile. Und die solltest Du glauben.
ZitatWenn man keine Nachschlagefelder macht, wie kann man dann in der Tabelle ein Dropdown Menu bekommen?
In der Tabelle benötigt man keine solche Felder. Die sind dort völlig fehl am Platz. Du kannst auch in der Tabelle einfach aus den Nachschlagefeldern Textfelder machen.
Wie ich weiter oben schon geschrieben habe, kannst Du diese Felder in Formularen problemlos verwenden. Nur in Tabellen haben diese definitiv nichts zu suchen.
Du hast absolut keine Nachteile (oder Kompfortverlust) wenn Du Nachschlagefelder (=Kombinationsfelder) ausschließlich in Formularen benutzt.
ZitatDas mit der Ziffer funktioniert allerdings auch nicht.
Was soll man mit einer solchen lapidaren Feststellung anfangen?
Meinst Du nicht, es wäre hilfreich, wenn Du den verwendeten Code zeigen würdest?
Der Code ist der gleiche wie oben habe nur den MAN durch die Ziffer des Nachschlagefeldes gewechselt:
Private Sub ServiceAttache_AfterUpdate()
If ServiceAttache = "8" Then
Me.ServiceManoeuvre.Visible = False
Else
Me.ServiceManoeuvre.Visible = True
End If
End Sub
Hallo,
das habe ich befürchtet. ;D Eine Ziffer ist ja kein Text.
Private Sub ServiceAttache_AfterUpdate()
Me.ServiceManoeuvre.Visible = Not Me.ServiceAttache = 8
End Sub
Die eine Zeile deckt alles ab, If... Then ist nicht notwendig.
Danke, aber auch damit bekomme ich es nicht hin. Welchen Namen nehme ich für die Zeile , nicht dass hier der Fehler liegt. Ist es der Name der im Dropdownfeld angezeigt wird, oder ist es der Name den ich diesem Feld unter dem Eigenschaftsblatt - Andere - Name angegeben habe. ???
Hallo,
erstelle eine Beispieldb mit den von Dir verwendeten Namen und lade diese hier hoch.
Ich kriege meine Datenbank nicht klein genug um sie hierhin zu setzen, ich komme nicht unter 350kB
Ich versuche das Problem nochmals zu schildern
Ich habe ein Dropdownfeld oben dort stehen meine Arbeiter. Da drunter kommt das Feld ServiceAttache wo verschiedenes angezeigt wird eben auch MAN. Daneben ist dann das Dropdownfeld das ausgeblendet werden soll.
Wenn ich nun einen namen aussuche dann zeigt er mir im Service Attache dierses an eben halt auch MAN. Aber das Feld daneben bleibt immer sichtbar. Wenn ich jetzt aber das Service Attache selber auf MAN setze oder eine andere Option dann verschwindet das Feld nebenan. Nicht aber wenn ich in meinem Dropdownfeld einen Namen aussuche, da bleibt das Feld immer sichtbar egal ob MAN angezeigt wird oder nicht.
Hallo,
ZitatIch kriege meine Datenbank nicht klein genug um sie hierhin zu setzen, ich komme nicht unter 350kB
Hast Du die DB schon komprimiert (
Access Dienstprogramm)?
Außerdem würde es genügen nur die für das Problem relevanten Objekte in die Beispieldb zu übertragen.
Ja hatte ich gemacht. Ich denke meine Vorgehensweise ist falsch. Ich ändere ja den Namen im Dropdown, diesem müsste ich wahrscheinlich diese Zeile AfterUpdate hinzufügen, dann müsste es klappen denke ich, weil die anderen Dropdowns passen sich ja dem Namen an, der an 1. Stelle steht. Ich krieg hier die Zeile aber nicht hinein, da dieses Dropdownfeld ein integriertes Makro enthällt was von Access gesetzt wurde, was ich nicht in VBA konvertiert kriege. Ich habe dafür soeben extra in Unterforum PROGRAMMIERUNG ein Thread eröffnet. Ich denke dann wäre das Problem gelöst
Hallo,
auch die Konvertierung in VBA wird das "Problem" so es denn eines ist, nicht lösen.
Vorzuziehen wäre das Hochladen Deiner DB. Ich weiß jetzt nicht, ob Du die Datei vor dem Hochlade-Versuch auch gezippt hast...
Doch gezippt komme ich immer noch auf diese 290kB obwohl ich die Datenbank so klein wie möglich gemacht habe, aber ein paar Sachen muß ich ja drin stehen lassen damit meine Funktion so bleibt wie sie in meiner Datenbank ist, und das reicht leider nicht :/
Hallo,
hast Du die DB auch komprimiert, wie weiter oben vorgeschlagen?
Komprimieren ist nicht das Gleiche als Zippen?
Hast Du Bilder, Logos oder ähnliches in der DB?
Hi,
wenn ich das recht verstanden habe, hast Du DREI Felder:
1. wo die Arbeiter drin stehen
2. ServiceAttache
3. das auszublendende
Vielleicht erreichst Du Dein Ziel, wenn Du in Deinem ersten Feld im Ereignis "nach Aktualisierung" eine Zeile in der Art hinzufügst:
call ServiceAttache_AfterUpdate
Ich setze jetzt voraus, dass dort steht:
Private Sub ServiceAttache_AfterUpdate()
Me.ServiceManoeuvre.Visible = Not Me.ServiceAttache = 8
End Sub
Harald
Hallo ja genau das wollte ich versuchen, da aber unter der Funktion AfterUpdate im Namensdropdown hier ein Makro drin steht was Access hinzugefügt hat, kann ich keinen VBA Code hinzufügen, da hänge ich momentan. Ich kriege das Makro auch nicht in VBA umgewandelt. Sonst hätt ich den Befehl unter das Arbeiterdropdown hinzugefügt.
Ich kriege das Ding nicht unter 290kB beim allerbesten Willen, ich habe es aufs maximal geschrumpft, repariert und komprimiert, und gezip't. Nichts zu machen. Dass man nur 200kB hochladen kann ist wirklich extrem extrem wenig.
Hallo,
schick mir mal (ausnahmsweise) die gezippte Datei an
de ef sechs ge el ät ge em ix . de eh
sechs =6