sql: nagaan of waarde in een array zit

Status
Niet open voor verdere reacties.

Piecemaker

Nieuwe gebruiker
Lid geworden
10 apr 2009
Berichten
2
hallo,

ik ben voor een project voor school een datingsite aan het maken, momenteel ben ik bezig met een zoekpagina: er kan op een 20-tal termen gezocht worden, die allemaal ingevuld moeten worden. Zo is er bijvoorbeeld: geslacht, regio, leeftijd, lengte, gewicht, ... Allemaal redelijk simpel dus. Maar ik heb op het zoekformulier ook dingen als: burgerlijke staat, persoonlijkheid, beroep, .... Hier kan je dan uit een tabel verschillende waardes aanvinken. Bij burgerlijke staat kan je zo bijvoorbeeld aanvinken: vrijgezel, getrouwd, gescheiden, ... (9 opties momenteel in totaal)

Als ik hier nu bijvoorbeeld meerdere opties aanvink (vrijgezel en gescheiden bvb), dan moet er gezocht worden naar alle profielen die vrijgezel of gescheiden zijn.

Op het zoekformulier steek ik dus alle geselecteerde waardes in een array, in dit geval dus een array met 2 elementen. In mijn zoekfunctie geef ik dan deze arrays mee als parameters.

Dit is tot hiertoe mijn zoekfunctie: (generic list of geprobeerd, werkt ook niet)
VB.NET en Access DB (tijdelijk)

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

BurgerlijkeStaat.Omschrijving IN @burgerlijkestaat werkt blijkbaar niet dus.

ter verduidelijking, structuur databank van de de betreffende tabellen:

tabel PersoonlijkeInfo: PK = AbonnementID, andere kolommen: GeslachtID, WoonplaatsID, BurgerlijkeStaatID

tabel BurgerlijkeStaat: PK = BurgerlijkeStaatID, andere kolom: omschrijving

Ik hoop dat het een beetje duidelijk is zo, niet makkellijk uit te leggen.

Iemand een idee hoe ik dit kan oplossen??
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan