Jag har problem med mina tabeller, använder mig av left join för att hämta kopplad info från 6 st tabeller. Select satsen ser ut så här: Innehåller din variabel ar verkligen något? Har du kört frågan inuti access egen frågekörning så att du ser att den returnerar något och att du inte får något felmeddelande på något fel i frågan? Jo den innehåller ett årtal. Huvudtabellen borde åtminstone visa sig på något sätt (tab1) men där får jag inte någon info alls, det är övriga tabeller som kan vara någon tom post. Om jag öppnar varje tabell för sig, alltså skriver nya rs så går det bra. Men för att få det smidigare med ett anrop så tyckte jag att left join kunde vara bra. Men tydligen inte. Kan det vara så att Access är förhindrad att jobba mot så många tabeller i en join? Nej där finns ingen begränsning vad jag känner till. Jo jag har det, skrivfel av mig när jag skrev frågan var för trött. Ser ut som om det går fel vid det fetstilta: förlåt felskrivning här igen. Joinen är korrekt jag har lusläst raderna många gånger, jag håller på och stegar igenom bit för bit. Så långt som jag har kommit så verkar det vara fel på rs. Jag kan uppenbarligen inte tala om tabellnamn.kolumnnamn i rs. Vad det verkar så kan jag bara ange kolumnnamn. Det ställer till problem iom att det finns kolumner i en del tabeller med samma namn. Alternativet verkar vara att tänka om namnen på tabellernas kolumner. Eller har jag fel ang rs? Hur vet du att det blir fel med att bara ange kolumnnamn...? Får du ett felmeddelande? Kan du inte kopiera frågan rakt av så vi ser exakt hur frågan ser ut med de namn du använt. Det kan vara så att du har använt reserverade ord de måste då omslutas av tecknena [ och ], exempel [tabell1]. Anger du tabellnamnen exakt som de heter eller kallar du dem för något annat med "AS"? tabellnamnen anges exakt och de är omslutna av []. Problemet upstår i rs när jag sk visa datan har jag upptäckt. jag kan inte skriva <% =(rs.Fields.Item("[tab1].[kolumnnamn]").Value)%> utan måste skriva Och men då är det egentligen inget fel på sqlfrågan med andra ord... Det var ingen dum ide tänkte inte så långt. Tackar så hjärtligt för hjälpen. tips (även för andra som bygger med databaser) är att döpa fält efter vad tabellen heter..Left join ingen visning
SELECT tab1.n, tab1.m,tab2.n,tab2.h,tab3.n,tab3.h,tab4.n,tab4.h,tab5.n,tab5.h,tab6.n,tab6.h FROM ((((((tab1 LEFT JOIN tab2 ON tab2.n=tab1.n)LEFT JOIN tab3 ON tab3.n=tab1.n)LEFT JOIN tab4 ON tab4.n=tab1.n)LEFT JOIN tab5 ON tab5.n=tab1.n)LEFT JOIN tab6 ON tab6.n=tab1.n) WHERE tab2.h='"& ar &"' AND tab3.h='"& ar &"' tab24h='"& ar &"' tab5.h='"& ar &"' tab6.h='"& ar &"'"
Problemet som är att jag inte får ut någon info. Jag vill hämta alla poster från tab1 (jag har angivit alla kolumner) från de andra tabelerna vill jag hämta info från ett visst år som finns angivet i variabeln ar. Vad som händer är att den inte får något värde alls. Kör allt i Access då den servern som det här finns på inte har annat alternativ. Jag kanske inte ser skogen för alla träd, men någon annan kanske gör det.Sv: Left join ingen visning
Sv:Left join ingen visning
Sv: Left join ingen visning
Förenkla frågan genom att ta bort alla joins så att du först bara hämtar data från första tabellen med de villkor som finns för första tabellen. Lägg efterhand till en join i taget med tillhörande villkor till den tabellen så kommer du fram till vilken tabell som orsakar problemet.
Det är säkert något villkor för de andra tabellerna som är fel...
Vad jag kan se på dina villkor så har du varken AND eller OR mellan alla .h ='"& ar &", det är nog här som det går fel. Access tror att du vill ha ett resultat där årtalet finns med i alla (AND) tabeller och det blir då inget resultat då minst en tabell ger ett tomt resultat. Testa att sätta OR mellan varje istället...
WHERE tab2.h='"& ar &"' AND tab3.h='"& ar &"' tab24h='"& ar &"' tab5.h='"& ar &"' tab6.h='"& ar &"'" Sv:Left join ingen visning
SELECT tab1.n, tab1.m,tab2.n,tab2.h,tab3.n,tab3.h,tab4.n,tab4.h,tab5.n,tab5.h,tab6.n,tab6.h FROM ((((((tab1 LEFT JOIN tab2 ON tab2.n=tab1.n)LEFT JOIN tab3 ON tab3.n=tab1.n)LEFT JOIN tab4 ON tab4.n=tab1.n)LEFT JOIN tab5 ON tab5.n=tab1.n)LEFT JOIN tab6 ON tab6.n=tab1.n) WHERE tab2.h='"& ar &"' AND tab3.h='"& ar &"' AND tab24h='"& ar &"' AND tab5.h='"& ar &"'AND tab6.h='"& ar &"'"
ska det vara. Jag har provat med OR också men fortfarande inget resultat. Det verkar inte få med sig något överhuvudtaget från första tabellen som inte innehåller år. Jag ska prova att börja från början med en sen två etc.. tabeller annars får jag väl försöka vända på frågan tills jag får vad jag vill ha, hör av mig igen...
mvh WeronicaSv: Left join ingen visning
SELECT tab1.n, tab1.m,tab2.n,tab2.h,tab3.n,tab3.h,tab4.n,tab4.h,tab5.n,tab5.h,tab6.n,tab6.h FROM ((((((tab1 LEFT JOIN tab2 ON tab2.n=tab1.n)LEFT JOIN tab3 ON tab3.n=tab1.n)LEFT JOIN tab4 ON tab4.n=tab1.n)LEFT JOIN tab5 ON tab5.n=tab1.n)LEFT JOIN tab6 ON tab6.n=tab1.n) WHERE tab2.h='"& ar &"' AND tab3.h='"& ar &"' AND <b>tab24h</b>='"& ar &"' AND tab5.h='"& ar &"'AND tab6.h='"& ar &"'" Sv:Left join ingen visning
mvh WeronicaSv: Left join ingen visning
Det är lättare för oss om du kopierar frågan rakt in här istället för att manuellt skriva din sqlfråga här på forumet.Sv:Left join ingen visning
<% =(rs.Fields.Item.kolumnnamn").Value)%>
mvhSv: Left join ingen visning
Eftersom fälten heter samma så skriver du exempelvis SELECT tab1.n as boll, tab1.m as kalle,tab2.n as sko,osv
Sedan när du använder det skriver du <% =(rs.Fields.Item.boll").Value)%> för att få fatt i den första kolumnen i select satsen.Sv:Left join ingen visning
mvh WeronicaSv: Left join ingen visning
t.ex
Tabell: firma_personal
Fältnamn: personalID, personalNamn, personalTelefon (etc)
om jag sedan i en annan tabell t.ex "firma_ordrar" har ett fält för att visa vem som gjorde ordern använder jag personalID igen (de har ju ändå samma värde då jag kör en left join på dom).. med denna metod kan man aldrig drabbas av att två fält får samma namn i två olika tabeller - om dom inte ska ha det