If Bedingung

Ich habe eine Textfeld Namens „Region“.
Dessen Inhalt (Regionskürzel) im Endlosformular wird regelmäßig auf Grund einer Suche geändert.

Nun möchte ich zu diesem Inhalt in einem ungebundenen Textfeld eine zur Region feststehende Referenznummer via If-Bedingung anzeigen.

Das ungebundene Textfeld heisst „RegionNummer“. Im Ereignis „Vor Aktualisierung“ habe ich folgende Ereignisprozedur eingefügt.

Private Sub RegionNummer\_BeforeUpdate(Cancel As Integer)
 If Region = NDS Then
 RegionNummer = 01
 ElseIf Region = MDS Then
 RegionNummer = 02
 ElseIf Region = ODS Then
 RegionNummer = 03
.
.
.
 End If
End Sub 

Leider passiert nichts :frowning:
Was mache ich falsch und was muss ich ändern?

Alternativ habe ich im Steuerelementeinhalt von RegionNummer folgendes eingegeben:

=Wenn([Region]=„NDS“;„01“;Wenn([Region]=„MDS“;„02“;Wenn([Region]=„ODS“;„03“)))

Das klappt probehalber mit wenigen Bedingungen ganz gut. Da es sich jedoch um 18 Regionen handelt, meckert Access: „Ausdruck zu komplex“.

Wie kann ich mein Problem lösen?

Vielen Danke für Eure Lösungsvorschläge im Voraus.

Grüsse aus Osnabrück,
Hans

Hallo Hans,

Das ungebundene Textfeld heisst „RegionNummer“. Im Ereignis
„Vor Aktualisierung“ habe ich folgende Ereignisprozedur
eingefügt.

falscher Zeitpunkt!
nutze das Ereignis: bei Fokusverlust
des Feldes Region

Private Sub RegionNummer_BeforeUpdate(Cancel As Integer)
If Region = NDS Then
RegionNummer = 01
ElseIf Region = MDS Then
RegionNummer = 02
ElseIf Region = ODS Then
RegionNummer = 03
.
.
.
End If

füge dann noch hinzu:
Me.RegionNummer.Requery '= Feld Anzeige aktualisieren

End Sub

BTW: ich würde ein Kombifeld für Region nutzen. In der Tabelle wären dann die Regionen mit Kennzahlen gespeichert.
Du müsstest nur noch die zweite Spalte an RegionNummer übergeben.

Me.RegionNummer = Me.Region.Column(1)

Eine Zeile Code und fertig.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Ausführen bei Fokuserhalt und Nach Aktualisierung

If me.Region = „NDS“ Then
me.RegionNummer = „01“
ElseIf me.Region = „MDS“ Then
me.RegionNummer = „02“
ElseIf Region = „ODS“ Then
me.RegionNummer = „03“
end if

Gruß EPa

Hallo Wolfgang,

falscher Zeitpunkt!
nutze das Ereignis: bei Fokusverlust
des Feldes Region

Me.RegionNummer.Requery '= Feld Anzeige aktualisieren

habe ich befolgt, leider ohne Auswirkung.

BTW: ich würde ein Kombifeld für Region nutzen. In der Tabelle
wären dann die Regionen mit Kennzahlen gespeichert.

ich habe leider keine Schreibrechte für die Tabelle.

Grüsse aus Osnabrück,
Hans

Hallo Epa,

Ausführen bei Fokuserhalt und Nach Aktualisierung

Habe ich sowohl einmal für das Feld Region als auch für das Feld RegionNummer versucht.

Hat leider auch nicht den gewünschten Effekt erzeugt.

Grüsse aus Osnabrück,
Hans

Hallo Hans,

habe ich befolgt, leider ohne Auswirkung.

das kann nicht sein, es sei denn, du hast da noch anderen Code laufen!?

BTW: ich würde ein Kombifeld für Region nutzen. In der Tabelle
wären dann die Regionen mit Kennzahlen gespeichert.

ich habe leider keine Schreibrechte für die Tabelle.

dann mach dir eine Kopie der Region-Tabelle STRG+C und STRG+V für dein Kombifeld.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

