Ich habe mal wieder ein für mich komplizierte Frage.
Ich habe in einer Abfrage neben Kundennamen, usw. auch ein Feld ,,Land" eingegeben.
Als Kriterium habe ich für das Feld ,,Land" angegeben:
Wie "*" & [welches Land] & "*"
In einem Bericht will ich nun in der Überschrift angeben, für welches Land der Bericht angefertigt wurde.
In der Spalte Land gibt es die Länder ,,D, NL; B und LUX".
Es soll also stehen:
Land: xyz (Deutschland) oder ....
Wenn ich in der Abfrage kein Land angebe, sollte stehen:
Land: alle
Wie löse ich mein Problem?
Beste Grüße
Axel
Hallo Axel,
bei Deiner Schilderung fehlen Angaben, wie Deine zugrunde liegende Ländertabelle aussieht.
Etwa so:?
ID | Kz | Land
1 | B | Belgien
2 | D | Deutschland
Um etwas vorzugreifen:
ZitatID | Kz | Land
1 | B | Belgien
2 | D | Deutschland
Diese Herangehensweise halte ich nicht für besonders tauglich. Denn A für Österreich einzugeben, fällt noch ziemlich leicht. ;) Wer aber gibt ADN ein, wenn er Jemen meint? :-\
Ich würde die Tabelle auf ID und Land beschränken und diese beiden Felder in einem Kombinationsfeld zur Verfügung stellen: Spaltenanzahl = 2, gebundene Spalte = 1, Spaltenbreite = 0 cm; 3 cm.
Die Datenherkunft des Kombinationsfeldes incl. "Alle" würde dann eine Union-Abfrage sein:
Select ID as I, Land As L from tblLand
UNION Select 0, "* Alle *" As L from tblLand
ORDER BY L;So kannst Du bequem per Autovervollständigung das Land eingeben und anhand der ID auswerten. ID = 0 würde alle Länder auswerfen.
Hallo Maxel.
ich habe innerhalb einer mdb ein Feld, welches "KLAND" bezeichnet ist.
Darin stehen nur 4 Länder (Deutschland, Niederlande, Belgien und Luxemburg), im Feld abgekürzt D, NL, B, LUX
Insofern kann es keine Verwechslungen geben.
In der Abfrage habe ich auch das Feld KLAND und möchte nun, dass beim Berichtsausdruck - wenn ich auf die Abfrage nach dem Land mit "D" antworte - in der Überschrift steht: Land = Deutschland
... oder eben auch eines der anderen Länder, wenn der entsprechende Buchstabe angegeben wurde, oder aber "Alle", wenn ich nichts angebe.
beste Grüße
Axel
Hallo Axel,
ohne Zuordnungstabelle mit Länderkürzeln und Ländernamen wird das natürlich Krampf, denn sobald ein Land dazukommt, musst Du den Code verändern.
Deine Entscheidung.
Das Ereignis Beim Öffnen des Berichts könnte so gestaltet werden:
Option Compare Database
Option Explicit
Private Sub Report_Open(Cancel As Integer)
Dim strBox As String
strBox = InputBox("Bitte Land eingeben.", " Land", "Alle")
If strBox = "Alle" Then
Me!Titel.Caption = "Alle Länder"
Else
Me!Titel.Caption = "Land: " & Switch(strBox = "B", "Belgien", strBox = "D", "Deutschland", strBox = "LUX", "Luxemburg", strBox = "NL", "Niederlande")
Me.Filter = "KLand = '" & strBox & "'"
Me.FilterOn = True
End If
End Sub
Fehleingaben und Abbruch der Inputbox wären noch abzufangen.
Danke Maxel,
bis dahin eigentlich verstanden, aber es kommt eine Fehlermeldung:
... Datei kann das in Ihrem Ausdruck angesprochene Feld "Titel" nicht finden
Wo muss ich da was machen? Das feld in meiner DB heisst KLAND
Keine Sorge, es werden keine anderen Länder hinzukommen als die genannten.
Ich nehme an, ich muss den Code eingeben unter Ereignisse - Beim Öffnen ?!
Beste Grüße
Axel
Hallo,
ohne die Antwort von Maxel schmälern zu wollen, aber das Ganze ist Krampf, auch wenn keine Länder dazu kommen.
Eine Tabelle mit den Ländern und den Kürzeln mit einem Primärschlüssel (also 3 Felder) würde das Ganze über die Beziehungen ohne eine einzige Zeile VBA Code lösen.
@MzKlMu
Dass das Krampf ist, hatte ich schon erwähnt. Axel lässt sich aber wohl nicht belehren. :(
@Axel
Zitat
Ich nehme an, ich muss den Code eingeben unter Ereignisse - Beim Öffnen ?!
Das hast Du aus Private Sub
Report_Open messerscharf geschlossen!
Titel ist der Name eines Bezeichnungsfeldes, das im Formularkopf des Berichts platziert ist.
Hallo,
ja, das mit der separaten Tabelle ist ok und das habe ich umgesetzt.
Gebe ich also auf die Länderfrage "B" ein, erscheint im Bericht "Belgien"
Soweit so gut. Gebe ich aber auf die Länderfrage nichts ein (also nur ein ENTER), kommt "Belgien", weil das im Alphabet meiner Länder an erster Stelle steht. in diesem Fall würde ich aber gerne stehen haben: "Alle Länder"
Geht das?
Beste Grüße
Axel
@ Maxel,
doch, gerade weil ich alt bin, lasse ich mich - manchmal - belehren, wie Du aus dem vorherigen Posting siehst. Aber mein Problem ist noch nicht ganz gelöst ...
Hallo Axel,
schön, dass Du nun eine Ländertabelle hast. ;D
Zitat
Gebe ich also auf die Länderfrage "B" ein, erscheint im Bericht "Belgien"
Wo gibst Du das ein und wie wertest Du das aus? Denn mein Vorschlag, wie die Inputbox auszuwerten ist, ist ja nun mit Deiner Ländertabelle kein Thema mehr.
Hallo Maxel,
also:
- ich habe eine Abfrage, die fußt auf einer Tabelle: qryBudgetForecast + tblBudgetberechnung
- weiterhin die neue Tabelle tblLändertabelle
- in beiden Tabellen gibt es das Feld KLAND (das sind die berühmten Kürzel) und Land(ausgeschrieben)
- in der Abfrage wird unter "KLAND als Kriterium abgefragt:
wie "*" & [welches Land] & "*"
- und im Bericht habe ich in der Überschrift das Feld LAND definiert.
Wie gesagt, gebe ich einen Länderbuchstaben ein, dann erhalte ich im Bericht unter "LAND" den richtigen, vollen Ländernamen. Gebe ich aber durch Drücken der ENTER Taste nichts ein, kommt "Belgien" anstatt "Alle"
ich hoffe, ich habe mich nicht zu verquert ausgedrückt.
Beste Grüße
Axel
Hallo Axel,
Zitat
in beiden Tabellen gibt es das Feld KLAND (das sind die berühmten Kürzel) und Land(ausgeschrieben).
Das ist Unsinn - dann brauchst Du auch keine Ländertabelle.
Die Ländertabelle sollte folgende Struktur haben: ID (Zahl = Autowert) und Land (Text). Auf das Länderkürzel kannst Du verzichten.
Das Feld KLand in der anderen Tabelle muss vom Typ Zahl sein und als Fremdschlüssel die IDs aus der Ländertabelle aufnehmen. Dann hast Du zunächst mal die 1. Normalform hergestellt.
Das weitere Vorgehen mittels Union-Abfrage hatte ich gestern Abend geschildert.
Hallo,
ZitatAuf das Länderkürzel kannst Du verzichten.
Auf das Länderkürzel würde ich nicht verzichten. Es wird ja möglicherweise auch noch als Kürzel gebraucht. Und aus dem Ländernamen lässt es sich nicht ableiten (NL). Und er will ja nach D etc. suchen.
Ja, so geht es auch. Danke für Deine Bemühungen
Beste Grüße
Axel