Moin zusammen,
also, ich habe einen Bericht gebastelt. Die Datenauswahl erfolgt per Prompt. Nun soll der User die Möglichkeit haben mehrere Werte in das Prompt einzugeben.
Folgendes hab ich schon erfolglos probiert:
Wert1;Wert2
Wert1+Wert2
Wert1,Wert2
Ich habe auch schon per google einiges gefunden, aber leider alles ziemlich unverständlich für nen Laien.
Hallo,
ich vermute einmal aufs Blaue geraten was Du willst, über den gesamten Datenbestand (= alle einzelnen Dateneingabefelder) in einer Suchleiste MEHRERE Begriffe aus den jeweiligen Datenfeldern zusammenfügen?
Das sollte so nicht gemacht werden, weil durch unterschiedliche Eingaben gleichgemeinter Begrifflichkeiten Berichtsdatenverluste entstehen. Dein Datenmodell sollte so aussehen, das Eingaben in einem Dateneingabefeld einem Standart unterliegen. Also für die Eingaben Kombifelder zur Verfügung stehen, die ihre Informationen aus dahinterliegenden Tabellen beziehen.
Mit einem "formulargesteuerte Abfragesystem" greifst Du dann auf eben diese Tabellen zurück und stellst Dir dann einen Bericht zusammen.
Wenn ich es mal so verstanden habe, was als Endprodukt rauskommen soll.
Gruß
Manfred
Ne, so hab ich das nicht gemeint.
Beispiel:
SpalteA SpalteB
Meier Bälle
Meier Tassen
Meier Schuhe,
Müller Tassen
Müller Bilder
Müller Schuhe,
Schulze Bälle
Schulze Tassen
Schulze Bücher
Im Promt steht nun "Artikel eingeben:"
und dort will ich eingeben: Bälle UND Schuhe. Nun sollen alle Datensätze angezeigt werden in denen Bälle oder Schuhe seht.
Das heißt, ich will in dem Prompt für SpalteB mehrere Values eingeben können.
Da kann ich Dir mangels Kenntnis dann auch nicht weiterhelfen. Ist und bleibt aber fehlerträchitg.
Eigentlich sollte das nicht Fehlerträchtig sein. Jeder Query, bzw. jeder SQL kann sowas. Und Access baut arbeitet ja mit SQL.
Aber trotzdem Danke.
Hallo,
hat mir ja immer noch keine Ruhe gelassen und so ein Problem am Wochendende nervt, wenn man weiterkommen will und eine Lösung in Sicht ist. Versuchs mal hiermit. Mit der Lösung ist aber auch keine händische Eingabe verbunden...
http://www.access-home.de/cms/?kat=29&subsite=1&cms_id=0&bsp_db_id=95
Gruß
Manfred
Danke Manfred,
werd ich ich werd mir es mal anschauen. Aber wohl erst Morgen.
Moin Manfred,
ne, das war's nicht. Ich habe mal eine von den Mustertabellen umgebaut. Ich will nun die Daten so selectieren, dass mir alles von Claus UND Eva auf dem Bericht angegeben wird.
Gruß,
Harvey
[Anhang gelöscht durch Administrator]
Hallo,
wenn Du Deine Beispiele nach Access2003 konvertierst, erhältst Du eher Hilfe, Access2007/10 haben noch nicht so viele.
OK, hier nochmal im 2003 Format
[Anhang gelöscht durch Administrator]
Hallo,
aber das funktioniert doch wie gewünscht.
nee, irgendwie versteht mich keiner. Und ich dachte, das wäre so einfach.
Also mal angenommen, ich habe die beigelegte Tabelle und ich möchte nun nun die Daten so selectieren, dass mir alles von Claus UND Eva auf dem Bericht angegeben wird.
Auf dem Großrechner würde ich jetzt einen Query wie folgt machen:
Nam LIST 'Claus' 'Eva'
In Excel würde ich einen Filter setzten und dabei "Claus" und "Eva" auswählen.
In beiden Fällen würden mir nur die Datensätze angezeigt, wo im Feld [Nam] entweder "Claus" oder "Eva" steht. und genau sowas suche ich. Das muß nicht per DropDown oder Auswahlliste oder so erfolgen, da der User genau was, was er sucht.
[Anhang gelöscht durch Administrator]
Hallo,
ZitatIn beiden Fällen würden mir nur die Datensätze angezeigt, wo im Feld [Nam] entweder "Claus" oder "Eva" steht. und genau sowas suche ich.
Aber genau das funktioniert doch. Du wählst in dem Listenfeld Claus und Eva und im Bericht hast Du Claus und Eva.
So wie Du es haben wolltest.
Jediglich in die Datenherkunft des Listenfeldes solltest Du noch das Schlüsselwort DISTINCT aufnehmen, damit die Namen nicht doppelt sind.
ich habe das Ganze aus einer Beispiel Datenbank. Wenn ich das richtig sehe, ist das Listfeld ein ungebundendes Feld mit der Anweisung:
SELECT Namen.Nam FROM Namen ORDER BY Namen.Nam;
Wo schreibe ich nun das DISTINCT hin ?? Am Anfang und am Ende klappt nicht.
Hallo,
so:
SELECT DISTINCT Namen.Nam FROM Namen ORDER BY Namen.Nam;
na, das hört sich ja gut an und sieht gut aus. :D
Ich werd das nachher mal in meinen "echten" Bericht einbauen und hoffe, dass es dort auch so gut aussieht.
Ich meld mich dann wieder.
Danke schon mal.
OK, wenn das Feld für die Auswahlliste ein String ist, klappt es gut. Nun wollte ich das auf ein Zahlenfeld umbauen und bekomme einen Fehler.
Private Sub Befehl1_Click()
Dim LF As Control
Dim Zeile As Long
Dim Erg As Long <------------------------------------- Das habe ich von String auf Long geändert
Dim t As Integer
' Auswahl im listfeld durchlaufen und auf ausgewählte DS ausgeben
' Listfeld setzen
Set LF = Me.Liste
' For-Nextschleife starten
For Zeile = 0 To LF.ListCount - 1
' Schauen ob Eintag markiert
If LF.Selected(Zeile) = True Then
' Zähler erhöhen
t = t + 1
' Wenn ja Ausgeben
Erg = Erg & "[Nam]='" & LF.Column(0, Zeile) & "' OR " <----- Diese Zeile wird angemeckert (Laufzeitfehler 13)
' Auswahl zurücksetzen, wenn aktiviert
If DelAW = -1 Then
LF.Selected(Zeile) = False
End If
End If
Next Zeile
If t = 0 Then
MsgBox "Bitte wählen Sie die Daten aus, die im Bericht ausgegeben werden sollen!", 48, "http://www.access-home.de"
Else
Erg = Left(Erg, Len(Erg) - 4)
DoCmd.OpenReport "TestBericht", acViewPreview, , Erg
End If
End Sub
Hallo,
Du kannst einer Zahl (Long) keinen String zuweisen. Erg ="Nam ...." ist doch eine Text, wie willst Du da eine Zahl zuweisen?
Erg muss String bleiben, zwingend.
Was hast Du genau vor?
Ich habe in dem Feld jetzt aber einen numerischen Wert eingepflegt.
Ich hab mir aber zwischenzeitlich so geholfen, dass ich bei der abfrage das Feld auf Text umwandle. Das funktioniert auch, aber es wäre halt eleganter, wenn das von vornherein mit einer Zahl funktionieren würde.
Hallo,
in welchen Feld hast Du eine Zahl eingepflegt?
Hallo,
ich sehe nur, dass sich die Anforderungen stetig ändern ??? :-\
#2 Artikel
"...Promt steht nun "Artikel eingeben:"
und dort will ich eingeben: Bälle UND Schuhe. Nun sollen alle Datensätze angezeigt werden in denen Bälle oder Schuhe seht...".
und in #7 sind es wieder Personennamen und dann wieder Zahlen.
"Eigentlich sollte das nicht Fehlerträchtig sein. Jeder Query, bzw. jeder SQL kann sowas. Und Access baut arbeitet ja mit SQL."
Das habe ich auch nicht gemeint. Gemeint ist die wenig anwenderfreundliche Lösung durch fehlerträchtige Eingabe/n des Users durch dessen händisch eingegebenen Suchbegriff.
Hallo,
wenn du im Listenfeld Zahlen zur Auswahl hast, musst du ändern:
Dim Zeile As Long
Dim Erg As String
Dim t As Integer
For Zeile = 0 To Me!Liste.ListCount - 1
If Me!Liste.Selected(Zeile) = True Then
t = t + 1
Erg = Erg & "[DeinNummernFeld]=" & Me!Liste.Column(0, Zeile) & " Or " <------ Änderung
If DelAW = -1 Then
Me!Liste.Selected(Zeile) = False
End If
End If
Next Zeile
If t = 0 Then
MsgBox "Bitte wählen Sie die Daten aus, die im Bericht ausgegeben werden sollen!", 48
Else
Erg = Left(Erg, Len(Erg) - 4)
DoCmd.OpenReport "TestBericht", acViewPreview, , Erg
End If
End Sub
Gruß Oma
Danke, das war's wohl.
Ich werd das später einbauen.
Gruß
Harvey