(SIEB_SWE_TST..S_CONTACT.FST_NAME = @VarFirstName
or @VarFirstName is null)
Får inget resultat tillbaka
WHERE
SCA.CONTACT_ID = SIEB_SWE_TST..S_CONTACT.ROW_ID AND
SIEB_SWE_TST..S_CON_ADDR.ACTIVE_FLG = 'Y' AND
SIEB_SWE_TST..S_CONTACT.SUPPRESS_EMAIL_FLG = 'N' AND
SIEB_SWE_TST..S_CON_ADDR.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_CONTACT.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_ADDR_PER.X_VERIFICATION_STAT = 'Provider-Approved' AND
(SIEB_SWE_TST..S_CONTACT.FST_NAME = @VarFirstName
OR @VarFirstName IS NULL) AND
(SIEB_SWE_TST..S_CONTACT.LAST_NAME = @VarLastName
OR @VarLastName IS NULL) AND
(SIEB_SWE_TST..S_CONTACT.BRICK = @VarBrick
OR @VarBrick IS NULL) AND
(SIEB_SWE_TST..S_CONTACT.ROLE = @VarRole
OR @VarRole IS NULL) AND
(SIEB_SWE_TST..S_CONTACT.SPECIALITY= @VarSpeciality
OR @VarSpeciality IS NULL))
Jag undrar jag om det verkligen skall vara SIEB_SWE_TST..S_CONTACT.FST_NAME i alla urval?
Jag som skrev fel men det fungerar ändå inte.
Får inga resultat tillbaka om jag enbart söker på ett fält!
Om jag söker på alla fält med rätt information som passar på en person får jag en träff, men jag kan inte enbart söka på t ex "LastName", då får jag inga träffar.
WHERE
SCA.CONTACT_ID = SIEB_SWE_TST..S_CONTACT.ROW_ID AND
SIEB_SWE_TST..S_CON_ADDR.ACTIVE_FLG = 'Y' AND
SIEB_SWE_TST..S_CONTACT.SUPPRESS_EMAIL_FLG = 'N' AND
SIEB_SWE_TST..S_CON_ADDR.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_CONTACT.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_ADDR_PER.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_CONTACT.FST_NAME LIKE '%' + @VarFirstName + '%' AND
SIEB_SWE_TST..S_CONTACT.LAST_NAME LIKE '%' + @VarLastName + '%')
Då fungerar det att endast söka på ett fält eller flera. Lämnar man nåt fält tomt så tar den med allt i det fältet.
Ja det fungerar ju om man tycker det är ok att få alla Jonas om man söker på Jon.
Eftersom du ändå har en stored procedure, dvs du kan göra vad du vill och hur som helst, så kan du ju gå igenom alla fält och bygga upp ditt urval allt eftersom du träffar på ett icke-tomt fält. Lite krångligare, lite mer stringent, kanske snyggare?
Ja det fungerar ju om man tycker det är ok att få alla Jonas om man söker på Jon.
Eftersom du ändå har en stored procedure, dvs du kan göra vad du vill och hur som helst, så kan du ju gå igenom alla fält och bygga upp ditt urval allt eftersom du träffar på ett icke-tomt fält. Lite krångligare, lite mer stringent, kanske snyggare?
Jo det är sant, men hur går jag till väga om jag enbart vill söka på exakta namn men samtidigt om jag lämnar ett fält tomt så ekluderar den det fältet i sökningen? Jag vill ju att den enbart söker på de fälten jag skickar med ett värde till.
WHERE
SCA.CONTACT_ID = SIEB_SWE_TST..S_CONTACT.ROW_ID AND
SIEB_SWE_TST..S_CON_ADDR.ACTIVE_FLG = 'Y' AND
SIEB_SWE_TST..S_CONTACT.SUPPRESS_EMAIL_FLG = 'N' AND
SIEB_SWE_TST..S_CON_ADDR.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_CONTACT.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_ADDR_PER.X_VERIFICATION_STAT = 'Provider-Approved' AND
SIEB_SWE_TST..S_CONTACT.FST_NAME LIKE @VarFirstName AND
SIEB_SWE_TST..S_CONTACT.LAST_NAME LIKE @VarLastName)
Sen i själva ASP sidan så kollade jag bara vad som skrevs in i formuläret.
Om man lämnade fältet tomt så ersätts den tomma strängen med "%", alltså wildcardet och då tar den med allt. Skriver man däremot något i fältet så söker den enbart på det och vill man kunna söka på delar av namnet så skriver man helt enkelt "Anderss%" i fältet så tar den med wildcardet i strängen.
If Request.Form("VarFirstName") = "" then
VarFirstName = "%"
Else
VarFirstName = Request.Form("VarFirstName")
End IF