Avatar billede sjoran Nybegynder
09. februar 2007 - 13:41 Der er 4 kommentarer og
1 løsning

sub select til at udvælge kolonne

Jeg har en tabel [forecast] med følgende konto, afdeling, januar, februar .. og resten af årets måneder. Samt en forespørgsel [vælg moned] der udvælger en måned fra en kalender tabel. Nu vil jeg gerne have at man ud fra valget i forespørgslen også kan vælge den kolonne i forecast tabellen som har en tilsvarende overskrift. Jeg har nedenfor vist hvordan det logisk set kunne se ud. Men denne sql æder Access ikke.

select forecast.konto, forecast.afdeling, forecast.(select month from [vælg moned])
from forecast;

Er der nogen forslag til hvordan man kan skrive denne logik.
Avatar billede terry Ekspert
09. februar 2007 - 14:01 #1
Wouldnt it be more correct to alter your table design?

a table for department information. Then another for forcast which has a relation to department, and a field for date. Then other fields containing what evr forcast information you need.

I would suggets a date because this can then be used to find the year and month.

You would then add a records for each period (date = year/month) andn this would allow you to select the correct data for a period using a criteria in a query.
Avatar billede sjoran Nybegynder
09. februar 2007 - 14:22 #2
Jo det er helt sikkert mere korrekt. Men sagen er den at forecast tabellen er givet. Budgetansvarlige indtaster oplysninger i et excel ark som så samles og bliver til forecast tabellen. Jeg kan selvfølgelig selv hver måned gå ind i forespørgslen og vælge kolonnen med den pågældende måned ud og så køre forespørgslen.

Men jeg ville gerne lave det lidt mere smart og dynamisk, så man f.eks. fra en formular udvælger en måned fra en liste, klikker på en knap og forespørgslen bliver kørt med den måned man har valgt.

Jeg kunne løse problemet med en union forespørsel på forecast tabellen først

select forecast.konto, forecast.afdeling, forecast.januar, "januar" as moned
from forecast
union
select forecast.konto, forecast.afdeling, forecast.februar, "februar" as moned
from forecast
osv...

Og derefter lave en forespørgsel med et kriterie der udvælger den rigtige måned, men jeg synes bare denne metode virker besværlig, og derfor leder jeg efter en smartere måde.

Så hvis der er en løsning på problemet og man ser bort fra de gense database regler så bare skyd løs.
Avatar billede terry Ekspert
09. februar 2007 - 16:56 #3
I am sure that there are a number of ways to do this but one way is to build the SQL dynamically.

Lets say that in a form you have a combo with months in.

You choose a month from the combo and then when you press a button build the SQL

Example:

sSQL = "SELECT " & Me.cboMonth & " FROM  forecast"

then update the queries SQL

currentdb.QueryDefs("qryforecast").SQL = "SELECT * from t1"
docmd.openquery "qryforecast"
Avatar billede sjoran Nybegynder
12. februar 2007 - 13:44 #4
takker. Jeg prøver at rode lidt med det.
Avatar billede terry Ekspert
12. februar 2007 - 13:52 #5
selv tak
drop a comment if you need more help with this
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