collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 57
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13949
  • stats Beiträge insgesamt: 66291
  • stats Themen insgesamt: 8936
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Suche mit Kombifeld  (Gelesen 31 mal)

Offline sagrael

  • Newbie
  • Beiträge: 1
Suche mit Kombifeld
« am: Juni 18, 2018, 16:55:53 »
Hallo ,vielleicht kann mir jemand helfen,in meine DB habe ich einen Endlosformular und  4 Kombifelder für die schnell suche.Es sollen aus dem Formular Daten herausgefiltert werden ,zuerst Werte aus erstem Kombi dann sollen die herausgesuchte Daten nach und nach durch andere Kombi Felder herausgefiltert werden.Alle Kombi Felder funktionieren aber das Problem ist wenn ich 2 ,3 und 4 Kombi Feld benutze werden die Daten erneut neu aus dem komplettem Endlosformular herausgesucht und nicht aus der ersten Kombi Feld suche.
strText = Me.cbaHalle.Value
strsearch = "SELECT * from tblMTG_komplett where ((Halle like ""*" & strText & "*""))"
Me.RecordSource = strsearch
Me.cbaHalle.Requery
'Me.cbaHalle.RowSource
DoCmd.SetOrderBy "NameMTG" 'geordnet aufsteigend"
SetOrderBy = True


Private Sub cboWindows_AfterUpdate() 'combo
Dim tblMTGsuche As String
Dim strText As String

strText = Me.cboWindows.Value
strsearch = "SELECT * from tblMTG_komplett where ((Betriebssystem like ""*" & strText & "*""))"
Me.RecordSource = strsearch
Me.cboWindows.Requery
DoCmd.SetOrderBy "NameMTG" 'geordnet aufsteigend
SetOrderBy = True
Me!cbaHalle = Null
Me!cboStatus = Null


Private Sub cmbHersteller_AfterUpdate() 'combo
Dim tblMTGsuche As String
Dim strText As String

strText = Me.cmbHersteller.Value
strsearch = "SELECT * from tblMTG_komplett where ((Hersteller like ""*" & strText & "*""))"
Me.RecordSource = strsearch
Me.cmbHersteller.Requery
DoCmd.SetOrderBy "NameMTG" 'geordnet aufsteigend
SetOrderBy = True
Me!cboWindows = Null
Me!cbaHalle = Null
Me!cboStatus = Null

Private Sub cbaHalle_AfterUpdate() 'combo
Dim tblMTGsuche As String
Dim strText As String



Private Sub cboStatus_AfterUpdate() 'combo
Dim tblMTGsuche As String
Dim strText As String
strText = Me.cboStatus.Value
strsearch = "SELECT * from tblMTG_komplett where ((Status like ""*" & strText & "*""))"
Me.RecordSource = strsearch
Me.cboStatus.Requery
DoCmd.SetOrderBy "NameMTG" 'geordnet aufsteigend
SetOrderBy = True
Erste Feld(Halle), zweite Feld (Betriebssystem), dritter (Hersteller) und vierte (Status).Leider komme ich nicht weiter ,könnte mir vielleicht jemand helfen wie ich die vorherigen Filter einschließen kann ,VBA ist zur zeit noch Schwarze Magie für mich.Danke
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23309
Re: Suche mit Kombifeld
« Antwort #1 am: Juni 18, 2018, 17:09:37 »
Hallo,
wenn das genau nach deiner Beschreibung funktionieren soll und die Felder (Daten) nicht voneinander abhängig sind, dann sollte die Filter-Prozedur mit einem Button ausgelöst werden, in der alle Kombifeld-Werte in der Where-Condition zusammengefasst sind. 
…. where Betriebssystem like '*" & Me!cbaHalle & "*'   and Betriebssystem like '*" & Me!cbaBetriebssystem & "*' and Hersteller like...…………………………..

Ich zweifle hier aber stark am korrekten Tabellen-Aufbau und vermisse die  Umsetzung der Normalisierungsregeln. 


Wenn die Daten voneinander abhängig und normalisiert sind, dann hilft
http://www.donkarl.com/?FAQ4.36
weiter.

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1768
Re: Suche mit Kombifeld
« Antwort #2 am: Juni 18, 2018, 17:35:37 »
Hallo Franz,
Bei der ersten Lösung würde ich evtl. Fehler wegen NULL-Werten
erwarten. Die FAQ hilft nur bedingt bzw. hat er die, nehme ich an,
sogar schon umgesetzt.
Ich würde auch den Button zum Auslösen vorschlagen, in der
Ereignisprozedur den Filter aber Kombi für Kombi zusammensetzten.
Wobei ich die Kombis vorher nummerieren würde (Kombi1, Kombi2, usw.)
Luftcode:
Private Sub btnFiltern_OnClick()

    Dim strF As String
    Dim z As Integer

    For z = 1 To 4
        If Not IsNull(Me.Controls("Kombi" & z)) Then
            strF = strF & " AND TabellenFeld = " & Me.Controls("Kombi" & z)
        End If
    Next z
    '1. AND abschneiden
    strF = Mid(strF, 7)
    Me.Filter = strF
    Me.FilterOn = True

End Sub

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1768
Re: Suche mit Kombifeld
« Antwort #3 am: Juni 18, 2018, 17:39:06 »
und übrigens, noch was …
LIKE macht bei richtig eingerichteten Kombifeldern IMO keinen Sinn, da
diese eine ID zurückgeben sollten, und die ist =.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23309
Re: Suche mit Kombifeld
« Antwort #4 am: Juni 18, 2018, 17:49:58 »
Hallo,

einen NULL-Check habe ich weggelassen, weil es bei den offensichtlich als TEXT deklarierten Feldern und mit dem Like-Operator keine Rolle spielt.

Auf den separaten Auslösebutton hab ich auch hingewiesen.

Ansonsten ist bei normalisierten Tabellenaufbau der Donkarl-Tipp  (Schlüsselfeld-Benutzung) anzuwenden.

 ;) ;) ;)