habe ich befolgt, leider ohne Auswirkung.

das kann nicht sein, es sei denn, du hast da noch anderen Code
laufen!?

Ja, im Formularkopf sind ungebundene Textfelder mit Code zum Suchen versehen.
In den Feldern suche ich, die lösen ein Abfrage aus die im Detailbereich als Endlosformular eingegeben werden.
Aber es passiert wirklich nichts, wenn ich so vorgehe wie beschrieben.

ich habe leider keine Schreibrechte für die Tabelle.

dann mach dir eine Kopie der Region-Tabelle STRG+C und STRG+V
für dein Kombifeld.

Die Abfrage bezieht sich auf eine riesige Tabelle, die ich immer morgens in meine DB exportiere und jedes Mal um einiges manuell ergänze. Ich glaube bei weiteren manuellen Ergänzungen wird aus dem Fortschritt wieder ein Rückschritt :frowning:

Grüsse aus Osnabrück,
Hans

Aber es passiert wirklich nichts, wenn ich so vorgehe wie
beschrieben.

Ich glaube das fehlen noch einige Informationen?
Hoffe, dass ich es richtig verstanden habe:
Im Formularkopf gibt es zwei ungebundene Felder:
Region
Regionnummer

Beim Feld Region steht im Event (bei Fokusverlußt) der von mir vorgeschlagene Code?

Wenn das Feld Region verlassen wird, wird das Feld Regionnummer nicht aktualisiert? Egal welchen Regioncode du eingibst?

Die Abfrage bezieht sich auf eine riesige Tabelle, die ich
immer morgens in meine DB exportiere und jedes Mal um einiges
manuell ergänze. Ich glaube bei weiteren manuellen Ergänzungen
wird aus dem Fortschritt wieder ein Rückschritt :frowning:

ich glaube wir reden aneinander vorbei?

  • erstelle eine neue Tabelle REGIONCODE
  • mit den Feldern REGION und REGIONNUMMER
  • erstelle ein Kombifeld zur Auswahl
  • als Datenbasis verwendest du die Tabelle REGIONCODE
  • ggf. schaltest du eine Abfrage zur Sortierung dazwischen

Falls gewünscht und/oder möglich, schick mal die MDB rüber, ich schau dann mal drüber.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo,

Knackpunkt 1 ist:

schlampige/falsche Verwendung von Literalen und fehlene Referenzierung auf das akt Form(objekt):

If Me! Region = „NDS“ Then
Me!RegionNummer = "01"
ElseIf Me!Region = „MDS“ Then
Me!RegionNummer = „02“
ElseIf Region = „ODS“ Then
Me!RegionNummer = „03“
.
.
.
End If

Knackpunkt 2 ist:

solche „magic numbers“ codiert man nicht hart, sondern holt die Werte aus einer Tabelle. ( z. B. wie angesprochen mittels Kombifeld)

Knackpunkt 3 ist:

falsches Ereignis. Dieses tritt nur auf, wenn tatsächlich etwas im Feld „RegionNummer“ geändert wird. Damit wird aber der Code in seiner Bedeutung (soll heißen, das was passieren soll) ad adsurdum geführt.

Sorry, aber der Code kann so nicht funktionieren…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Wann gibts du denn eigentlich deinen Wert in das ungebundene Textfeld ein?

Ok Wolfgang,

ich versuche mich mal strukturierter zu formulieren.

Formular Datenherkunft: abfr_deckblatt_seriendruck

Die Abfrage ‚abfr_deckblatt_seriendruck‘ trifft eine Auswahlabfrage aus der Tabelle ‚Mitglieder‘.

Im Formularkopf wird gesucht mit

Me.Filter = „[ORT] Like '“ & strOrt & „’ And [PLZ] Like '“ & strPlz & „’“
Me.FilterOn = True

Im Detailbereich des Endlosformulars werden die gefundenen Datensätze komplett angezeigt.

Unter anderem ein Textfeld mit dem Steuerelementeinhalt ‚Region‘.

Zu dieser ‚Region‘ möchte ich eine korrespondierende Nummer anzeigen lassen.

Mittlerweile habe ich eine zweite Tabelle erstellt, sie heisst ‚RegionNummern‘ und hat die Felder ‚Region‘ und ‚VZNummer‘.
Genau dies ‚VZNummer‘ möchte ich mir anzeigen lassen.

Grüsse aus Osnabrück,
Hans

Hallo Franz,

solche „magic numbers“ codiert man nicht hart, sondern holt
die Werte aus einer Tabelle. ( z. B. wie angesprochen mittels
Kombifeld)

Ok, ich sehe es ja ein. Habe dafür jetzt eine Tabelle angelegt.
Lese bitte dazu meine andere Antwort vom 01.12.08.

Grüsse aus Osnabrück,
Hans

Hallo Hans,

Me.Filter = „[ORT] Like '“ & strOrt & „’ And [PLZ] Like '“ &
strPlz & „’“
Me.FilterOn = True

wirklich AND, wäre da nicht OR besser?

Unter anderem ein Textfeld mit dem Steuerelementeinhalt
‚Region‘.

ändere das in ein Kombifeld (Rechtsklick -> ändern in)

Zu dieser ‚Region‘ möchte ich eine korrespondierende Nummer
anzeigen lassen.

in einem separaten Feld? in einem Popupfenster, im Kopf/Fuß des Formulares?

Mittlerweile habe ich eine zweite Tabelle erstellt, sie heisst
‚RegionNummern‘ und hat die Felder ‚Region‘ und ‚VZNummer‘.

genau richtig gemacht

Genau dies ‚VZNummer‘ möchte ich mir anzeigen lassen.

da du nun ein Kombifeld aus dem Feld Region gemacht hast, kannst du nun deine neue Tabelle als Datenquelle angeben.

Beispiel:

  1. Spalte-> Region
  2. Spalte-> nurOptik: [Region] & " (" & [VZNummer] & „)“

Spaltenanzahl = 2
Spaltengrößen: 0cm;5cm
Aktiviert = nein
Gesperrt = ja

fertig

in deinem „alten“ Feld Region wird nun beides angezeigt, aber nur die Region ist und bleibt dort gespeichert.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

Beispiel:

  1. Spalte-> Region
  2. Spalte-> nurOptik: [Region] & " (" & [VZNummer] & „)“

Spaltenanzahl = 2
Spaltengrößen: 0cm;5cm
Aktiviert = nein
Gesperrt = ja

Hm?

Also, ich habe jetzt zwei Tabellen ‚Mitglieder‘ und ‚RegionNummern‘.
In beiden Tabellen existiert das Feld ‚Region‘.

Das Formular, in dem die Daten angezeigt werden sollen, greift auf die Abfrage ‚abfr_seriendruck‘. Diese Abfrage ist an die Tabelle ‚Mitglieder‘ gebunden.

Ich habe nun in mein Formular ein Kombinationsfeld eingefügt. Es heisst ‚VZN‘.
Bei Steuerelementeinhalt steht nichts.
Bei Datensatzherkunft steht:
SELECT RegionNummern.VZNummer FROM RegionNummern WHERE (((Mitglieder.Region)=(RegionNummern.Region)));

Leider wird immer nur die gleiche VZNummer für alle Regionen angezeigt und das auch nur, weil ich im Kombinationsfeld bei aktiviert Ja angeklickt habe und ich dann auf den Pfeil klicke, damit mir die eine VZNummer angezeigt wird, die wie geschrieben leider für alle Regionen identisch ist.

Was habe ich übersehen oder falsch gemacht?

Grüsse aus Osnabrück,
Hans

Hallo Hans,

du bist auf dem Holzweg, und kommst aus deiner Denkschleife nicht heraus. Du benötigst KEIN zusätzliches Feld VZN!!

Du hast ein Endlosformular, wo u.a. das Feld REGION im Detailbereich angezeigt wird!?

  • Rechtsklick auf das Feld REGION
  • ändern in -> Kombifeld

