MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 22.11.2006, 15:29   #1
fadass
MOF Profi
MOF Profi
Standard Demo-Datenbank - Unterformular über Textfeld im Hauptformular über alle Spalten filtern

Hallo allerseits.

Weil ich so verdammt stolz bin das ich das nach ewigen Rumgesuche und gemache hinbekommen hab hier mal eine BeispielDB zum Filtern eines Ufos über ein Textfeld im Hfo.

Einfach im Code die Feldnamen anpassen dann sollte das überall funzen


Code:

Option Compare Database

Private Sub TxKrit_Change()


Dim sSuchbegriff As String
Dim sSQL As String
Dim I As Integer
Dim Pos1 As Integer

sSuchbegriff = Trim$(TxKrit.Text)
                            
If sSuchbegriff = "" Then Exit Sub

sSQL = " SELECT Abfrage.Feldname, Abfrage.Feldname2, " & _
" Abfrage.Feldname3, Abfrage.Feldname4 FROM Abfrage WHERE Abfrage.Feldname AND ("

  
  I = 0
  Pos1 = InStr(sSuchbegriff, " ")
  While Pos1 > 0
  I = I + 1
                               
 sSQL = sSQL & "(" & " [Feldname1] & [Feldname2] & [Feldname3] & [Feldname4] Like '*" & Left$(sSuchbegriff, Pos1 - 1) & "*') AND "
                                
  sSuchbegriff = Right$(sSuchbegriff, Len(sSuchbegriff) - Pos1)
  Pos1 = InStr(sSuchbegriff, " ")
  Wend
                            
  sSQL = sSQL & "(" & " [Feldname1] & [Feldname2] & [Feldname3] & [Feldname4] Like '*" & sSuchbegriff & "*') "
               
  sSQL = sSQL & ") ORDER BY Abfrage.Feldname DESC; "
  
  
  
  Me!Ufo.Form.RecordSource = sSQL
  Me!Ufo.Form.Requery
  Me!TxKrit.SetFocus
  
Exit_TxKrit_Change:
    Exit Sub

Err_TxKrit_Change:
    MsgBox Err.Description
    Resume Exit_TxKrit_Change

End Sub
Verschiedene Kriterien können einfach per Leerzeichen getrennt werden.
MfG Udo
Angehängte Dateien
Dateityp: zip testdb.zip (28,8 KB, 511x aufgerufen)
fadass ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.12.2006, 13:18   #2
oli-zapp
MOF User
MOF User
Standard wie geht der filter wieder weg ?

hallo,
das ist ja super, danke.
eine frage noch wie kommen wieder alle datensätze des ufo zum vorschein.
liebe grüße
olo-zapp
oli-zapp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.12.2006, 08:49   #3
fadass
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hi. Einfach diese Zeile entfernen dann werden bei leeren Kriterium wieder alle Datensätze angezeigt

Code:

If sSuchbegriff = "" Then Exit Sub

Geändert von fadass (18.12.2006 um 08:54 Uhr).
fadass ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.12.2006, 12:04   #4
oli-zapp
MOF User
MOF User
Strahlen Danke

Hallo nochmals,
super, vielen dank nochmals und schöne Weihnachten.
Oliver
oli-zapp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.01.2007, 10:02   #5
fadass
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hier nochmal ein Beispiel mit 3 Spalten die alle einzeln aber unter beachtung der anderen bereits gefilterten Spalten gefiltert werden.
(Formular PNummern)
Angehängte Dateien
Dateityp: zip P Neu.zip (77,1 KB, 408x aufgerufen)
fadass ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2008, 14:15   #6
slice1
MOF User
MOF User
Standard

Hallo,

habe mir nach diesem Muster + Code ein DB erstellt. Funktioniert auch.
Leider ist die Eingabe des Suchkriterium sehr langsam. Pro Eingabe eines Zeichens vergehen ca. 3-4 Sek. bevor ich ein weiteres Zeichen eingeben kann. Z.B. suche ich nach dem Wort Großhandel, pro Eingabe eines Zeichens, vergeht hier eine Zeit. Meine Tabelle beinhaltet ca. 40000 Datensätze. Liegt das daran?

