PDA

Vollständige Version anzeigen : abfrage mit formularbezug


jackryan
06.07.2006, 14:38
also ich öffne doch lieber ein eigenes thema

hier nochmal das ausgangs prop

ich habe einen bericht mithilfe einer abfrage erstellt (der bericht soll nur bestimmte daten enthalten) wie übergebe ich denn die parameterabfrage?



"jackryan Du kannst in der Abfrage einen Formularbezug einbauen oder eben mit der WhereCondition der OpenReport-Methode arbeiten."

wie mache ich denn eine abfrage mit formularbezug??

die abfrage, auf die ich mich im bericht beziehe lautet (anne wird sie bekannt vorkommen ;) )


SELECT Typen.TypNr AS Typen_TypNr, Typen.TypName, TypenWartung.TypNr AS TypenWartung_TypNr, TypenWartung.TNr AS TypenWartung_TNr, Texte.TNr AS Texte_TNr, Texte.Text
FROM Typen INNER JOIN (Texte INNER JOIN TypenWartung ON Texte.TNr = TypenWartung.TNr) ON Typen.TypNr = TypenWartung.TypNr
WHERE (((Typen.TypNr)=[]));


im bericht sind allerdings nur 2 felder interessant, TypenName und Texte


in vba habe ich folgendes geschrieben:

TypNr = Me.Text4.Text
DoCmd.OpenReport "Typen2", acViewPreview, "TypNr=" & TypNr

das textfeld ist nur zu testzwecken (später wird die typnr anders übergeben)

jackryan
06.07.2006, 14:44
mache doch ein eigenes thema

grundproblem:

ich habe einen bericht mithilfe einer abfrage erstellt (der bericht soll nur bestimmte daten enthalten) wie übergebe ich denn die parameterabfrage?
die abfrage verlangt eine parametereingabe.

dazu mal meine abfrage (anne kennt sie wohl noch ;) ):

SELECT Typen.TypNr AS Typen_TypNr, Typen.TypName, TypenWartung.TypNr AS TypenWartung_TypNr, TypenWartung.TNr AS TypenWartung_TNr, Texte.TNr AS Texte_TNr, Texte.Text
FROM Typen INNER JOIN (Texte INNER JOIN TypenWartung ON Texte.TNr = TypenWartung.TNr) ON Typen.TypNr = TypenWartung.TypNr
WHERE (((Typen.TypNr)=[]));

hier mein vba code (das textfeld ist nur zu testzwecken)


TypNr = Me.Text4.Text
DoCmd.OpenReport "Typen2", acViewPreview, "TypNr=" & TypNr


AD: Aus Thread #2 zu diesem Problem.

CW1
06.07.2006, 15:19
Hallo,

um díe Sache einzugrenzen schreibst du einfach in der Entwurfsansicht deiner Abfrage unter Kriterien (natürlich in dem richtigen Feld):
=[forms]![deinFormular]![deinTextfeld]

Wenn du jetzt dein Formular geöffnet hast und in dem Textfeld etwas drin steht wird die Abfrage entsprechend eingegrenzt.
Öffnest du jetzt einfach den Bericht, sei es manuell oder mit DoCmd
stehen nur die der Abfrage entsprechenden Datensätze darin.

Gruß Christoph



AD: Aus Thread #2 zu diesem Problem.

Worf1001
06.07.2006, 15:26
Hallo,

Vielleicht so:


TypNr = "'" & Me.Text4.Text & "'"
DoCmd.OpenReport "Typen2", acViewPreview, "TypNr= " & TypNr


oder, wo ist genau das Problem?



AD: Aus Thread #2 zu diesem Problem.

jackryan
06.07.2006, 15:26
ok danke cw 1 das wars^^ tipp funzt hervorragend



AD: Aus Thread #2 zu diesem Problem.

Anne Berg
06.07.2006, 15:27
Zunächst einmal zur Syntax (siehe Access-Hilfe):

DoCmd.OpenReport Berichtsname[, Ansicht][, Filtername][, Bedingung]

Da ist also ein Komma zu wenig bei dir.

In der Abfrage lässt du dann die Where-Klausel weg, dann sollte es schon klappen.

PS: Wie willst du denn "später" die TypNr "anders" übergeben?

jackryan
06.07.2006, 15:41
danke anne das thema hat sich erledigt, bei diesem thema hatte mir mein i-explorer ein fehler gemeldet und ich habe gedacht, es wäre nicht gesendet worden, sorry

ich weiss noch nicht wie ich die typnr später übergeben werde mal sehen

Worf1001
06.07.2006, 15:44
müsste es nicht so lauten:


TypNr = "'" & Me.Text4.Text "'"
DoCmd.OpenReport "Typen2", acViewPreview, , "TypNr= " & TypNr


:confused: