Just nu i M3-nätverket
Gå till innehåll

Varför får jag inte ut det jag vill av frågan?


ottarpslisa

Rekommendera Poster

Jag sitter här med en fråga som tar fram de två rader som jag vet finns i tabellerna.

 

Först tar jag fram data

SELECT

TabellA.a AS Datum

 

UNION SELECT

TabellB AS Datum

 

Sen vill jag sortera ut datan med Datum från en viss vecka i ett visst år

 

WHERE (Year(Datum)=[Forms]![Rapportering]![År])

AND (DatePart("ww",(Datum),2,2)=([Forms]![Rapportering]![vecka]))

 

och jag lägger WHERE satsen i både SELECT och UNION SELECT

 

och detta ska ge dessa rader från vecka 3

Testobjekt 1:1   2014-01-16

Testobjekt 1:2   2014-01-16

 

men istället får jag ingenting, inte något felmeddelande heller för den delen.

Jag har klipp och klistrat och lyckats få fram att det är något fel med Forms!Rapportering!vecka men längre kommer jag inte, den delen av frågan är kopierad och exakt lika som en äldre version av denna rapport.

 

Någon som ser felet? själv har jag tittat på det ungefär hela dagen idag och halva igår så jag börjar bli lite gnällig.

 

Lisa

Länk till kommentar
Dela på andra webbplatser

Det är svårt att på distans säga vad som går fel. Ta ett steg i taget och se var det slutar fungera.

 

1.

SELECT

TabellA.a AS Datum

 

2.

SELECT

TabellA.a AS Datum

WHERE (Year(Datum)=[Forms]![Rapportering]![År])

 

3.

SELECT

TabellA.a AS Datum

WHERE (DatePart("ww",(Datum),2,2)=([Forms]![Rapportering]![vecka]))

 

4.

SELECT

TabellA.a AS Datum

WHERE (Year(Datum)=[Forms]![Rapportering]![År])

AND (DatePart("ww",(Datum),2,2)=([Forms]![Rapportering]![vecka]))

 

 

Fungerade allt? Testa då motsvarande med TabellB.

 

Fungerade allt då med? Testa då motsvarande med UNION.

 

 

Jag tror för den delen att du vill ha UNION ALL och inte bara UNION.

 

UNION tar bort duplikat. UNION ALL behåller duplikat.

 

Exempel:
 

A, A, B, B, C

UNION

A, C, D

 

ger resultatet A, B, C, D, dvs alla kopior borttagna.

 

 

A, A, B, B, C

UNION ALL

A, C, D

 

ger resultatet A, A, B, B, C, A, C, D, dvs alla rader från båda tabellerna kommer med.

 

(UNION ALL går dessutom i allmänhet lite lättare/snabbare att köra.)

Länk till kommentar
Dela på andra webbplatser

Jodå jag har letat och letat, klippt och klistrat och kommit fram till att felet måste finnas i texten:

AND DatePart("ww", DATUM, 2, 2)=

 

(varför går det inte att klistra in längre?)

 

meeen, om jag kollar den texten mot hjälpen på DatePart så är den rätt och om jag kollar den mot en tidigare fråga jag fick hjälp med här på ef är den rätt och om jag kollar den mot en tidigare fråga i en tidigare fungerande version av min databas (innan jag bytte tabellnamn) är den rätt så nu börjar jag bli lite förvirrad...

Är det någon som ser någon fnutt som är fel?

Länk till kommentar
Dela på andra webbplatser

Om jag skriver såhär:

SELECT AvslutadeLeveranser.datum AS Datum, AvslutadeLeveranser.objekt AS objekt

FROM AvslutadeLeveranser

WHERE Year(Datum)="2014"

 

UNION SELECT

Leveranser.datum AS Datum, Leveranser.objekt AS objekt

FROM Leveranser

WHERE Year(Datum)="2014"

 

Blir resultatet rätt dvs 9 rader

 

Om jag sedan lägger till

AND DatePart("ww", Datum,2,2) ="07" på översta selecten och "06" på den nedersta får jag inget svar fast jag borde få 6 rader på översta selecten och en på nedersta

 

Båda tabellerna är exakt likadana i designen och Datum är av typen datum.

Det jag klurar på är om Datum är ett reserverat ord?

Länk till kommentar
Dela på andra webbplatser

Det jag menade var att du skulle kolla vilket värde som DatePart returnerar för att kolla så att den inte "räknar fel" (beroende på inställningar). Typ:

SELECT 
   [Datum]
   ,[Objekt]
   ,DatePart("ww", [datum],2,2) AS [VeckoNummer]
FROM 
   AvslutadeLeveranser
WHERE 
   Year(Datum)="2014"

F.ö. så returnerar DatePart en integer t.ex. 7 och kan då kanske inte vara lika med "07"
http://office.microsoft.com/en-001/access-help/datepart-function-HA001228812.aspx

 

Testa således: 

SELECT 
   [Datum],[Objekt]
FROM 
   AvslutadeLeveranser
WHERE 
   Year(Datum)=2014
   AND DatePart("ww", [datum],2,2)=7
Länk till kommentar
Dela på andra webbplatser

Nu fungerar det, det var strängen som behövde vara ett tal, tänk att jag inte tänkt på det förrän nu och så förvirrande att det har fungerat innan (eller jag kanske bara har låtsats). Tusen tack för hjälpen, har inte gjort riktigt klart men förhoppningsvis får jag själv ordning på det nu.

 

Lisa

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...