dann

  • Eigenschaften
  • Datensatzherkunft
  • am Ende der Eingabezeile auf die drei Punkte klicken […]
  • die Abfragemaske wird geöffnet
  • hole dir als Tabelle die ‚RegionNummern‘
  • dann weiter wie schon beschrieben …

Beispiel:

  1. Spalte-> Region
  2. Spalte-> nurOptik: [Region] & " (" & [VZNummer] & „)“
  • Abfrage schließen

Eigenschaften von Feld REGION ändern:

Spaltenanzahl = 2
Spaltengrößen: 0cm;5cm
Aktiviert = nein
Gesperrt = ja

Ich habe nun in mein Formular ein Kombinationsfeld eingefügt.
Es heisst ‚VZN‘.

davon habe ich nichts geschrieben, es ist überflüssig!

Bei Steuerelementeinhalt steht nichts.
Bei Datensatzherkunft steht:
SELECT RegionNummern.VZNummer FROM RegionNummern WHERE
(((Mitglieder.Region)=(RegionNummern.Region)));

falsch, das kann in einem Endlosformular nicht funktionieren.

Leider wird immer nur die gleiche VZNummer für alle Regionen
angezeigt und das auch nur, weil ich im Kombinationsfeld bei
aktiviert Ja angeklickt habe und ich dann auf den Pfeil
klicke, damit mir die eine VZNummer angezeigt wird, die wie
geschrieben leider für alle Regionen identisch ist.

logisch, es fehlt der Bezug zur aktuellen Region. Es wird immer das oberste Element ausgewertet, aber dann für alle Zeilen, weil ja in jeder Zeile das Feld VZN und und REGION vorkommt.

Was habe ich übersehen oder falsch gemacht?

komm doch mal von deinem Holzweg runter und tue doch einfach mal was ich dir hier aufschreibe, Schritt für Schritt und schau dir dann das Ergebnis an.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

du bist auf dem Holzweg, und kommst aus deiner Denkschleife
nicht heraus. Du benötigst KEIN zusätzliches Feld VZN!!

bin vom Holzweg abgekommen :wink: es wird die korrespondierende Nummer angezeigt.

Klappt prima!!

Danke schön :smile:

Um jetzt aber nicht auf’s Glatteis zu kommen:
Ich habe erneut ein Feld ‚Region‘ eingefügt, dass ursprüngliche wieder, damit weiterhin der Name der Region angezeigt wird.
Ich hoffe, man hätte das nicht auch schon mit Deinem Lösungsvorschlag machen können.

Nun noch eine kleine Design Frage:
Kann man den unschönen Pfeil irgendwie entfernen?
… ich habe nur links und rechts gefunden :frowning:

Grüsse aus Osnabrück,
Hans

Hallo Hans,

du bist auf dem Holzweg, und kommst aus deiner Denkschleife
nicht heraus. Du benötigst KEIN zusätzliches Feld REGION!

bin vom Holzweg abgekommen

scheint mir nicht so!? :frowning:

es wird die korrespondierende Nummer angezeigt.

es sollte BEIDES die Region UND Nummer angezeigt werden!!
Ziehe das Feld mal etwas weiter auf= vergrößer das Feld nach Rechts.

Klappt prima!!
Danke schön :smile:

freut mich ein wenig :smile:

Um jetzt aber nicht auf’s Glatteis zu kommen:
Ich habe erneut ein Feld ‚Region‘ eingefügt, dass
ursprüngliche wieder, damit weiterhin der Name der Region
angezeigt wird.

also DOCH der Holzweg :frowning:

Ich hoffe, man hätte das nicht auch schon mit Deinem
Lösungsvorschlag machen können.

doch, so war es eigentlich angedacht, und wenn du es genau so wie ich es dir beschrieben habe gemacht hast, solltest du beides im „alten“ Feld Region sehen.

Nun noch eine kleine Design Frage:
Kann man den unschönen Pfeil irgendwie entfernen?
… ich habe nur links und rechts gefunden :frowning:

überdecke den Pfeil einfach mit einem Rechteck dessen Hintergrund du in der entsprechenden Farbe färbst.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)