Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Axel18 am September 27, 2011, 18:13:40

Titel: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 27, 2011, 18:13:40
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


Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 27, 2011, 20:09:02
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
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 27, 2011, 20:51:58
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.


Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 08:45:00
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
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 28, 2011, 12:22:23
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.

Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 13:22:52

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

Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: MzKlMu am September 28, 2011, 13:28:29
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.
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 28, 2011, 13:52:16
@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.
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 14:09:10
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

Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 14:10:59
@ 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 ...

Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 28, 2011, 14:16:29
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.
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 14:25:57
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


Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Maxel am September 28, 2011, 14:57:05
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.
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: MzKlMu am September 28, 2011, 15:29:08
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.
Titel: Re: Wie kann ich aus der Angabe "D" im Bericht "Deutschland" erhalten?
Beitrag von: Axel18 am September 28, 2011, 15:39:58
Ja, so geht es auch. Danke für Deine Bemühungen

Beste Grüße
Axel