[Access] CurrentDb.Execute select query

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Ik probeer de volgende code uit te voeren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   CurrentDb.Execute _
    " SELECT " & _
    "   k.[repa naam]" & _
    "  ,k.opdrachtnummer" & _
    "  ,k.woonplaats" & _
    "  ,k.[soort onderzoek]" & _
    "  ,k.[datum controle]" & _
    "  ,k.[datum retour]" & _
    "  ,k.[naam expert]" & _
    "  ,k.[resultaat akkoord]" & _
    " FROM [kwaliteit gese] k" & _
    " WHERE"
    "   k.[datum retour] >= #1/1/2001#" & _
    "  AND k.[datum retour] <= #1/1/2002#" & _
    " ORDER BY k.[repa naam]"

Maar dan krijg ik de melding "Can't execute a select query." :?

Waarom niet? Hoe wel? :?

Verwijderd

welke access versie? en ehh lijkt het je niet handig iets te doen met het result van je select?

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Access 97 ... in mijn code zijn een aantal dingen variabel (datum, sorteerstukje), maar dat heb ik er niet bij gezet om verwarring te voorkomen...

Het resultaat moet Read-Only zijn...

Eigenlijk moet het dus gewoon een simpele select-query zijn... waarvan je de output op je scherm krijgt... net als bij zo'n opgeslagen query...

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 06-09 22:39
Recordset returning queries kun je niet op deze manier uitvoeren. Je moet daarvoor een recordsetobject aanmaken en die Executen met een referentie naar je currentdb.

Alleen non recordset returning queries (DELETE, DROP etc) kun je op deze manier uitvoeren.

Overigens ... er zit een vb helpbestand bij access ...

[Hum]
Access 97 is nog DAO he....
code:
1
2
3
Set rst=CurrentDB.OpenRecordset("MIJN SELECT QUERY")
...
Set rst=Nothing

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Mmmkay... de selectie in recordset zetten lukt me ook nog wel... tis idd net ff anders als bij ADO... maargoed...

Vraag 1:
-> Hoe toon je een recordset (eenvoudig) op het beeld?

Ik kan nl. ook geen QueryDef object maken wat alleen in geheugen is en die dan uitvoeren... |:(

Wat ook een oplossing zou bieden is een tijdelijke query maken... net als een tijdelijk tabel in SQL Server... maar als ik een query in Access maak met "#..." dan slaat hij die gewoon op en bovendien is deze ook niet session afhankelijk, waardoor ik er weer een ID voor moet gaan verzinnen zodat ik geen conflicten krijg als 2 of meer mensen de procedure starten...

Vraag 2:
-> Kun in Access ook tijdelijke query's aanmaken gelijk als tijdelijke tabellen in SQL Server?

Verwijderd

Op woensdag 24 april 2002 15:54 schreef TeknoGecko het volgende:
Mmmkay... de selectie in recordset zetten lukt me ook nog wel... tis idd net ff anders als bij ADO... maargoed...

Vraag 1:
-> Hoe toon je een recordset (eenvoudig) op het beeld?
Je kan bijvoorbeeld een query aanmaken (Dus niet via code, maar via het scherm waarmee je ook tabellen, formulieren, rapporten, e.d. kan aanmaken). Deze query kan je via code uitvoeren, zodat de resultaten daarvan op je scherm worden getoond:
DoCmd.OpenQuery [querynaam], acNormal, acEdit

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 06-09 22:39
Hoe toon je een recordset (eenvoudig) op het beeld?
In een formulier, via een datagrid whatever, met een DoCmd.OpenQuery etc. etc. Daar zijn vele mogelijkheden voor en wie zoekt zal ongetwijfeld hier ook weer vinden ...
Kun in Access ook tijdelijke query's aanmaken gelijk als tijdelijke tabellen in SQL Server?
Ja. Volgens mij kun je een querydef maken zonder naam, en deze executen met Querydef.OpenRecordset. Deze is dan geldig totdat je de reference naar je DAO object weghaalt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Op woensdag 24 april 2002 16:50 schreef IntroV het volgende:

[..]

Je kan bijvoorbeeld een query aanmaken (Dus niet via code, maar via het scherm waarmee je ook tabellen, formulieren, rapporten, e.d. kan aanmaken). Deze query kan je via code uitvoeren, zodat de resultaten daarvan op je scherm worden getoond:
DoCmd.OpenQuery [querynaam], acNormal, acEdit
Nope... want dan heb ik dus een probleem bij meerdere gebruikers.
Op woensdag 24 april 2002 20:53 schreef farlane het volgende:
[..]

Ja. Volgens mij kun je een querydef maken zonder naam, en deze executen met Querydef.OpenRecordset. Deze is dan geldig totdat je de reference naar je DAO object weghaalt.
Nope... als ik een QueryDef zonder naam maak krijg een foutmelding: "Item not found in the Collection" ;(

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 06-09 22:39
Op donderdag 25 april 2002 11:08 schreef TeknoGecko het volgende:
Nope... als ik een QueryDef zonder naam maak krijg een foutmelding: "Item not found in the Collection" ;(
If the object specified by name is already a member of the QueryDefs collection, a run-time error occurs.
You can create a temporary QueryDef by using a zero-length string for the name argument when you execute the CreateQueryDef method. You can also accomplish this by setting the Name property of a newly created QueryDef to a zero-length string ("").

Temporary QueryDef objects are useful if you want to repeatedly use dynamic SQL statements without having to create any new permanent objects in the QueryDefs collection. You can't append a temporary QueryDef to any collection because a zero-length string isn't a valid name for a permanent QueryDef object. You can always set the Name and SQL properties of the newly created QueryDef object and subsequently append the QueryDef to the QueryDefs collection.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Op donderdag 25 april 2002 16:05 schreef farlane het volgende:

[..]
Wacht ff |:( |:( ik had niet de CreateQueryDef gebruikt :o

Maareh... hoe open ik hem nu op mijn scherm?
code:
1
DoCmd.OpenQuery "", acViewNormal, acReadOnly

Dit geeft een foutmelding: (logisch eigelijk...)
->> U moet een querynaam opgeven als argument bij de actie of methode.

Edit: (dit heb ik net geprobeerd... de variabelen moet je maar even negeren...)
code:
1
2
3
4
5
6
7
8
9
    Dim varQuery As Variant

    Set varQuery = _
    CurrentDb.CreateQueryDef("", strSQLDef & _
      " k.[datum retour] >= " & s1 & _
      "  AND k.[datum retour] <= " & s2 & _
      " ORDER BY k." & strSortField)
      
    DoCmd.OpenQuery varQuery.Name, acViewNormal, acReadOnly

Foutmelding: Kan het object '#Temporary Querydef#' niet vinden.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 06-09 22:39
- Maak een temp querydef
- Roep CreateRecordset/Execute van die querydef aan
- Zet datasource van een form whatever naar die recordset
- Done

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1