Piecemaker
Legacy Member
Ik ben voor een taak voor school een projectje aan het maken: we moeten een datingsite maken, ben momenteel bezig met het zoekscherm: er moeten een hoop parameters ingevuld worden zodat er gezocht kan worden naar overeenkomstige profielen.
Er zijn een 20tal parameters dus ik bouw de query parameter per parameter op, tot nu toe werkt het goed, ik kan al zoeken op: geslacht, regio, woonplaats, oogkleur, haarkleur, haarsnit, ... Allemaal redelijk eenvoudig dus.
Maar op het zoekformulier heb ik dus ook zoektermen zoals: Burgerlijke staat, persoonlijkheid, beroep, ... Hier kan ik meerdere keuzes tegelijk maken (checkboxen). Als ik dus bijvoorbeeld bij beroep zowel arbeider als bediende aanvink, moeten dus alle profielen getoond worden die arbeider of bediende zijn.
Al de zoekcriteria met meerdere opties steek ik dus in een generic list, bv: Dim burgerlijkeStaat As New Generic.List(Of String).
Hoe moet ik dit nu in mijn query doen? Tot hiertoe heb ik het volgende:
dit werkt dus niet, krijg een of andere foutmelding dat er geen generic in een query mag staan. Ook al geprobeerd met een gewone array, maar gaat blijkbaar ook niet.
Iemand een idee?
Er zijn een 20tal parameters dus ik bouw de query parameter per parameter op, tot nu toe werkt het goed, ik kan al zoeken op: geslacht, regio, woonplaats, oogkleur, haarkleur, haarsnit, ... Allemaal redelijk eenvoudig dus.
Maar op het zoekformulier heb ik dus ook zoektermen zoals: Burgerlijke staat, persoonlijkheid, beroep, ... Hier kan ik meerdere keuzes tegelijk maken (checkboxen). Als ik dus bijvoorbeeld bij beroep zowel arbeider als bediende aanvink, moeten dus alle profielen getoond worden die arbeider of bediende zijn.
Al de zoekcriteria met meerdere opties steek ik dus in een generic list, bv: Dim burgerlijkeStaat As New Generic.List(Of String).
Hoe moet ik dit nu in mijn query doen? Tot hiertoe heb ik het volgende:
Code:
Public Shared Function findAbonnementIDByZoektermen(ByVal geslacht As Integer, ByVal regio As Integer, ByVal zoekvoor As Integer, ByVal minLeeftijd As Integer, ByVal maxLeeftijd As Integer, ByVal burgerlijkeStaat As Generic.List(Of String)) As OleDbDataReader
Try
Dim cts As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("DB")
Dim con As New OleDbConnection(cts.ConnectionString)
Dim cmd As New OleDbCommand("SELECT PersoonlijkeInfo.AbonnementID FROM PersoonlijkeInfo, WoonplaatsRegio, VoorkeurInfo, BurgerlijkeStaat " & _
"WHERE PersoonlijkeInfo.GeslachtID=@geslacht AND " & _
"WoonplaatsRegio.RegioID=@regio AND " & _
"VoorkeurInfo.TypeID=@zoekvoor AND " & _
"PersoonlijkeInfo.GeboorteDatum >= @minDatum AND " & _
"PersoonlijkeInfo.GeboorteDatum <= @maxDatum AND " & _
"BurgerlijkeStaat.Omschrijving IN @burgerlijkestaat AND " & _
"PersoonlijkeInfo.WoonplaatsID=WoonplaatsRegio.WoonplaatsID AND " & _
"PersoonlijkeInfo.AbonnementID=VoorkeurInfo.AbonnementID AND" & _
"PersoonlijkeInfo.BurgerlijkeStaatID=BurgerlijkeStaat.BurgerlijkeStaatID")
cmd.Parameters.AddWithValue("@geslacht", geslacht)
cmd.Parameters.AddWithValue("@regio", regio)
cmd.Parameters.AddWithValue("@zoekvoor", zoekvoor)
cmd.Parameters.AddWithValue("@minDatum", Date.Today.AddYears(-maxLeeftijd))
cmd.Parameters.AddWithValue("@maxDatum", Date.Today.AddYears(-minLeeftijd))
cmd.Parameters.AddWithValue("@burgerlijkestaat", burgerlijkeStaat)
cmd.Connection = con
con.Open()
Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
Catch ex As Exception
End Try
Return Nothing
End Function
dit werkt dus niet, krijg een of andere foutmelding dat er geen generic in een query mag staan. Ook al geprobeerd met een gewone array, maar gaat blijkbaar ook niet.
Iemand een idee?