PDA

Vollständige Version anzeigen : bericht mit aktuellem datendatz


nestea
10.08.2001, 09:16
bonjour,

bin gerade dabei, einen bericht ("b_kopf") zu erstellen.
er soll nach eingabe von daten in ein formular ("f_kopf")durch einen button geöffnet werden.

ich habe als datenherkunft für den bericht eine abfrage erstellt, die die daten aus der tabelle "t_kopf" ausliest.

t_kopf
ID_kopf (autowert)
RT-Nr
Bezeichnung
Erstelldatum
...

in dem formular "f_kopf" ist nun ein button.
jetzt habe ich schon 3 möglichkeiten versucht, um den bericht mit diesem button zu öffnen. allerdings soll dabei nur der zuvor eingegebene, also aktuelle datensatz angezeigt werden.

1. möglichkeit
button bei "click" über makro laufen lassen
aktion: BerichtÖffnen
Berichtsname: b_kopf

bei dieser möglichkeit wird mir mein bericht angezeigt. allerdings erscheinen alle bisher einegegebenen datensätze.

2. möglichkeit
button bei "click" über VBA binden

DoCmd.OpenReport "b_kopf", acViewPreview, "q_t_kopf", ""

bei dieser möglichkeit erscheint eine parameterabfrage, die mich nach ID_kopf (autowert in tabelle t_kopf) fragt. gebe ich den wert des aktuellen datensatzes ein, wird mir auch der bericht mit genau diesem datensatz angezeigt.

3. möglichkeit
button bei "click" über anderes VBA gebunden

Dim stDocName As String, stLinkCriteria As String
stDocName = "Tb_kopf"
stLinkCriteria = "[ID_kopf]=" & Me![ID_kopf]


DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
DoCmd.PrintOut acPrintAll, , , acHigh, 1, True

bei dieser möglichkeit erscheint folgende fehlermeldung

Laufzeitfehler `3079`:
Das angegebene Feld "[ID_kopf]" kann sich auf mehr als eine der Tabellen beziehen, die im FROM -Abschnitt der SQL-Anweisung angegeben werden.

was mache ich falsch und wie schaffe ich es nun, daß wirklich nur der aktuelle datensatz im bericht angezeigt wird?

merci schon mal im voraus
nestea

MarkusR
10.08.2001, 11:53
Dritte Möglichkeit mit

stLinkCriteria = "[t_kopf].[ID_kopf]=" & Me![ID_kopf]

Viel Glück

Markus

nestea
13.08.2001, 06:30
hi markus,

jetzt habe ich deinen vorschlag ausprobiert, aber jetzt eine parameterabfrage, die mich nach ID_kopf befragt. :(
ich bin leider überhaupt nicht bewandert in visual basic. hab mir diese lösung eben auch nur aus einem alten beitrag aus dem forum geholt.
vielleicht noch ne idee, was da zu machen ist?

danke schon mal im voraus
nestea :confused:

MarkusR
13.08.2001, 11:09
versuch mal

if not isnull(Me.ID_kopf.value) then
docmd.OpenReport "b_kopf",acViewPreview,,"[t_kopf].[ID_Kopf]=" & cstr(Me.ID_kopf.value)
else
beep
end if

jedenfalls wäre die anweisung

docmd.OpenReport "Berichtsname",acViewPreview,,"[Tabellenname].[Feldname]=" & cstr(Me.Controlname.value)


Gibt es auf dem Formular ein Control ID_Kopf?

Falls es nicht geht, öffne den Bericht einfach mal aus dem Datenbank-Fenster, wenn dann wieder die Parameterabfrage kommt, stimmt mit der Datenherkunft des Berichts oder eines evtl. Unterberichts etwas nicht.


sonst fällt mir ad Hoc auch nichts ein.

Viel Glück

nestea
13.08.2001, 12:11
hi markus,

dank dir erstmal für deine hilfe.
hab es eben ausprobiert, aber es hat wieder nicht funktioniert.
deine vermutung war auch richtig, denn es kommt auch parameterabfrage, wenn ich den bericht im datenbank-fenster öffne.
ich hab ja als datenherkunft für meinen bericht eine abfrage. das kann ja dann nur daran liegen.
ich beschreib mal kurz, wie ich die gemacht habe. kann ja sein, du siehst, woran es liegt.

als datenherkunft für die abfrage habe ich meine tabelle 't_kopf' genommen.
in meiner entwurfsansicht habe ich nun 2 posten:
1 2
Feld: t_kopf.* ID_kopf
Tabelle: t_kopf t_kopf
Sortieren:
Anzeigen: ja ja
Kriterien: [formular]![f_kopf]![ID_kopf]
oder:

Kann es sein, daß ich anstatt des [f_kopf] im kriterium [t_kopf]hinschreiben muß?
ich probier es mal aus.
vielleicht ist aber auch was ganz anderes falsch.

danke schon mal für die hilfe
nestea

nestea
13.08.2001, 12:13
das kriterium gilt natürlich nur für den zweiten posten und nicht für 't_kopf.*' ;)

MarkusR
13.08.2001, 14:20
mach mal beim Feld ID_kopf Anzeigen auf Nein
oder schreibe es mit einer Alias-Bezeichnung:

AliasName: ID_Kopf

nestea
13.08.2001, 14:27
@marcus,
danke für deine viele hilfe.
habe es inzwischen hinbekommen, indem ich in der abfrage jedes feld der tabelle einzeln abgefragt habe. das mit dem kriterium hab ich weggelassen. und auf einmal hats funktioniert.

merci beaucoup
nestea