Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access-Abfrage (mehrere Spalten durchsuchen)





Frage

Hallo, in meiner Datenbank ist eine Tabelle „Kaufabwicklung“ vorhanden. Sie enthält u. a. Spalten wie „VerkäuferName“ und „MonteurName“. Ich will, dass beim Starten meiner Abfrage ich nach dem Namen gefragt werde. Es soll in beiden Spalten gesucht werden und alle Kaufabwicklungen dieser Person ausgegeben werden. Ich soll nur einmal gefragt werden und nicht 2 mal nacheinander. Z.B. (Geben Sie den Namen des Monteurs oder des Verkäufers). Jemand eine Idee Danke

Antwort 1 von lleopard

Hallo...

Über ne Abfrage wirst du das nicht hinbekommen... da müssen wir wohl VBA bemühen. ;-)

Ich hab dir das mal was gebastelt, absierend auf einer eigenen Tabelle. Das mußt du natürlich an deine Tabelle anpassen.

Was eigentlich wenn er den Namen in beiden Tabellen hat?
Und was wenn er keinen Eintrag findet?

Function NameAngeben() As String
On Error Resume Next
Dim Antwort, Erg, qDef As QueryDef
Dim chk1, chk2, ssql As String
Antwort = InputBox("Geben Sie den Namen ein, nach dem gesucht werden soll", "Kaufabwicklung")
If Antwort = 0 Then Exit Function
NameAngeben = Antwort
chk1 = DLookup("Satzart", "NTK40", "Satzart='" & NameAngeben & "'")
chk2 = DLookup("MASSNR", "NTK40", "MASSNR='" & NameAngeben & "'")
If IsEmpty(chk1) Or IsNull(chk1) Then chk1 = vbNullString
If IsEmpty(chk2) Or IsNull(chk2) Then chk2 = vbNullString
If chk1 <> vbNullString And chk2 <> vbNullString Then Erg = 1
If chk1 = vbNullString And chk2 <> vbNullString Then Erg = 2
If chk1 <> vbNullString And chk2 = vbNullString Then Erg = 3
If Erg = 1 Then ssql = "SELECT NTK40.SATZART, NTK40.MASSNR FROM NTK40 WHERE (((NTK40.SATZART)='" & Antwort & "')) OR (((NTK40.MASSNR)='" & Antwort & "'));"
If Erg = 2 Then ssql = "SELECT NTK40.SATZART, NTK40.MASSNR FROM NTK40 WHERE (((NTK40.MASSNR)='" & Antwort & "'));"
If Erg = 3 Then ssql = "SELECT NTK40.SATZART, NTK40.MASSNR FROM NTK40 WHERE (((NTK40.SATZART)='" & Antwort & "'));"
If IsEmpty(Erg) Or IsNull(Erg) Then Exit Function
CurrentDb.QueryDefs.Delete "Kaufabwicklung"
CurrentDb.CreateQueryDef "Kaufabwicklung", ssql
DoCmd.OpenQuery "Kaufabwicklung"
End Function

Mal sehen ob du damit klarkommst...

Die Funktion kannst du zB über ein Formular oder ein Makro starten...

Gruß leo

Antwort 2 von lleopard

Nachtrag:

Schnell und schmutzig weggeschrieben... kann man natürlich auch über ne Select Case machen usw...

Aber so gehts auch ;-)

Antwort 3 von erik

Hallo,

sicherlich lässt sich das über eine Abfrage lösen.

PARAMETERS NamePerson TEXT (255);
SELECT *
FROM Kaufabwicklung
WHERE VerkäuferName = [NamePerson]  
OR MonteurName = [NamePerson];


Gruß
erik

Antwort 4 von stirlitz

Vielen Dank für Eure Hilfe!

Ich habe beide Varianten ausprobiert. Beispiel von Leo habe ich an meine Datenbank angepasst, funktioniert sehr gut. Nur entschieden habe ich mich trotzdem für Eriks Variante, da die schon etwas einfacher ist und für meine Bedürfnisse völlig ausreicht.

Gruß
stirlitz

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: