DoCmd.OpenQuery geeft runtime error 3009

Status
Niet open voor verdere reacties.

bveyndhoven

Gebruiker
Lid geworden
3 jan 2012
Berichten
21
Hey mensen,

Ik ben niet zo bedreven in MS Access VBA maar deze wil ik toch even opgelost zien... Even opmerken: ik heb een Engelstalige MS Office Business 2007.

Het zit zo: ik heb een rapport gemaakt op basis van een query. Deze query neemt een drietal parameters aan. Ik heb een formulier dat deze parameters aanlevert. Dit kan ik dus al doen met [Forms]![Formulier]![Element].

Nu komt de grote hamvraag dus: Ik heb een formulier waarop ik de parameterwaarden aanlever. De bedoeling is dat ik op een knop klik, en dat de query wordt uitgevoerd en op basis van die query een rapport wordt weergegeven.

Ik had dus deze code:

Code:
Me.Visible = False 
DoCmd.OpenQuery "qryOverzicht", , acReadOnly
DoCmd.OpenReport "rptOverzichtKeuringen", acViewReport
DoCmd.Close acForm, "qryOverzicht"
DoCmd.Close acForm, "frmSchakelbord"

Op de tweede lijn (DoCmd.OpenQuery "qryOverzicht", , acReadOnly) krijg ik dus een runtime error:

Runtime error 3009

You tried to lock table 'qryOverzicht' wile opening it, but the table cannot be locked because it is curently in use. Wait a moment, an then try the operation again.

De vraag is dus eenvoudig: wat doe ik fout en hoe moet ik het wél doen? :)

Alvast bedankt!
 
Zo te zien is je formulier op de query gebaseerd.
En is de query dus in gebruik, vandaar de melding.

Oplossing: verwijder deze coderegel want nergens voor nodig

DoCmd.OpenQuery "qryOverzicht", , acReadOnly

Tardis
 
Of, en dat lijkt logischer, je rapport is op de query gebaseerd. Met overigens dezelfde oplossing, want je hoeft geen extra query te openen voordat je een rapport of een query opent.
 
ik zie dat je goede voornemen om geen overbodige, niet ter zake doende opmerkingen al weer is gesneuveld.... Of ga je nog uitleggen wat deze discussie met de topic te maken heeft?
 
Tardis zei:
Zo te zien is je formulier op de query gebaseerd.
En is de query dus in gebruik, vandaar de melding.

Oplossing: verwijder deze coderegel want nergens voor nodig

DoCmd.OpenQuery "qryOverzicht", , acReadOnly

Probleem is dat de query dan gewoon niet lijkt te worden uitgevoerd...

Ik heb dus een query qryOverzicht die de data verzamelt. Dan heb ik een rapport met qryOverzicht als Data Source. In qryOverzicht wordt dus voor een aantal criteria verwezen naar [Forms]![frmSchakelbord]![...] (dus bv. dtsDatumVan voor de begindatum). Misschien moet ik de SQL van de query meteen instellen als data source voor het rapport of zo?

Achja, louter ter info: de SQL-code voor de query is deze:
Code:
SELECT
  Trim([tblKlanten]![Naam] & " " & [tblKlanten]![Voornaam]) AS Klantnaam,
  [tblKlanten]![Straat] & " " & [tblKlanten]![Huisnr] AS StraatNr,
  [tblKlanten]![Postcode] & " " & [tblKlanten]![Gemeente] AS PostcodeGemeente,
  [tblKlanten]![Tel] AS Telefoonnummer,
  [tblKlanten]![Email] AS Email,
  [tblTypes]![Omschrijving] AS Keuringstype,
  [tblKeuringsfirmas]![Naam] AS Keuringsfirma,
  [tblKlantKeuringen]![InstDatum] AS Installatiedatum,
  [tblKlantKeuringen]![Opmerkingen] AS Opmerkingen
FROM
  tblKlanten,
  tblKlantKeuringen,
  tblKeuringsfirmas,
  tblTypes
WHERE
  (([tblKlantKeuringen]![InstDatum])>=[Forms]![frmSchakelbord]![dtsDatumVan]) AND
  ([tblKlantKeuringen]![InstDatum])<=[Forms]![frmSchakelbord]![dtsDatumTot])) AND
  (([tblKlantKeuringen]![Klant])=[tblKlanten]![ID]) AND
  ([tblKlantKeuringen]![Keuringsfirma])=[tblKeuringsfirmas]![ID]) AND
  ([tblKlantKeuringen]![Keuringsfirma])=[Forms]![frmSchakelbord]![cboFirma]) AND
  ([tblKlantKeuringen]![Type])=[tblTypes]![ID]))
ORDER BY
  [tblKlantKeuringen]![InstDatum],
  [tblKlanten]![Postcode],
  [tblKlanten]![Gemeente],
  [tblKlanten]![Straat],
  [tblKlanten]![Naam],
  [tblKlanten]![Voornaam];

Bestand uploaden lukte blijkbaar niet, extentie niet aanvaard...
 
Laatst bewerkt:
UPDATE:

Ik heb zelf nog wat verder geëxperimenteerd. Mijn ingeving van daarnet (SQL-code als syntax in plaats van afzonderlijke oplossing en dan enkel het rapport aanroepen) heeft de zaak opgelost. Het enige wat me te doen staat is het rapport verder opmaken...

Hiermee denk ik dat het probleem simpelweg het volgende was: query wordt geopend, rapport wordt geopend en probeert meteen query (opnieuw) te openen, omdat query al geopend is, zit die gelocked...

Waarom het rapport volgens mij niet werkte zonder de query eerst te openen? Volgens mij omdat het formulier te snel wordt gesloten...

Toch bedankt voor de reacties!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan