Avatar billede mnt82 Nybegynder
26. november 2004 - 03:25 Der er 11 kommentarer

"AND" og "OR"

Hej,

Jeg har lige et spørgsmål da jeg er ved at lave en søgefunktion, der søger fra en DB ved hjælp af to DropDownbokse.

Man vælger måske et søgekriterium i den ene og lader den anden stå tom, eller vælger at kombinere søgningen så der vælges et kriterium ud fra begge.

Det ser udmiddelbart fint ud når jeg bruger "AND" i min SQL-sætning. Men det er kun så længe jeg har valgt begge søgekriterier. - Lader jeg det ene stå tomt kommer der intet. 

Bruger jeg "OR" henter den alle oplysninger ud fra både den ene og den anden DropDownBoks, selvom disse to ikke har noget til fælles. Hvad gør jeg hvis jeg have "AND"-sætningen til at virke, og man kan søge på det ene uden det andet er valgt.

I princippet skal man kunne søge uden at vælge noget i DropDown'en og så skulle alle resultater komme.

PS. har jeg skabt det tomme felt i DropDown'erne i VB med:

DrpLst.Items.Insert(0,new ListItem("(intet valgt)"))
Avatar billede rbj_fp Nybegynder
26. november 2004 - 08:26 #1
Jeg tror at du skal programmere dig ud af problemerne.

Jeg ville checke om det valgt item i en list boks var og ud fra disse oplysninger vælge en sql-sætning alt efter behov.
Avatar billede janus_007 Nybegynder
26. november 2004 - 13:31 #2
Simpelt at løse..

Men jeg vil lige høre, har du kendskab til stored procedures?
Avatar billede ldanielsen Nybegynder
29. november 2004 - 10:44 #3
Du skal se på den kode dr genererer SQL'en. Hvis begge er valgt skal de være noget med:
SELECT * FROM tbl WHERE felt = 'ditten' OR felt = 'datten'

Hvis der kun er valgt i den ene skal det være:
SELECT * FROM tbl WHERE felt = 'ditten'

Hvis intet er valgt skal det være:
SELECT * FROM tbl

Det skulle jo ikke være så svært. Måske må vi se den kode der laver SQL-sætningen?
Avatar billede mnt82 Nybegynder
29. november 2004 - 15:14 #4
Okay, jeg sender lige SQLen lidt senere når jeg er kommet hjem. Men også gerne høre om løsningen med Stored Procedures fra Janus 007 :-)
Avatar billede mnt82 Nybegynder
30. november 2004 - 00:51 #5
Hej igen.

Jeg har lavet en kode der gerne skulle udvælge hvilken SQL der skal anvendes til at søge mellem de to dropdown-bokse. SQL'en har jeg pillet fra for at overskueliggøre det og da den fint virker når jeg tester den i Acces. Den ligner stort set den som Idanielsen beskriver.

Problemet er, at når jeg kører den laver den fejl allerede i det som der her er linie 2. Den kommer med meddelelsen:

System.FormatException: Input string was not in a correct format.

Her er koden:

1 'LstIns er ikke valgt, LstBy er valgt
2 If LstBy.SelectedItem.value <> 0 and LstIns.SelectedItem.value = 0 Then
3  strSQL = ""
4
5 'LstBy er ikke valgt, LstIns er valgt
6  ElseIF LstBy.SelectedItem.value = 0 and LstIns.SelectedItem.value <> 0 Then
7  strSQL = ""
8
9  'Begge er valgt
10  ElseIf LstBy.SelectedItem.value <> 0 and LstIns.SelectedItem.value <> 0 Then
11  strSQL = ""
12
13 'Intet er valgt
14  ElseIf LstBy.SelectedItem.value = 0 and LstIns.SelectedItem.value = 0 Then
15  strSQL = ""
Avatar billede ldanielsen Nybegynder
30. november 2004 - 12:27 #6
Vi skal se den SQL der giver fejlen. Det kunne være et vildfarent ', eller hvad ved jeg
Avatar billede janus_007 Nybegynder
30. november 2004 - 19:35 #7
Nu siger du Access? Er det ikke en mssql server du bruger??

Hygge...
Avatar billede mnt82 Nybegynder
01. december 2004 - 00:59 #8
Sorry, nej jeg bruger Access' SQL, så mit spørgsmål er måske lidt forkert kategoriseret. Men jeg har fået løst problemet ved blot at udskifte

If LstBy.SelectedItem.value <> 0 and LstIns.SelectedItem.value = 0 Then

med

If LstBy.SelectedItem.value <> "" and LstIns.SelectedItem.value = "" Then

- Det var 0'erne den ikke kunne klare, jeg ved ikke helt hvorfor. Men tak for hjælpen alligevel! I kan lægge nogle svar så skal jeg dele ud.
Avatar billede rbj_fp Nybegynder
01. december 2004 - 07:33 #9
here
Avatar billede ldanielsen Nybegynder
01. december 2004 - 10:04 #10
Svar
Avatar billede janus_007 Nybegynder
01. december 2004 - 13:05 #11
Jajo okidoki.. normalt plejer den slags ting nemlig at kunne løses ekstremt nemt i ren MSSQL og/eller SP, uden at man skal til at rode sin kode til med alskens besynderlige if/elses osv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester