Avatar billede mads.rode Nybegynder
25. januar 2004 - 16:23 Der er 9 kommentarer og
1 løsning

Problemer med en select.

Jeg har en tabel som ser sådan her ud...

ID    Nummer    Niveau  DatoIDouble
1      1        1        38010
2      2        1        38010
3      1        1        38012
4      1        2        38012
5      2        1        38012

Ud fra den vil jeg gerne have alle dem som er nærmest/lig med en given dato(double), f.eks 38010 og 38011 skal give de 2 først, 38012 og 38013 skal give de 3 sidste tilbage.

Nogen der har en løsning på den?
25. januar 2004 - 16:33 #1
jeg er ikke helt med på hvad du mener, men hvis du har en formular med f.eks. en knap på, kan koden se nogenlunde således ud:

Select case Me!DatoIDouble
  Case 38010 to 38011
    'bla bla
  case 38012 to 38013
    'bla bla bla
  case 38015, 38015
    'bla
end select
Avatar billede mads.rode Nybegynder
25. januar 2004 - 16:36 #2
Det er ikke en fomular jeg skal bruge, men i en select sætning...
25. januar 2004 - 16:47 #3
nå, du mener en SQL-sætning. Jeg forstod det som en select CASE-sætning.

Det er svært at lave i en SQL-sætning, hvis der er mange forskellige DatoIDouble.
Det kræver lidt større kendskab til data.
Hvor kommer den værdi, som du spørger på fra?
Er det altid kun i 'grupper' med 2 (38010 og 38011)
Kan du beskrive lidt nærmere?
Avatar billede terry Ekspert
25. januar 2004 - 16:59 #4
mads.rode> can you be a bit more specific please? I see NO records with 38011 or 38013!
You need to give an example with what you have and what you want, and how you got there!
Avatar billede mads.rode Nybegynder
25. januar 2004 - 17:02 #5
Det er sådan at man kan sætte nummere og niveauer op frem i tiden og så kan man komme med en dato (som double) og få det udtræk som passer til. Den skal bare vælge den nærmeste dato som er mindre end/lig med.
Avatar billede mads.rode Nybegynder
25. januar 2004 - 17:08 #6
Hvis jeg kommer med 38011, skal den vælge den sidst som er <= det, altså det vil give 38010 tilbage. Jeg kan godt lave den men hvis jeg f.eks kommer med 38020 så for jeg både 38010 og 38012 tilbage, hvor jeg kun skal bruge 38012.
25. januar 2004 - 17:12 #7
select top 1 * from [tabel] where Datoidouble <=[din værdi] Order by Datoidouble Desc
Avatar billede terry Ekspert
25. januar 2004 - 17:16 #8
Do you want to see ALL records or just one of the intervals? I see no way of seeing all records with all fields but you can see the number of records within each interval by doing something like this.

If you want it in SQL without any VBA then as far as I can see you are going to have to make an extra table.

Exampe:

DatoIDouble (double)
DatoValue    (int)

data example
38010 1
38011 1
38012 2
38013 2

Now you make a query where you JOIN the two tables on DatoIDouble and select
the field DatoValue from tblDateValue and GROUP on this field. Now you need to have a coulm which you count. so select the ID column and then select count instead of GROUP
Avatar billede mads.rode Nybegynder
25. januar 2004 - 17:45 #9
Jeg har fundet ud af det, efter terry's ide....

Terry make a new answer, and you get the points.
Avatar billede terry Ekspert
25. januar 2004 - 17:50 #10
:o)
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