Die Suche erfolgt über meine Abfrage die 5 Feldnamen beinhaltet, wobei das Suchkriterium über 2 Feldnamen erfolgt. Die dazugehörige Tabell besteht ohne Primärschlüssel.

Dürfte doch wohl nicht an der Größe der Datensätze liegen, oder?

Gruß
slice1
slice1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2008, 10:01   #7
Arne Dieckmann
MOF Guru
MOF Guru
Standard

Zitat:

Dürfte doch wohl nicht an der Größe der Datensätze liegen, oder?

Das bekommst du ganz einfach heraus, indem du eine Testdatenbank anlegst und die Datensätze auf 50 reduzierst. Ich habe mir das Beispiel nicht angeschaut, sondern betrachte nur den Code in Beitrag #1 - der ist auf jeden Fall nicht auf hohe Performance ausgelegt (selbst Indizies bringen dort nicht viel - das Sortierfeld sollte aber auf jeden Fall einen Index bekommen).

Könntest du noch einmal den Code zeigen, wie er bei dir zur Zeit aussieht?

__________________

Gru&szlig;, Arne<br><br><u>Links</u>: <a *****"http://www.donkarl.com/FAQ/FAQStart.htm">FAQ</a> • <a *****"http://www.ardiman.de/datenbanken/grundlagen.html">Grundlagen</a> • <a *****"http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm">Relationale Datenbanken</a> • <a *****"http://www.lebans.com/">Stephen Lebans</a> • <a *****"https://dbwiki.net">DBWiki</a> <br><u>Tools</u>: <a *****"http://www.ardiman.de/datenbanken/tabtoweb.html">TabToWeb</a> • <a *****"http://www.sqlinform.com/">SQL-Formatter</a> • <a *****"/forum/vbseiten.php?page=7">Code Converter</a> • <a *****"https://regex101.com/">RegEx testen</a><br><u>System</u>: Win7 Pro 64bit, Office 20xx, div. MS-SQL Server 20xx, <a *****"http://www.firefox-browser.de/">Firefox</a><br><span style="color:#B22222">Bitte keine Fragen per Mail/PN</span> und als Neuling diese Anleitung (Code-Tags, Anhänge etc.) lesen.
Arne Dieckmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2008, 10:06   #8
Josef P.
MOF Guru
MOF Guru
Standard

@slice1: Wenn nach dem Eintrag jedes Zeichens die Datensätze gefiltert werden, darf man nicht überrascht sein, dass das etwas dauert.
Verlagere die Filterung von Change auf AfterUpdate oder gib dem User überhaupt die Freiheit zuerst alle Filterbedingungen einzugeben und dann erst die Filterauswertung zu starten.

BTW: Wenn man nicht sofort erkennt, was im Code abläuft, lässt sich das meist mittels Haltepunkten im Code sehr gut analysieren.
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2008, 13:21   #9
slice1
MOF User
MOF User
Standard

@arne: ist der gleiche Code wie oben. wie lege ich denn einen Index fest, geschweige denn kann ich diese Code besser perfomancen? Stehe am Anfang von Access.
@Josef: Wie verlagere ich den Filterung von Change auf AfterUpdate?

Gibt es eine Alternative, wonach es schneller geht?

Gruß
slice1
slice1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2008, 15:01   #10
Josef P.
MOF Guru
MOF Guru
Standard

Code:

Private Sub TxKrit_Change()
...
TxKrit ist vermutlich das Steuerelement und mit TxKrit_Change() wird auf das Change-Ereignis reagiert. Change wird nach jeder Änderung ausgelöst.
Wenn du den Code in die Ereignisbehandlung von AfterUpate (Nach Aktualisierung) ausführst, wird nicht so oft aktualisiert.
Code:

Private Sub TxKrit_AfterUpdate()
...
(Anm.: in der Eigenschaft "Nach Aktualiserung" des Textfeldes muss [Ereignisprozedur] stehen.)

Noch ein Tipp: wenn du Code verwendest, dann solltest du immer veruschen den Ablauf zu verstehen. Sonst fügst du möglicherweise etwas ein, was du gar nicht willst. - Oder startest du jede auch Exe-Datei, die dir von einem unbekannten Absender geschickt wird?
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2008, 10:05   #11
PSViolon
MOF User
MOF User
Standard

Hallo,

