Jag jobbar med en databasapplikation som ska hantera inträdesprov till en skola. Kan inte testa själv, men prova med att använda alias för tabellerna. Borde inte spela någon roll, men jag tycker access kan bete sig lite konstigt ibland så varför inte här?! Tack för visat intresse, men jag tror att problemet uppstår p.g.a att Access sorterar den snapshot som den skapar av recordsetet på ett annat sätt än vad db-hanteraren gör. Så fick mysteriet en lösning. Får inte sortera
MSDE2000 är db-hanterare och Access2003 är skalet.
Proven pågår i flera omgångar och jag har ett formulär där varje provomgång visas i huvudformuläret
och där underformuläret visar de sökandes namn, personnummer och provdag (och lite till).
Uppgifterna hämtas från fyra tabeller, en för sökande (tblSokande), en för provomgångar (tblProvomgång), en för provdag (tblProvtillfallen) och en kopplingstabell för sökanden och provdagar (tblProv).
SQL-satsen för underfrågan är så här:
SELECT tblSokande.Förnamn + N' ' + tblSokande.Efternamn AS SökNamn, tblProvomgång.ProvOmgangID, tblProv.Godkänd, tblProv.Återbud, tblProv.Uteblivit,
tblSokande.Personnummer, tblSokande.Provnummer, tblSokande.SokandeID, tblProvtillfallen.ProvdagID, tblProvtillfallen.Provdag,
tblProvomgång.Provomgång
FROM tblProv INNER JOIN
tblSokande ON tblProv.Sökande = tblSokande.SokandeID INNER JOIN
tblProvtillfallen ON tblProv.Provdag = tblProvtillfallen.ProvdagID INNER JOIN
tblProvomgång ON tblProvtillfallen.Provomgång = tblProvomgång.ProvOmgangID
Huvud- och underformuläret länkas med ProvomgangID.
Allt fungerar utmärkt tills jag vill sortera underformuläret.
Om jag exempelvis lägger till ORDER BY tblSokande.Provnummer får jag jag följande felmeddelande näre jag öppnar huvudformuläret:
The column prefix tblSokande does not match a table name or a alias name used in the query.
Som ni ser så finns visst tblSokande med i Sql-satsen! Så vad händer?
Öppnar jag underformuläret separat funkar det som det ska med sortering och allt. Men när underformuläret öppnas tillsammans med huvudformuläret blir det fel.
Jag har testat med lite olika varianter på SQL-satsen, men det kritiska ligger i ORDER BY
Alla ni db-snillen - led mig i rätt riktning och ge mig ett tips! Var ska söka?
hälsningar / BengtSv: Får inte sortera
SELECT s.Förnamn + N' ' + s.Efternamn AS SökNamn,
po.ProvOmgangID, p.Godkänd, p.Återbud, p.Uteblivit,
s.Personnummer, s.Provnummer, s.SokandeID, ptf.ProvdagID,
ptf.Provdag, po.Provomgång
FROM tblProv p
INNER JOIN tblSokande s ON (p.Sökande = s.SokandeID)
INNER JOIN tblProvtillfallen ptf ON (p.Provdag = ptf.ProvdagID)
INNER JOIN tblProvomgång po ON (ptf.Provomgång = po.ProvOmgangID)
ORDER BY s.Provnummer
Paranteser kring villkoren är oxå bra att använda vid joins. Det kanske bara är ett test i access som inte godkänner frågan även om den egentligen är rätt.Sv:Får inte sortera
Om jag t.ex. sorterar underformuläret med hjälp av knapparna Stigande och Fallande funkar det så länge jag stannar i samma post.
När jag byter post får jag felmeddelandet: The column prefix 'frmSubProvomgångSökande' is not a table name...
Det tyder ju på att Access letar i tabellen efter ett formulärnamn från snapshoten - om då hittar den den inte förstås.
Problemet blir ju då att ta bort ev sortering i snapshoten innan man byter post eller stänger formuläret.
Men hur gör man det?
Mera tips!
/BengtSv: Får inte sortera
Jag hade tidigare Select-satsen i underformulärets kontrollkälla. Nu testade att göra den till en funktion och då kunde jag lägga till ORDER BY utan problem.
/Bengt