Sida 1 av 2

Microsoft Query Villkor

Postat: 3 oktober 2013, 07:23:33
av Bosen
Jag använder Microsoft Query för att plocka info från en databas till Excel 2010.
I en tabell så har jag en kolumn som heter DATUM.
Denna kolumn innehåller en textsträng med siffror som är formatterad "ÅÅMMDD".

Jag vill, genom en vilkorssats, plocka ut bara dagens och gårdagens datum. Jag vill inte "hårdkoda" datumet utan varje gång jag kör frågan så vill jag att det skall bli just posterna skapade det datumet jag kör frågan och datumet dagen innan.

Jag har googlat en massa och testat lite olika grejer, men får inte någon syntax som funkar. bl.a
CURDATE()
SysTime()
TODAY()
NOW()

Finns det någon som är haj på Microsoft Query?

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 07:46:00
av ds77
Fungerar CONVERT(date,GETDATE())?

Edit: du ville gårdagen också, jag hade provat något sånt här:

DATEDIFF(day, datum , GETDATE())<=1

Edit igen textsträng ja då hade jag (helt oprövat) provat detta:

DATEDIFF(day, CONVERT(datetime,datum) , GETDATE())<=1

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 09:05:09
av johano
Kanske nåt liknande:
(med MSSQL server syntax):

Kod: Markera allt


select * from TID_D where datum in ( convert(char(6), dateadd(dd, -1, getdate()), 12), convert(char(6), dateadd(dd, -2, getdate()), 12) )

/johan

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 09:51:14
av Bosen
min sql-fråga ser nu ut som följande:

Kod: Markera allt

SELECT TID_D.DATUM, TID_D.ANST_NR, TID_D.ANL_NR, TID_D.SKIFTTEXT_1, TID_D.SKIFTTEXT_2, TID_D.SKIFTTEXT_3, TID_D.SKIFTTEXT_4, TID_D.SKIFTTEXT_5, TID_D.SKIFTTEXT_6, TID_D.AO_NR, TID_D.AO_NR, TID_D.AVDELNING, TID_D.UAV, TID_D.SKIFT, TID_D.BEHANDLAD, TID_D.PERIOD, TID_D.DIM_FTG_1, TID_D.DIM_0_1, TID_D.DIM_1_1, TID_D.DIM_FTG_2, TID_D.DIM_0_2, TID_D.DIM_1_2
FROM MeritSCV.dbo.TID_D TID_D
WHERE TID_D.DATUM in ( convert(char(6), dateadd(dd, -1, getdate()), 12), convert(char(6), dateadd(dd, -2, getdate()), 12) )
Men det bilr syntaxfel.

Testat lite smått med de övriga förslagen också, men fortfarande problem.
Helst så skulle jag vilja ha en lösning med ett villkor i vilkorslistan

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 09:52:41
av johano
Hur ser felmeddelandet ut?
Kör du mot en Access-databas?

/johan

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 10:43:08
av Bosen
Det jag vet om databasen är att det är en "ODBC". Om det betyer att det är access vet jag ej.
Felmedelandet ser såhär ut:
Query1.png

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 13:24:25
av ds77
Om du testar med:

Kod: Markera allt

EXEC(SELECT TID_D.DATUM, TID_D.ANST_NR, TID_D.ANL_NR, TID_D.SKIFTTEXT_1, TID_D.SKIFTTEXT_2, TID_D.SKIFTTEXT_3, TID_D.SKIFTTEXT_4, TID_D.SKIFTTEXT_5, TID_D.SKIFTTEXT_6, TID_D.AO_NR, TID_D.AO_NR, TID_D.AVDELNING, TID_D.UAV, TID_D.SKIFT, TID_D.BEHANDLAD, TID_D.PERIOD, TID_D.DIM_FTG_1, TID_D.DIM_0_1, TID_D.DIM_1_1, TID_D.DIM_FTG_2, TID_D.DIM_0_2, TID_D.DIM_1_2
FROM MeritSCV.dbo.TID_D TID_D
WHERE TID_D.DATUM in ( convert(char(6), dateadd(dd, -1, getdate()), 12), convert(char(6), dateadd(dd, -2, getdate()), 12) ))
Fungerar det då?

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 13:34:49
av Bosen
Nej, då får jag följande:
Query2.png

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 13:37:46
av ds77