kann mir mal jemand auf die Sprünge helfen, warum der Code bei mir nicht funktioniert? (In einem anderen Formular hatte ich überhaupt keine Probleme)

Laufzeitfehler 3141
Die Select-Anweisung schliesst ein reserviertes Wort oder Argumentnamen mit ein, daß mit falscher Zeichensetzung oder überhaupt nicht eingegeben wurde.


Code:

Private Sub PrktNr_GotFocus()

Me!TxKrit.SetFocus

End Sub

Private Sub TxKrit_AfterUpdate()


Dim sSuchbegriff As String
Dim sSQL As String
Dim I As Integer
Dim Pos1 As Integer

sSuchbegriff = Trim$(TxKrit.Text)
                            
'If sSuchbegriff = "" Then Exit Sub

sSQL = " SELECT abfrPrktAuswahl.PMK, abfrPrktAuswahl.Status, " & _
" abfrPrktAuswahl.PrktNr, abfrPrktAuswahl.PrktName, FROM abfrPrktAuswahl WHERE abfrPrktAuswahl.PrktNr AND ("

  
  I = 0
  Pos1 = InStr(sSuchbegriff, " ")
  While Pos1 > 0
  I = I + 1
                               
 sSQL = sSQL & "(" & " [PMK] & [Status] & [PrktNr] & [PrktName] Like '*" & Left$(sSuchbegriff, Pos1 - 1) & "*') AND "
                                
  sSuchbegriff = Right$(sSuchbegriff, Len(sSuchbegriff) - Pos1)
  Pos1 = InStr(sSuchbegriff, " ")
  Wend
                            
  sSQL = sSQL & "(" & " [PMK] & [Status] & [PrktNr] & [PrktName] Like '*" & sSuchbegriff & "*') "
               
  sSQL = sSQL & ") ORDER BY abfrPrktAuswahl.PrktNr DESC; "
  
  
  Me!ufrmPrktAuswahl.Form.RecordSource = sSQL
  Me!ufrmPrktAuswahl.Form.Requery
  
  
Exit_TxKrit_AfterUpdate:
    Exit Sub

Err_TxKrit_AfterUpdate:
    MsgBox Err.Description
    Resume Exit_TxKrit_AfterUpdate

End Sub
PSViolon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2008, 10:23   #12
Josef P.
MOF Guru
MOF Guru
Standard

Wie sieht die fertige SQL-Anweisung aus? (Ist z.B. das Komma vor From noch enthalten?)
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2008, 10:41   #13
PSViolon
MOF User
MOF User
Standard

.... peinlich

Danke!
PSViolon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.05.2009, 21:55   #14
natajakob
Neuer Benutzer
Neuer Benutzer
Standard

Es ist natürlich super. Aber es funktioniert nicht in einem ADP Projek, der auf SQL zurückgreift. (((((((
natajakob ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.05.2009, 14:28   #15
Arne Dieckmann
MOF Guru
MOF Guru
Standard

Vermutlich musst du nur die Wildcards ändern-> Setze statt "*" dann doch lieber "%" als Platzhalter ein.

__________________

Gru&szlig;, Arne<br><br><u>Links</u>: <a *****"http://www.donkarl.com/FAQ/FAQStart.htm">FAQ</a> • <a *****"http://www.ardiman.de/datenbanken/grundlagen.html">Grundlagen</a> • <a *****"http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm">Relationale Datenbanken</a> • <a *****"http://www.lebans.com/">Stephen Lebans</a> • <a *****"https://dbwiki.net">DBWiki</a> <br><u>Tools</u>: <a *****"http://www.ardiman.de/datenbanken/tabtoweb.html">TabToWeb</a> • <a *****"http://www.sqlinform.com/">SQL-Formatter</a> • <a *****"/forum/vbseiten.php?page=7">Code Converter</a> • <a *****"https://regex101.com/">RegEx testen</a><br><u>System</u>: Win7 Pro 64bit, Office 20xx, div. MS-SQL Server 20xx, <a *****"http://www.firefox-browser.de/">Firefox</a><br><span style="color:#B22222">Bitte keine Fragen per Mail/PN</span> und als Neuling diese Anleitung (Code-Tags, Anhänge etc.) lesen.
Arne Dieckmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.