Avatar billede longgaard Novice
09. maj 2004 - 22:32 Der er 10 kommentarer og
1 løsning

En forespørgsel, flere dynamiske resultater

Jeg prøver at få lidt dynamik ind en forespørgsel, som skal summe minutter i et tidsregistreringssystem efter forskellige kriterier.

I min forespørgsel har jeg skrevet:
Felt:  Udtryk1: GetGrupperEfter()
Tabel:
Total:  Grupper efter
Vis:    "flueben"

Funktionen GetGrupperEfter()
består af en række if-sætninger som afgør hvilken værdi GetGrupperEfter skal have. En af disse værditildelinger ser  således ud:
GetGrupperEfter = "[Aktivitet]![AktivitetsNavn]"

Resultatet skulle være at jeg fik summet antal minutter for hver Aktivitet, men jeg får kun een række med een samlet sum.

Hvis jeg laver flere forespørgsler hvor jeg indsatte værdierne, som f.eks.:

Felt:  Udtryk1: [Aktivitet]![AktivitetsNavn]

får jeg alle aktiviteter på hver sin række, så jeg gætter på at fejlen ligger i specialtegnsætningen i værditildelingen, men talrige forsøg har ikke givet resultat. Hjælp.

SQL som bliver genereret af designviewet er således ud:

SELECT GetGrupperEfter() AS Udtryk1, Sum(TidsObservation.Minutter) AS SumOfMinutter
FROM Projekt RIGHT JOIN (Opgave INNER JOIN (Aktivitet INNER JOIN (Afdeling INNER JOIN TidsObservation ON Afdeling.AfdelingID = TidsObservation.AfdelingId) ON Aktivitet.AktivitetsId = TidsObservation.AktivitetId) ON Opgave.OpgaveId = TidsObservation.OpgaveId) ON Projekt.ProjektId = TidsObservation.ProjektId
WHERE (((TidsObservation.Dato) Between [Forms]![FAdministratorForm]![AdmStartDato] And [Forms]![FAdministratorForm]![AdmSlutDato]))
GROUP BY GetGrupperEfter();
Avatar billede overchord Nybegynder
10. maj 2004 - 10:38 #1
OK Hvad sker der hvis du laver en blank Query og laegger din Getgrupperefter() funktion ind som eneste felt?
Hvis den kun viser en enkelt linje ligger fejlen for din nuvaerende query i funktionen og hvis den viser alle Aktivitetsnavne ligger fejlen i din query.
Avatar billede longgaard Novice
10. maj 2004 - 10:44 #2
Hmmm, den gør hverken eller, den viser
Udtryk1
[Aktivitet]![AktivitetsNavn]
[Aktivitet]![AktivitetsNavn]
[Aktivitet]![AktivitetsNavn]
.
.
.
[Aktivitet]![AktivitetsNavn]
Avatar billede longgaard Novice
10. maj 2004 - 10:49 #3
Måske var den query lidt for blank, hvis jeg sletter de øvrige felter i org. qurey får jeg een linie
Avatar billede longgaard Novice
10. maj 2004 - 10:52 #4
Er vi så ikke der hvor jeg trode vi var?
Problemer med tegnsætning i VBA'en:
GetGrupperEfter = "[Aktivitet]![AktivitetsNavn]"
Avatar billede overchord Nybegynder
10. maj 2004 - 12:22 #5
Jo SQL-saetningen opfatter ikke dit udtryk fra funktionen som en felt-reference.

Proev evt at auto-generere hele queryen og byg en streng som henter GetGrupperefter() udtrykket og smisder det direkte i en SQL saetning.

Proev evt foerst med flg for at se om det fungerer bedre:

Sub TestFunktion()

dim strSQL as string

strSQL = "SELECT " & Getgrupperefter() & " FROM Aktvittet"

docmd.RunSQL(strSQL)

end sub
Avatar billede longgaard Novice
10. maj 2004 - 12:33 #6
Prøvede det lige, men
DoCmd.RunSQL vil ikke afvikle SELECT sætninger :(
Avatar billede overchord Nybegynder
10. maj 2004 - 12:40 #7
hmmm ok - afhaengigt af din version af access virker dette saa maaske istedet

Dim dbs as Database
Dim QDF as querydef

set dbs = currentdb
set QDF = dbs.CreateQueryDef("temp",strSQL)


Derefter kan du chekke query'en temp for at set om det virker paa den maade

Du skal muligvis ind og slaa ADO til i dine reference for at koden vil virke
Avatar billede longgaard Novice
10. maj 2004 - 13:13 #8
Ser ud til at virke, på min Access 2000. Prøver det lige af i den fulde sammenhæng.
Hvis andre skulle kunne bruge dette så er det DAO referencen der skal slås til ikke ADO :)
Avatar billede longgaard Novice
10. maj 2004 - 13:50 #9
Der er en detalje som ikke var helt god:
  dbs.CreateQueryDef("temp",strSQL)
overskriver ikke en eksisterende query. Giver problem anden gang funktionen køres.

Problemet blev løst ved at tilføje:
  DoCmd.DeleteObject acQuery, "temp"
efter visning af query'en.

-> overchord.
Hvis du vil have de point som du har fortjent, må du lave et svar :)
Avatar billede overchord Nybegynder
10. maj 2004 - 14:46 #10
ok - hvis det loeste problemet vil jeg da gerne have point - men fik du loesning paa dit originale problem paa denne maade?
Avatar billede longgaard Novice
10. maj 2004 - 15:40 #11
Både ja og nej, jeg fik mit problem løst,
  "Resultatet skulle være at jeg fik summet antal minutter for hver Aktivitet"
dog på en anden måde end jeg havde regnet med.
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