PDA

Vollständige Version anzeigen : Bericht über eine Feldliste


bbachmann
30.06.2001, 17:32
Hallo Ihr

Ich habe mal wieder keine Ahnung.

Habe in meiner DB eine Tabelle mit den Feldern 1 bis X und anderen Einträgen.
Jetzt möchte ich in einem Formular ein Kombinationsfeld mit der Feldliste (1 bis x) anlegen, um nach Auswahl eines der Felder die Abfrage, bzw. den Bericht für das entsprechende Feld (mit den anderen Daten aus der Haupttabelle, die zu dem Feld gehören) zu erhalten, am besten alles gleich nach Aktualisierung des Kombifeldes.
Es sollen die Daten wiedergegeben werden, wo z.B. Feld1 <>0 ist.
Wie macht man das???
Ich habe schon eine Abfrage erstellt, die als Ausdruck das Kombifeld aus dem Formular enthält.
Auf diese Abfrage soll der Bericht basieren.

Der Hintergrund ist, ich möchte weg von den vielen Buttons um die einzelnen Berichte zu öffnen.

Ich hoffe, ich habe es einigermaßen verständlich formuliert.

Gruß Burkhard

------------------

Phillip-Berlin
30.06.2001, 20:55
ganz einfach gehts mit if then
also wenn der erste eintrag des listfeldes gewählt ist dann öffne bericht 1 .. welcher dann wieder auf eine bestimmte tabelle zugreift ..

if Me.BenutzerListe.Column(1) = blabla then
docmd.openreport na und so weiter
end if

bbachmann
01.07.2001, 14:17
... jo, dann muß ich aber immer noch viele viele Berichte erstellen, (und es werden immer mehr) oder?
Ich hab' mir das so vorgestellt, daß mein Listenfeld (aus dem Formular)bzw. das Feld, was dort ausgewählt ist, auch gleichzeitig die Herkunft für den Bericht ist. (also quasi variabel)
Geht das???
2. sollen nur die Datensätze zurückgegeben werden, die im ausgewählten Feld einen Eintrag enthalten. (also <>0)
Das muß ich dann wohl in der Abfrage machen!?

Gruß nach Berlin

Mad
01.07.2001, 17:47
Hallo Burkhard,
das Kombifeld hast du sicher schon hingekriegt (Herkunftstyp Feldliste, Datenherkunft NamedeinerTabelle).
Was im Kombifeld ausgewählt ist, heißt ItemsSelected (glaube ich). Deine Abfrage könnte dann heißen "ItemsSelected <> 0", dann bräuchtest du nur eine Abfrage.
Gruß, Dietmar

Phillip-Berlin
01.07.2001, 19:23
wie meinst du das mit der herkunft für den bericht?
soll der wert in deinem listenfeld einkriterium für eine abfrage sein?
oder sollen alle werte aus deinem listenfeld als bericht ausgespuckt werden?
bitte eine genauere erläuterung
:)

bbachmann
02.07.2001, 14:35
Hallo Dietmar

Ich habe das jetzt wie folgt gemacht.

SELECT [tab_GermanTop100].[Interpret], [tab_GermanTop100].[Titel], [tab_GermanTop100].[Länge], Formulare!frm_Start![Feldliste] AS Ausdr1
FROM tab_GermanTop100
WHERE ((Formulare!frm_Start![Feldliste].ItemsSelected<>0));

Im Bericht habe ich das Feld Ausdr1 eingesetzt.
Im Formular wähle ich den Eintrag im Kombifeld aus.
Datenherkunft für das Kombifeld ist allerdings qry_Felder, die nur die Felder 1 - x aus der Tabelle enthält.
Über einen Butten möchte ich dann die Berichtvorschau öffnen und bekomme folgende Meldungen.
Parameterwerte: Formulare!frm_Start!Feldliste.ItemsSelected und Ausdruck1.
Danach wird die Aktion abgebrochen.

Gruß Burkhard

Mad
03.07.2001, 19:19
Hallo Burkhard,
das mit "ItemsSelected" klingt zwar gut, bei mir funktionieren jedoch damit nicht einmal die Beispiele aus der Online-Hilfe.

Jetzt habe ich was anderes gefunden:

Mit "Kombifeldname.Text" übernimmst du den ausgewählten Text des Feldes (=Feldbezeichnung in deiner Abfrage). Du kannst als abfragen ...where Kombifeldname.Text <> 0

Hoffe, so geht´s

Gruß, Dietmar

bbachmann
04.07.2001, 06:48
Hi Phillip

Also, das Listenfeld enthält die Felder1 bis x der Tabelle, die für das Abfragekriterium bzw. den Bericht herangezogen werden.
Wenn ich z.B. Feld1 auswähle, soll dieses in die Abfrage eingebunden werden und alle Datensätze ausgegeben werden, wo der Wert in Felt1 (in der Tabelle)<>0 ist.
Danach will ich mit einem Button die darauf beruhende Berichtsvorschau öffnen.
Ich hab's immer noch nicht raus.

Grüße nach Berlin

Scorefun
04.07.2001, 20:57
Hi BBachmann,

den Verweis auf den Feldnamen im Formular musst Du im SQL-String entsprechend ausklammern:

Dim strstring as string

strstring = SELECT [tab_GermanTop100].[Interpret], [tab_GermanTop100].[Titel], [tab_GermanTop100].[Länge]," & "[" & Formulare!frm_Start![Feldliste] & "] AS Ausdr1
FROM tab_GermanTop100
WHERE (([" & Formulare!frm_Start![Feldliste] & "] <>0));

(Ungetestet, aber in etwa so)
<>0 bedeutet aber, das es sich bei den zu filternden Daten um ein Zahlenfeld handelt, oder?

Dann muesste Dein ausgewahlter Feldname auch korrekt in der Abfrage uebersetzt werden.

HTH

bbachmann
05.07.2001, 19:18
Hallo Ralf

Tut mir Leid, das ist zu hoch für mich.

Das Ereignis für den Button zum Öffnen des Berichts sieht bisher so aus:

Private Sub btn_Top100_Click()
'Öffnet Bericht Top100.
On Error GoTo Err_btn_Top100_Click
Dim stDocName As String
stDocName = "rep_Top100"
DoCmd.OpenReport stDocName, acPreview
Exit_btn_Top100_Click:
Exit Sub
Err_btn_Top100_Click:
MsgBox Err.Description
Resume Exit_btn_Top100_Click
End Sub

Herkunft des Berichts soll sein:

SELECT tab_GermanTop100.Interpret, tab_GermanTop100.Titel, tab_GermanTop100.Länge
FROM tab_GermanTop100
WHERE ((([Formulare]![frm_Start]![Feldliste].[AuswahlText])<>0));

Bitt hilf mir noch ein bischen auf die Sprünge, okay?

Scorefun
05.07.2001, 20:00
Hi BBachmann,

wenn man einen SQL-String zusammensetzen moechte, indem eine Variable enthalten ist (in diesem Fall Der Text aus Deinem Kombifeld) so muss man diese Variablen ausserhalb des Strings setzen.
Wenn also in meinem Beispiel der übersetzte SQL-String in der Variablen strstring gespeichert ist kannst Du Deinen Bericht oeffnen mit:

DoCmd.OpenReport stDocName, acPreview, strstring

vielleicht klappt's jetzt.
Let me know