Avatar billede nhoff Nybegynder
05. september 2004 - 01:54 Der er 10 kommentarer og
1 løsning

Datoformat v. oprettelse af forespørgsel i VBA

Hej alle

Jeg prøver at oprette en forespørgsel i VBA, men får fejlen:
"Der er en syntaksfejl fordi der mangler en operator.i forespørgselsudtrykket "Format([tblArrangement].[fldTidDato],'yyyy') as ArrYear"."

Hele koden ser således ud:

Set qdf = CurrentDb.CreateQueryDef("qryInstSearch_temp")

strQrySQL = "SELECT tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Count(tblInstArr.fldInstArrID) as  AntalArr, Format([tblArrangement].[fldTidDato], 'yyyy') as ArrYear, tblInstitution.fldType " & _
"FROM ((tblInstitution LEFT JOIN (tblArrangement RIGHT JOIN tblInstArr ON " & _
"tblArrangement.fldArrangementID = tblInstArr.fldArrid) ON tblInstitution.fldInstitutionID = " & _
"tblInstArr.fldInstid) LEFT JOIN tblNiveauer ON tblInstitution.fldInstitutionID = " & _
"tblNiveauer.fldInstitutionid) LEFT JOIN tblOpdateret ON tblInstitution.fldInstitutionID = " & _
"tblOpdateret.fldInstID " & _
"GROUP BY tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Format([tblArrangement].[fldTidDato], 'yyyy') as ArrYear, tblInstitution.fldType"

qdf.SQL = strQuery

- Any clues?
På forhånd tak!

Hilsen
Nikolaj
05. september 2004 - 07:02 #1
Hej Nikolaj,

Længe siden....du skal huske at passe din sengetider ;o)

prøv denne:

Set qdf = CurrentDb.CreateQueryDef("qryInstSearch_temp")

Jeg går ud fra at sidste sætning er en fejl, da det er strQrySQL i stedet for strQuery.
Derud over skal du ikke have "as ArrYear" med i Group By-delen.

Prøv denne:

strQrySQL = "SELECT tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Count(tblInstArr.fldInstArrID) as  AntalArr, Format([tblArrangement].[fldTidDato], 'yyyy') as ArrYear, tblInstitution.fldType " & _
"FROM ((tblInstitution LEFT JOIN (tblArrangement RIGHT JOIN tblInstArr ON " & _
"tblArrangement.fldArrangementID = tblInstArr.fldArrid) ON tblInstitution.fldInstitutionID = " & _
"tblInstArr.fldInstid) LEFT JOIN tblNiveauer ON tblInstitution.fldInstitutionID = " & _
"tblNiveauer.fldInstitutionid) LEFT JOIN tblOpdateret ON tblInstitution.fldInstitutionID = " & _
"tblOpdateret.fldInstID " & _
"GROUP BY tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Format([tblArrangement].[fldTidDato], 'yyyy'), tblInstitution.fldType"

qdf.SQL = strQrySQL

/Thomas jepsen
05. september 2004 - 07:03 #2
hov, der sneg sig lige et par linier ind foroven. Sådan skulle indlægget have set ud:
05. september 2004 - 07:03 #3
Hej Nikolaj,

Længe siden....du skal huske at passe din sengetider ;o)

Jeg går ud fra at sidste sætning er en fejl, da det er strQrySQL i stedet for strQuery.
Derud over skal du ikke have "as ArrYear" med i Group By-delen.

Prøv denne:

strQrySQL = "SELECT tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Count(tblInstArr.fldInstArrID) as  AntalArr, Format([tblArrangement].[fldTidDato], 'yyyy') as ArrYear, tblInstitution.fldType " & _
"FROM ((tblInstitution LEFT JOIN (tblArrangement RIGHT JOIN tblInstArr ON " & _
"tblArrangement.fldArrangementID = tblInstArr.fldArrid) ON tblInstitution.fldInstitutionID = " & _
"tblInstArr.fldInstid) LEFT JOIN tblNiveauer ON tblInstitution.fldInstitutionID = " & _
"tblNiveauer.fldInstitutionid) LEFT JOIN tblOpdateret ON tblInstitution.fldInstitutionID = " & _
"tblOpdateret.fldInstID " & _
"GROUP BY tblInstitution.fldInstitutionID, tblNiveauer.fldKlassetype, tblOpdateret.fldOpdateret, " & _
"Format([tblArrangement].[fldTidDato], 'yyyy'), tblInstitution.fldType"

qdf.SQL = strQrySQL

/Thomas jepsen
Avatar billede nhoff Nybegynder
05. september 2004 - 13:52 #4
Du skulle snakke! Søndag morgen kl. 7.02 ;o)

- Hvad du end gjorde så virkede det. Jeg kan dog ikke se forskellen på det jeg skrev og det du skrev (?)

Et lille afledt spørgsmål:
Hvorfor brokker den sig når jeg i HAVING-klausulen skriver:

strWhere = strWhere & "Format(tblArrangement.fldTidDato, 'yyyy') = #" & Me.txtYear & "#"

Jeg får samme fejlmelding
Avatar billede nhoff Nybegynder
05. september 2004 - 13:53 #5
Og ja, qdf.SQL = strQrySQL :-)
05. september 2004 - 18:03 #6
Når man har børn under 1 år, så bestemmer man ikke altid selv hvornår man skal op om morgenen...suk :o(

mht din HAVING; Har du prøvet bare at lave den til en WHERE?
Avatar billede nhoff Nybegynder
05. september 2004 - 19:21 #7
Ja, har prøvet WHERE, men det gav fejl. Når der bruges Group By skal klausulteksten (tilsyneladende) være HAVING.
Jeg lavede strengen ved at sætte qry'en op i Access' egen qry-designer og kopierede den derefter over i VBA. Hér angav Access HAVING og ikke WHERE.
05. september 2004 - 20:15 #8
ja, med mindre, at du rent faktisk definere et nyt kriterie. Der er flere måder...

Men jeg tror nu også, at fejlen ligger i, at du bruger # omrking årstallet som om årstallat var en dato (det er jo bare et tal).

Prøv derfor denne:

strWhere = strWhere & "Format(tblArrangement.fldTidDato, 'yyyy') = " & Me.txtYear
Avatar billede nhoff Nybegynder
05. september 2004 - 22:40 #9
Ja, det kan du have ret i. Problemet er blot, at feltet i qry'en er defineret som dato. Hvis jeg derfor blot skriver Me.txtYear kan den ikke evaluere qry'en fordi den opfatter inputtet som et tal. Løsningen burde følgelig være at formatere en dato.

Jeg prøvede derfor med:
strYear = "01-01-" & Me.txtYear
strWhere = strWhere & "Format(tblArrangement.fldTidDato, 'yyyy') = Format(#" & strYear & "#;" & Chr(34) & "yyyy" & Chr(34) & ")"

Men ak... Det kunne ikke accepteres og der opstår syntaksfejl ved qdf.SQL = strQrySQL.
Har du nogen gode alternative fremgangsmåder?

- Dette er ved at udvikle sig til et helt nyt spørgsmål. Jeg håber ikke at jeg trækker for mange veksler på din tid :-)
05. september 2004 - 23:05 #10
Prøv med:
strWhere = strWhere & "year(tblArrangement.fldTidDato) = " & Me!txtYear

?
Avatar billede nhoff Nybegynder
05. september 2004 - 23:12 #11
Right on the money!!
Tusind, tusind tak for hjælpen!
- Jeg skulle blot også inkludere udtrykket i Group By så var den der!
Jeg oprettet et nyt spørgsmål så der også er point for denne temmelig lange udredning.

Hilsen
Nikolaj
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