Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

gefilterte Abfrage öffnen über Button

Begonnen von Outliener, Mai 04, 2013, 08:40:05

⏪ vorheriges - nächstes ⏩

Outliener

Hallo zusammen

Ich habe folgendes Problem:

Ich möchte in einem Formular einen Name aus einer Kontakte Tabelle suchen (mit Suchfeld und "Suchbutton). Das klappt soweit....
Diesem Kontakt ist dann jedoch eine Kundennummer definiert. In einer anderen Tabelle sind eben ausschließlich diesen Kundennummern erneut diverse Informationen zugeordnet.

Ich möchte nun also einen Button erstellen, der mir eine Tabelle (Popup) eben gefiltert für genau dies, dem Namen zugeordnete Kundennummer, öffnet.

Ich kenn mich mit Access nicht wirklich gut aus muss aber sagen, das mich dieses Forum auch in der Vergangenheit schon sehr weit gebracht hat.
Würd mich über Eure Hilfe freuen.


Beste Grüße

Florian

database

Hallo,

ich gehe davon aus, dass die Tabellenstruktur einer normalisierten relationalen DB entspricht.

Nehmen wir an, das Formular enthält ein Feld z.B. 'KdNr' welches nach der von dir beschriebenen Kontaktsuche die zugeordnete Kundennummer enthält.

Dann erstellst du dir eine Abfrage 'qryKundendaten' und fügst dieser alle gewünschten Felder deiner Tabelle hinzu und speicherst diese Abfrage.
Im Abfrageentwurf wechselst du dann in die SQL-Ansicht und kopierst den SQL-String OHNE das Semikolon am Schluss.
Am Formular erstellst du dir den Button und in dessen Klickereignis schreibst du folgende Zeilen:


Private Sub DeinButton_Click()

Dim lngKdNr As Long
Dim strSQL As String

lngKdNr = Me.DeinFeldKdNr
strSQL = "Der kopierte SQLString"

CurrentDB.Querydefs("qryKundendaten").SQL = strSQL & " WHERE Kdnr=" & lngKdNr

DoCmd.OpenQuery "qryKundendaten"

End Sub


Ein Klick auf den Button sollte dann die Abfrage 'qryKundendaten' öffnen und darin die gewünschten Daten anzeigen.
Beachte bitte, dass das nur eine von mehreren Möglichkeiten ist, die du für die Anzeige der Daten verwenden kannst

Outliener

Der Filter funktioniert leider noch nicht :(

Hast Du da ne Idee???

database

Naja, lt. Aussage meiner Kristallkugel kann das mehrere Gründe haben  ::)

Wie sieht den der SQL-String der Abfrage NACH der ersten Ausführung des Buttonklick aus - schau mal in den Abfrageentwurf.

Steht da in der Where-Klausel eine oder die richtige Kundennummer?

Stimmen die Namen der Formular- und Tabellenfelder im Code mit den realen Gegebenheiten überein?

Outliener

Ich hab mal noch was anderes versucht....
hier mein aktueller Code:

Private Sub Befehl27_Click()
Dim lngKdNr As Long
Dim strSQL As String

lngKdNr = Me.Kunden_ID
' strSQL = "Drogenkontrollen.[Kontrolle_Nr], Drogenkontrollen.[Kontrolle_Patientennummer], Drogenkontrollen.[Einbestellt_Kontrolle], Drogenkontrollen.[Datum_Kontrolle], Drogenkontrollen.[Kreatinin_Kontrolle], Drogenkontrollen.[EtG_Kontrolle], Drogenkontrollen.[Drogen_Kontrolle], Drogenkontrollen.[CDT_Kontrolle], Drogenkontrollen.[Sonstiges_Kontrolle], Drogenkontrollen.[Hinweis_kontrolle], Drogenkontrollen.[Kontrolle_Labor_Nr]FROM Drogenkontrollen"

'CurrentDb.QueryDefs("AbfKontrolle").SQL = strSQL & " WHERE Kontrolle_Patientennummer =" & lngKdNr

DoCmd.OpenQuery "AbfKontrolle"
Me.Filter = "[Kontrolle_Patientennummer] = '" & lngKdNr
    Me.FilterOn = True
    If Me.RecordsetClone.RecordCount = 0 Then
     Me.FilterOn = False
   
    End If

End Sub

Wobei die KdNR zuordnung schon richtig erfolgt.


database

Hallo,

OK, du hast so ein ungekürztes Abfrageergebnis das du dann auf eine bestimmte Kundennummer filterst.
nur ...

Me.Filter = "[Kontrolle_Patientennummer] = '" & lngKdNr

... ist hier ein Hochkomma zuviel!

Outliener

Es klappt aber leider immer noch nicht...

Tut mir Leid.... Ich hoffe ich stelle mich nicht zu blöd an...

Hast Du evtl. noch mal nen Tipp? oder ggf. auch ne kleine Beispieldatenbank....

Das Problem ist ja klar denk ich

Noch kurz ergänzt... Jetzt gibts zwar keinen Fehler mehr aber leider auch nicht die gewünschte Sortierung

database

#7
Hallo,

such dir eine Kundennummer aus, die im Formular angezeigt wird.
Dann füge im Abfrageentwurf folgenden String in die SQL-Ansicht deiner Abfrage ein:

SELECT [Kontrolle_Nr], [Kontrolle_Patientennummer], [Einbestellt_Kontrolle], [Datum_Kontrolle],
           [Kreatinin_Kontrolle], [EtG_Kontrolle], [Drogen_Kontrolle], [CDT_Kontrolle],
           [Sonstiges_Kontrolle], [Hinweis_kontrolle], [Kontrolle_Labor_Nr]
FROM Drogenkontrollen WHERE [Kontrolle_Patientennummer]=xxx

An Stelle der x fügst du die ausgelesene Kundennummer ein.
Führe nun die Abfrage ganz normal aus - werden jetzt die gewünschten Daten angezeigt?

Auch noch eine Ergänzung ... bitte welche Sortierung? Von sortieren war bisher nicht die Rede!

Zum allgemeinen Verständnis: Auswahl, Filter und Sortierung sind 3 Sorten Obst!