Kod: Markera allt

EXEC('SELECT TID_D.DATUM, TID_D.ANST_NR, TID_D.ANL_NR, TID_D.SKIFTTEXT_1, TID_D.SKIFTTEXT_2, TID_D.SKIFTTEXT_3, TID_D.SKIFTTEXT_4, TID_D.SKIFTTEXT_5, TID_D.SKIFTTEXT_6, TID_D.AO_NR, TID_D.AO_NR, TID_D.AVDELNING, TID_D.UAV, TID_D.SKIFT, TID_D.BEHANDLAD, TID_D.PERIOD, TID_D.DIM_FTG_1, TID_D.DIM_0_1, TID_D.DIM_1_1, TID_D.DIM_FTG_2, TID_D.DIM_0_2, TID_D.DIM_1_2
FROM MeritSCV.dbo.TID_D TID_D
WHERE TID_D.DATUM in ( convert(char(6), dateadd(dd, -1, getdate()), 12), convert(char(6), dateadd(dd, -2, getdate()), 12) )')
Med ett par ' kanske det fungerar bättre.

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 13:52:03
av Bosen
Det funkade fint!!

Jag älskar detta forumet!

Tack!

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 22:55:35
av sodjan
Jag skulle aldrig skriva SQL'en så där, utan så här:

Kod: Markera allt

EXEC
('SELECT TID_D.DATUM,
         TID_D.ANST_NR,
         TID_D.ANL_NR,
         TID_D.SKIFTTEXT_1,
         TID_D.SKIFTTEXT_2,
         TID_D.SKIFTTEXT_3,
         TID_D.SKIFTTEXT_4,
         TID_D.SKIFTTEXT_5,
         TID_D.SKIFTTEXT_6,
         TID_D.AO_NR,
         TID_D.AO_NR,
         TID_D.AVDELNING,
         TID_D.UAV,
         TID_D.SKIFT,
         TID_D.BEHANDLAD,
         TID_D.PERIOD,
         TID_D.DIM_FTG_1,
         TID_D.DIM_0_1,
         TID_D.DIM_1_1,
         TID_D.DIM_FTG_2,
         TID_D.DIM_0_2,
         TID_D.DIM_1_2
  FROM MeritSCV.dbo.TID_D TID_D
  WHERE TID_D.DATUM in
    ( convert(char(6), dateadd(dd, -1, getdate()), 12),
      convert(char(6), dateadd(dd, -2, getdate()), 12))
')
Eller något liknande... :-)

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 23:06:51
av ds77
Vad jag minns har man inte mycket för det i "microsoft query" den formaterar glatt om det ändå. Man får vara glad att man kan skriva något manuellt alls :)

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 23:16:43
av sodjan
Senast jag körde MS-Query var 93-94 någongång, men det kan ju stämma... :-)
Och nej, för automatgenererad kod spelar det kanske inte någon större roll.
Men för något som ska underhållas i framtiden så spelar läsbarheten roll.

Re: Microsoft Query Villkor

Postat: 3 oktober 2013, 23:19:36
av ds77
Absolut, ett sätt kan vara att ha en liten textfil(eller en textruta eller liknande någonstans i sitt kalkylblad) som man kan ha snyggt formaterad och kopiera in från vid behov...

Re: Microsoft Query Villkor

Postat: 4 oktober 2013, 07:37:04
av Bosen
Hur lägger man till ytterligare ett kriteria??
Jag försöker med:

Kod: Markera allt

  WHERE TID_D.DATUM in
    ( convert(char(6), dateadd(dd, -1, getdate()), 12),
      convert(char(6), dateadd(dd, -2, getdate()), 12))
AND (TID_D.AVDELNING Like 'S%')
')
men det vill inte fungera (jag får "Incorrect syntax near 'S' ")

Jag vill alltså bara ha poster i TID_D.AVDELNING som börjar på S


När jag ändå håller på så kan jag ju tillägga att jag även bara vill ha poster i TID_D.SKIFTTEXT_1 som inte är tomma.