Avatar billede jademutter Nybegynder
20. oktober 2006 - 13:51 Der er 13 kommentarer og
1 løsning

Søgefunktion?

Hej Alle

Jeg har lavet en søgefunktion, der kan finde elementer ud fra en given måned og et givent år, desværre virker den ikke helt efter hensigten.
Brugeren indtaster månedStart og månedSlut samt årStart og årSlut.
Meningen er så at den skal finde de elementer der opfylder BEGGE kriterier, men hvis jeg indtaset månedStart=1, månedSlut=2, årStart=2004, årSlut=2006, får jeg alle elementer fra 2004-2005-2006, og ikke kun dem fra måned 1 og 2!!

Jeg har indsat min kode nedenfor:
SELECT tblSamlet.Måned, tblSamlet.År, tblSamlet.Depotsted, tblSamlet.Markedsværdi, tblSamlet.[#Transaktioner], tblSamlet.[#Annulleringer]
FROM tblSamlet
WHERE tblSamlet.Måned Between forms!frmSearch!maanedStart And forms!frmSearch!maanedSlut OR tblSamlet.År Between forms!frmSearch!aarStart And forms!frmSearch!aarSlut Like Trim(forms!frmSearch!maanedStart & '')='' Like Trim(forms!frmSearch!maanedSlut & '')='' Like Trim(forms!frmSearch!aarStart & '')='' Like Trim(forms!frmSearch!aarSlut & '')='';

Det skal selvfølgelig også være muligt kun at udfylde månedStart=1, og månedSlut=2 og efterlade de to sidste blanke.

Håber på lidt hjælp...

/Jademutter
Avatar billede overchord Nybegynder
20. oktober 2006 - 14:16 #1
Hvis du skifter dit OR til et AND i dine Sql saetning burde det virke. Grunden til at du faar alle er fordi det i dit eksempel er det bredest kriterie der opfyldes og deftersom kun et kriterie skal opfyldes naar du har OR i din SQL vil det altid blive den der retuneres.
Avatar billede overchord Nybegynder
20. oktober 2006 - 14:18 #2
Nu saa jeg lige at du ville kunne efterlade blank felter ogsaa - det goer det lidt mere besvaerligt. Du skal muligvis smide en if-saetning ind efter flg princip

if maaned-felter er udfyldt then
  if aarsfelter udflydt then
      Hele SQL-saetningen
  else
      SQL kun med maaneder
  end if
end if
Avatar billede jademutter Nybegynder
20. oktober 2006 - 14:20 #3
Nu virker det hvis jeg indtaster noget i ALLE felterne.
Indtaster jeg kun månedStart=1 og månedSlut=2, og ikke andet, kommer der 0 rækker.

/Jademutter
Avatar billede jademutter Nybegynder
20. oktober 2006 - 14:21 #4
jeg forstår ikke hvordan!

/jademutter
Avatar billede terry Ekspert
20. oktober 2006 - 14:46 #5
If no values are entered then you have a couple of options.

1: Give them a default value.
2: Build your SQL dynamically depending on what fields you enter.
Avatar billede jademutter Nybegynder
20. oktober 2006 - 15:07 #6
terry:

I have never tried to build a dynamic SQL-sentence, how do I do that?

/jademutter
Avatar billede terry Ekspert
20. oktober 2006 - 17:19 #7
You can find a simple example here.
http://home1.stofanet.dk/santhel/Download/Search demo.zip

It only builds the filter propery but can quite easily be modified to build a complete SQL statement.

The filter propery is the same as the WHERE part of an SQL but without WHERE.

Anyway, take a look and get back if you need more assistance.

god weekend
Terry
Avatar billede terry Ekspert
26. oktober 2006 - 19:58 #8
do you still need help here jademutter?
Avatar billede jademutter Nybegynder
13. november 2006 - 15:04 #9
Ja dit link løste ikke mit problem....

Jeg kan sangtens bare få 8 og 2005.
Problemet er ikke ved fastdefineret værdier, men når jeg skal have en "range" som f.eks. fra 8-10 og fra 2005-2006.
Avatar billede terry Ekspert
13. november 2006 - 15:41 #10
The link was given as an example only. For an interval you need to have two fields, one for start an done for end. Then in the code
you need to use

>= FromField <= ToField

and its also an idea to test if any of the fields are empty, if they are then use a default value
Avatar billede jademutter Nybegynder
13. november 2006 - 16:41 #11
yes i know and it is no problem to do with one "range", the problem is when i need 2 "ranges"
Avatar billede terry Ekspert
13. november 2006 - 16:46 #12
WHERE (dato >= FromDato AND dato <= ToDato) AND (maaned >= Frommaaned  AND maaned <= Tomaaned)
Avatar billede jademutter Nybegynder
13. november 2006 - 17:46 #13
yes but as you can se in mt first message it doen't work
Avatar billede terry Ekspert
13. november 2006 - 18:52 #14
then there is somnething else which is wrong.

If you can send me your dB then maybe I can see the problem.

ekspertenATsanthell.dk

replace AT with @
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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