PDA

Vollständige Version anzeigen : Abfrage mit Formularinformationen


Vertigo
22.03.2004, 10:25
Hi
habe folgendes Problem
ich habe ein Formular Kunden, und darin über eine Befehlsschaltfläche eine Verknüpfung zu einer Abfrage gebaut.
Die Abfrage funktioniert wie eine Suche, der User gibt einen Firmennamen an und die Abfrage zeigt Informationen nur zu dieser Firma an. Im moment muss der User den Firmennamen manuell eingebene das möchte ich ihm aber ersparen indem die Abfrage sich die Information über den Namen aus dem Formular zieht, genauer aus einem Feld(Dem Firmennamensfeld) im Formular direkt.

Gibt es da irgendeine möglichkeit?

Ich verwende Microsoft Access 2003 auf Windows XP PRoffessionel

amahr78
22.03.2004, 10:45
An sich müsste es funktionieren wenn du in der Abfrage den vollen Pfad des Feldes (Formular!Feldname) angibst.
Bin mir aber nicht sicher, probiers einfach mal aus.

Thomas Braun
22.03.2004, 10:49
Schau dir mal folgendes Beispiel (http://www.dbwiki.de/upload/AccSampleSuchen.zip) an.

Vertigo
22.03.2004, 11:00
Habs ausprobiert:
Parameterwert eingeben
[Kunde]![Firmenname]
er zieht die sich nicht heraus, muss man das evtl. über VB Code realisieren?
und ist es möglich in einer access tabelle einen wert, z.b. eine artikelnummer mit einem Link zu versehen der ein Bild des Artikels zeigt?

amahr78
22.03.2004, 11:04
Versuchs mal so:

Form!Kunde.Firmenname

Vertigo
22.03.2004, 11:05
Kann mir die datei nicht runterladen host ist nicht zu erreichen hab nur ne WLAN anbindung ans Firmennetzwerk...

Vertigo
22.03.2004, 11:07
Klappt auch nicht er weiß jetzt zwar das es sich um ein Formular handeln muss (denke ich) aber er fragt immernoch nach informationen...

Vertigo
22.03.2004, 11:20
hab die datei doch...wlan ist doof

Vertigo
22.03.2004, 12:14
ok hab mir die beispieldatei angesehen und ich verstehe gar nix...
kann den Code nicht verwenden da ich ihn nicht verstehe :bawling: sorry...
Frage mich immernoch wie das gemacht wurde ohne macros...
und verstehe nicht wie man Filter in berichten anwenden oder berichte so erzeugen kann das sie gefiltert sind...

amahr78
22.03.2004, 12:16
Probier mal das

Form!Kunde!Firmenname.caption

oder

Form!Kunde!Firmenname.Text

Vertigo
22.03.2004, 12:25
klappt auch nicht...aber dafür übersetzt er wirklich alles in deutsche :D
muss man das evtl. über VBA code machen? wenn ja, wie?
oder SQL

amahr78
22.03.2004, 12:36
du kannst von einer Abfrage aus direkt auf Formulare zugreifen, aber jetzt weiß ich im moment selber net weiter.
ich probier mal was aus....

amahr78
22.03.2004, 12:42
ich hab das hier bei Donkarl gefunden:


Du kannst eine Variable nicht direkt in einer Abfrage verwenden. Schreib stattdessen in einem Standardmodul eine Funktion, die nichts anderes tut, als den Wert der Variablen zurückzugeben. z.B.


Public Function fct_SendVar() ' hier evtl. noch den Typ angeben

fct_SendVar = DeineGlobaleVariable

End Function


In der Abfrage schreibst du dann statt der Variablen den Namen der Funktion inkl. Klammern.

Auf die gleiche Weise kannst du übrigens auch den Wert einer Variablen als Steuerelementinhalt in Formular/Bericht verwenden.


Ich hoffe das hilft

Vertigo
22.03.2004, 14:06
muss ich das dann im SQL Fenster eingeben?
habe den jetzt als globale Variable eingefügt, also den unten angegebenen Code in das Codefenster eingefügt und da wo steht "DeineGlobaleVariable" hab ich eingesetzt form!Kunde.firmenname.caption
Problem jetzt, habe das versucht in der Entwurfsansicht der Abfrage einzubauen und die hat mir dann etwas von Syntaxsuppe erzählt...
Sie haben möglicherweise eine nOperanden aber keinen Operator angegeben :bawling:
sitze jetzt seit 8 uhr rum und quäle mich mit diesem mist rum :mad:
danke allen die sich bisher die mühe gemacht haben!!!!!!!!!!

amahr78
22.03.2004, 14:16
mach das so:

Public Function fct_SendVar() ' hier evtl. noch den Typ angeben

fct_SendVar = Firmenname

End Function


Das Objekt, wo die Daten rauskommen muss natürlich auch Fimenname heißen

Vertigo
22.03.2004, 14:26
Verstehe das nicht...
der gibt mir jedesmal jetzt ne parameter abfrage aus.
habe das so gemacht
Formular kunde auf, ansicht->Code
da dann den code einfügen und da hab ich jetzt firmenname eingegeben, und dann hab ich in der entwurfsansicht von der abfrage firmenname angegeben, dann meckert er entweder über fehlende parameter. er setzt nämlich immer vor Firmenname "Ausdr.1" ohne die ".

amahr78
22.03.2004, 14:28
kannst du die DB hier posten?

Vertigo
22.03.2004, 14:32
Glaube nicht sind Firmendaten drin, z.t. auch aktuelle...

amahr78
22.03.2004, 14:34
dann poste mal deine SQL-Abfrage, also den Text *gg*
und das, was du in den VBA-Code geschieben hast

Vertigo
22.03.2004, 14:43
SELECT Aufträge.Status, Aufträge.Erledigt, Aufträge.Liefertermin, Aufträge.[Auftrags Nr], Aufträge.Werkauftragsnr, Aufträge.Datum, [Firmenname] AS Ausdr1, Aufträge.Werk, Aufträge.Kpl, Aufträge.An, Aufträge.Benennung, Aufträge.[Zahl der Steine], Aufträge.Formhöhe, Aufträge.[Zg Nr], Aufträge.Preis, Aufträge.Hyperlink
FROM Aufträge
WHERE (((Aufträge.Status) Is Null));

das sind die SQL Befehle, das where bla bla steht dafür da um aufträge die geliefert sind zu eliminieren, ist noch keine elegante lösung aber schon etwas...
und jetzt der böse code...:

Option Compare Database
Option Explicit
Dim Krit, SQL

Private Sub Befehl42_Click()
On Error GoTo Err_Befehl42_Click

Dim stDocName As String

stDocName = "Schließen Kundenformular"
DoCmd.RunMacro stDocName

Exit_Befehl42_Click:
Exit Sub

Err_Befehl42_Click:
MsgBox Err.Description
Resume Exit_Befehl42_Click

End Sub
Private Sub Befehl43_Click()
On Error GoTo Err_Befehl43_Click

Dim stDocName As String

stDocName = "Abfrage ueber Auftragsvolumen"
DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_Befehl43_Click:
Exit Sub

Err_Befehl43_Click:
MsgBox Err.Description
Resume Exit_Befehl43_Click

End Sub
Private Sub Befehl44_Click()
On Error GoTo Err_Befehl44_Click

Dim stDocName As String

stDocName = "Auftragsvolumenabfrage für FoKunden"
DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_Befehl44_Click:
Exit Sub

Err_Befehl44_Click:
MsgBox Err.Description
Resume Exit_Befehl44_Click

End Sub

Private Sub BerichtOeffnen_Click()
If Form!Kunden.RecordsetClone.RecordCount > 0 Then
DoCmd.OpenReport "Kundenbericht", acViewPreview, , Krit
End If
End Sub


Public Function fct_SendVar() ' hier evtl. noch den Typ angeben

fct_SendVar = FirmenName
End Function

amahr78
22.03.2004, 14:50
Also das SQL muss ja schon a bissel anders aussehn...

SELECT Aufträge.Status, Aufträge.Erledigt, Aufträge.Liefertermin, Aufträge.[Auftrags Nr], Aufträge.Werkauftragsnr, Aufträge.Datum, [fct_SendVar()] AS Ausdr1, Aufträge.Werk, Aufträge.Kpl, Aufträge.An, Aufträge.Benennung, Aufträge.[Zahl der Steine], Aufträge.Formhöhe, Aufträge.[Zg Nr], Aufträge.Preis, Aufträge.Hyperlink
FROM Aufträge
WHERE (((Aufträge.Status) Is Null));

versuch das mal so, und guck mal was Access dann sagt

Vertigo
22.03.2004, 14:53
access sagt...
syntaxsuppe
parameterwert eingeben fct_SendVar()

Vertigo
22.03.2004, 15:12
feierabend....endlich...und morgen das selbe spiel :bawling:

Vertigo
23.03.2004, 07:11
was bedeutet eigentlich dieses
[quote] AS Ausdr1 [/qoute]
?

Vertigo
23.03.2004, 07:29
Und in der beispieldatenbank die auf der ersten seite ist ist im Quelltext ein ausdruck namen Me.name oder me.irgendwas was bedeutet das ME??ist das eine konstante?weil kann keine abfrage, tabelle oder sonstiges finden was so lautet...

amahr78
23.03.2004, 07:46
Morje...wieder Fit für neue Schandtaten? *ggg*

AS Ausdruck1 bedeutet einfach nur, das dür den zb. Tabellennamen der vor dem AS steht ein Alias angelegt wird welches Ausdruck1 heißt.

Me im quellcode ist sozusagen ein Zeiger(im weitesten Sinne) der auf sich selbst zeigt, bzw. auf das Formular, welches zum Code gehört. Du brauchst es nicht unbedingt, aber es erleichtert das arbeiten denn wenn du Me. eingibst, bekommst du für gewöhnlich alle möglichkeiten angezeigt, die du mit dem Formular hast. Mit Me. kannst du auch ganz bequem alle Variablen und Felder des Formulars ansteuern.

Vertigo
23.03.2004, 08:57
Oh je kennst du das Video von dem mann der mit seiner tastatur seinen monitor durch den raum kickt??
mache das auch gleich
habe gerade Code eingegeben das er auf klick hin ein Fenster schließt und ein neues aufmacht...er hat den code gelöscht...habe jetzt dieses sendvar in die oberste Hierarchie geschickt dürfte von der theorie her also für jedes formular, jede tabelle zugänglich sein...

Vertigo
23.03.2004, 10:15
es klappt imma ´noch nicht er fragt immernoch nach diesen sendvar()