Januar 20, 2021, 13:49:50

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Abfrage mit mehreren Tabellen

Begonnen von Richi, Januar 04, 2021, 15:28:31

⏪ vorheriges - nächstes ⏩

Richi

Hallo und guten Tag,
bin neuim Forum und Arelativer Anfänger in Access. Habe eine Kleine Musterabfrage gefunden wollte die jetzt umbauen auf mehrere Tabellen.
Daten kommem aus tblAgeber(Firmenname) und aus tblAgPerson(Nachname) das Ergebniss swird in einem ufrm angezeigt. der Code für die Suche
Private Sub Suchen_Click()
Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!AgNamen) Then Krit = Krit & " AND AgNamen LIKE '" & Me!AgNamen & "*'"
  If Not IsNull(Me!AgFirma) Then Krit = Krit & " AND AgFirma LIKE '" & Me!AgFirma & "*'"
  SQL = "SELECT * FROM tblAgPerson INNER JOIN tblAgeber ON tblAgPerson.AgID = tblAgeber.AgID"
  If Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)
  Me!ufrmAdresseSuchen.Form.RecordSource = SQL
  Me!AgNamen.SetFocus
End Sub
die 2.Tabelle(tblAgeber ist nicht geöffnet.
Im Anhang ist die ufrm abgebildet.
Mein Ziel bei Eingabe der Suchdaten soll selektiert werden und bei der Anzeige soll statt der ID der Firmenname stehen.
Es wäre sehr nett wenn mir jemand Hilfe geben könnte.
der Codeschnipsel- & Mid(Krit, 5) warum wird hier eine 5 eingetragen obwohl ich nur mit einem Buchstaben suchen kann?

Danke im Voraus RichardSie dürfen in diesem Board keine Dateianhänge sehen.

DF6GL

Januar 04, 2021, 16:21:44 #1 Letzte Bearbeitung: Januar 04, 2021, 16:31:25 von DF6GL
Hallo und willkommen im Forum.

Und welche Art von Hilfe benötigst Du?


Zitatdie 2.Tabelle(tblAgeber ist nicht geöffnet.


Es spielt keine Rolle, ob eine Tabelle geöffnet ist oder nicht.  Die Daten werden in einem Formular angezeigt. Dazu braucht es die Tabellenansicht nicht.



Zitatbei Eingabe der Suchdaten soll selektiert werden



Lt. dem Wortlaut wäre das Klick-Ereignis des Buttons (??,"Suchen") nicht zielführend. Hier sollte das "Bei Änderung"- Ereignis beider (!) Suchfelder benutzt werden.


"AGNamenSuchen" und "AGFirmaSuchen" sind ungebundene Textfelder für die Eingabe des Suchkriteriums

Private Sub AGNamenSuchen_Change()
Dim Krit As String, SQL As String
  Krit = ""
  Krit = Krit & " AND AgNamen LIKE '" & Me!AgNamenSuchen.Text & "*'"
  Krit = Krit & " AND AgFirma LIKE '" & Me!AgFirmaSuchen & "*'"
  SQL = "SELECT * FROM tblAgPerson INNER JOIN tblAgeber ON tblAgPerson.AgID = tblAgeber.AgID "
  If Krit <> "" Then SQL = SQL & " WHERE " & Mid(Krit, 5)
  Me!ufrmAdresseSuchen.Form.RecordSource = SQL
End Sub

Private Sub AGFirmaSuchen_Change()
Dim Krit As String, SQL As String
  Krit = ""
  Krit = Krit & " AND AgNamen LIKE '" & Me!AgNamenSuchen & "*'"
  Krit = Krit & " AND AgFirma LIKE '" & Me!AgFirmaSuchen.Text & "*'"
  SQL = "SELECT * FROM tblAgPerson INNER JOIN tblAgeber ON tblAgPerson.AgID = tblAgeber.AgID "
  If Krit <> "" Then SQL = SQL & " WHERE " & Mid(Krit, 5)
  Me!ufrmAdresseSuchen.Form.RecordSource = SQL
End Sub

Bei Nutzung eines Buttons:

Private Sub btnSuchen_Click()
Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!AgNamen) Then Krit = Krit & " AND AgNamen LIKE '" & Me!AgNamenSuchen & "*'"
  If Not IsNull(Me!AgFirma) Then Krit = Krit & " AND AgFirma LIKE '" & Me!AgFirmaSuchen & "*'"
  SQL = "SELECT * FROM tblAgPerson INNER JOIN tblAgeber ON tblAgPerson.AgID = tblAgeber.AgID "
  If Krit <> "" Then SQL = SQL & " WHERE " & Mid(Krit, 5)
  Me!ufrmAdresseSuchen.Form.RecordSource = SQL
  Me!AgNamenSuchen.SetFocus
End Sub



Zitatbei der Anzeige soll statt der ID der Firmenname stehen.

Wenn das Ergebnis in einem UFO angezeigt wird, versteh ich die Frage nicht... Lt. SQL-String kann das Form Daten aus allen Tabellenfeldern anzeigen.


ZitatIf Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)


Wenn Du Dir den Inhalt von Krit und SQL vor und nach der Zeile o. g. Codezeile im Direktfenster ausgibst und ansiehst,  siehst Du selbst den Unterschied.
(Debug.Print SQL & Krit)


Dann siehst Du auch den Syntaxfehler, der des weiteren im zusammengesetzten SQL String in Deinem Code vorhanden ist.


Richi

Hallo Franz vielen Dank für Deine Erklärung,
wenn ich in der jetzigen Version den Button drücke kommt mir der Fehler
Laufzeitfehler 3075   Syntaxfehler (fehlender Operator im Abfrageausdruck "tblAgPerson.agID=
tblAgeber.AgID WHERE AgNamen LIKE"M*'
kann man hier kein kleines Beispiel hochladen?, oder liegt es an dem Ufrm habe ja ein Bild mit eingestellt
bin leider noch nicht so fit.
Grüße Richard

DF6GL

Hallo,

im Antwortfenster findest Du "Attachments and other options", womit Du Dateien hochladen kannst. (DB komprimieren/reparieren und zippen)

Vermutlich benutzt Du anderen Code als die hier gezeigten...


Die Schreibweise
ZitatLIKE"M*'
kommt nicht als Kriterium vor...

Sie müsste so lauten: LIKE 'M*'

Richi

Franz vielen Dank für Deine Antwort,
aber als Anfänger ist es manchmal sehr schwierig das Richtige nachzulesen wie das genau aufgebaut wird.

viele Grüße von den Bergen
Richard