[Access 97]Hoe kan ik mijn query uitvoer updaten?

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

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Mijn Access database schiet, met jullie hulp (;)), al aardig op en begint zeker ergens op te lijken. Sterker nog: een gedeelte is eigenlijk al klaar! Er is echter nog een probleem en ik heb nu al van alles geprobeerd, maar niets mocht baten. De situatieschets is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----------------------------------|   1    |    2     |  3  |    4  |-------
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
|                                                                           |
-----------------------------------------------------------------------------


Waarbij de genummerde gedeelten tabbladen voorstellen, waar weer tabellen achter zitten die gevuld worden door subformulieren.

Namen:
Tabblad 1: Occasion
Tabblad 2: Extra’s
Tabblad 3: Invoer
Tabblad 4: Uitvoer

In tabblad 1 worden technische gegevens van een occasion ingevoerd, deze worden opgeslagen in een tabel waarbij KENTEKEN de primary key is.

Tabblad 2 laat ik onbesproken, deze is niet interessant en valt geheel buiten het probleemgebied.

Tabblad 3 is mijn toevoeging, hier worden financiële gegevens ingevoerd. In de tabel achter dit formulier zit ook een KENTEKEN veld dat gelinkt is aan het veld KENTEKEN in de tabel waarover ik sprak in tabblad 1. Zodoende krijg je hier de gegevens die horen bij de occasion van het eerste tabblad, wat uiteraard de bedoeling is.

Tabblad 4: Dit is het probleem geval. Dit is geen tabel maar een query uitvoer in een formulier. Ook hier wordt het veld KENTEKEN weer meegenomen, dit KENTEKEN haal ik uit de eerste tabel –waar- in geval van een nieuw record, het KENTEKEN ook wordt opgeslagen.

Dat nieuwe record is het probleem. Zodra ik een nieuw record aanmaak bij tabblad 1 en vervolgens de benodigde (financiële) gegevens invoer bij tabblad 3, krijg ik bij tabblad 4 (Uitvoer) géén uitvoer te zien. Als ik de database herstart werd hetzelfde record wél.

Wat moet er gebeuren om meteen als ik de invoer ingegeven heb ook uitvoer te zien?

Dividend for Starters


  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 15:35

Peetman

Tjah....

Het lijkt mij dat je de gegevens op tabblad 4 moet refreshen als er een update is gedaan. Dit kan je op 2 momenten doen.

1. Zodra er in tabblad 3 iets is veranderd refresh je de data in tabblad 4 (query opnieuw uitvoeren)

2. Zodra tabblad 4 geopend wordt, de query opnieuw uitvoeren. Dit heeft mij voorkeur omdat dit ervoor zorgt dat je data alleen gerefreshed wordt als het echt nodig is. Je zal waarschijnlijk geen belastingsproblemen hebben, maar je weet maar nooit.

Gebruik je al vba in deze database, wat het lijkt mij dat je dit zal moeten gebruiken om dit op te lossen.

Verwijderd

Hmmm, volgens mij moet je hier een .requery uitvoeren. Om ervoor te zorgen dat dit meteen gebeurt als je de invoer gegeven hebt moet je die .requery als gebeurtenisprocedure ingeven, bijvoorbeeld na bijwerken.

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Private Sub Pagina643_Click()
Uitvoer.Requery
End Sub
Dit heb ik staan bij het aanklikken van het tabblad (genaamd Pagina643). Uitvoer is de query naam.

Dit werkt echter niet. Ook heb ik al geprobeerd om een refresh te geven, van het formulier dacht ik, maar dit werkte ook niet. Je krijgt een groot grijs veld te zien, zonder formulierobjecten, ook geen lege velden, gewoon een grijs veld.

Dit komt waarschijnlijk omdat het een ingevoegd subformulier betreft.

Dit grijze veld krijg je overigens ook te zien als je het tabblad 3 nog niet hebt ingevuld, hij 'ziet' die gegevens misschien niet, hrm, zijn ze wel opgeslagen? :o
Ik edit zo.

Dividend for Starters


Verwijderd

PromWarMachine schreef op 02 oktober 2002 @ 11:43:
[...]


Dit heb ik staan bij het aanklikken van het tabblad (genaamd Pagina643). Uitvoer is de query naam.

Dit werkt echter niet. Ook heb ik al geprobeerd om een refresh te geven, van het formulier dacht ik, maar dit werkte ook niet. Je krijgt een groot grijs veld te zien, zonder formulierobjecten, ook geen lege velden, gewoon een grijs veld.

Dit komt waarschijnlijk omdat het een ingevoegd subformulier betreft.
In dat geval moet je het Subformulier requery-en.

[Subform].Requery

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 02 oktober 2002 @ 11:45:
[...]


In dat geval moet je het Subformulier requery-en.

[Subform].Requery
Dat mag helaas niet baten.

'k Heb eens gekeken of de gegevens wel worden opgeslagen, dit is helaas niet het geval. Als ik bij tabblad 1 gegevens invul en naar het volgende veld ga, wordt dat meteen opgeslagen in de bijbehorende tabel.

Bij tabblad 3 is dit echter niet het geval. Het kenteken (de gelinkte primary key) is dus (nog) niet bekend. Zou ik de hele tabel _per se_ moeten koppelen i.p.v. een relatie aan te leggen tussen die 2?

Dividend for Starters


Verwijderd

Op tabblad vier heb je een subformulier object. In de properties zal hier bij source object de naam van de betreffende query staan. Volgens mij moet je juist dit subformulier object refresh-en.

dus iets als

Private Sub Command5_Click()
Child3.Requery
End Sub

Cheers
Underscore

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 02 oktober 2002 @ 13:16:
Op tabblad vier heb je een subformulier object.
Klopt. Dit subformulier draagt de naam Uitvoer2, omdat eerst de naam van dit formulier gelijk was aan de naam van de query, namelijk Uitvoer.
In de properties zal hier bij source object de naam van de betreffende query staan.
Klopt ook, hier staat de 'Uitvoer' query ('Recordbron', in het Nederlands, right?)
Volgens mij moet je juist dit subformulier object refresh-en.

dus iets als

Private Sub Command5_Click()
Child3.Requery
End Sub
Als ik normaliter bij VBA een querynaam met een . ingeef, krijg ik die lijst met alle opdrachten mogelijk voor dat object. Geef ik echter een formuliernaam op, krijg ik die lijst niet, waaruik ik concludeer dat je een formulier niet kan requery-en :?

Dividend for Starters


Verwijderd

Dan klopt de formuliernaam niet. Je moet de naam van het subformulier zoals die op het formulier genoemd wordt, en niet hoe het subformulier heet als db-object.

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 02 oktober 2002 @ 14:11:
Dan klopt de formuliernaam niet. Je moet de naam van het subformulier zoals die op het formulier genoemd wordt, en niet hoe het subformulier heet als db-object.
Die twee lijken hetzelfde te zijn? Heb nu de hele database afgesloten en opnieuw opgestart. Nu herkent hij het subformulier wel, maar werken doet het nog niet...

De naam die ik gekozen heb is wederom Uitvoer2, de redenatie is alsvolgt:
Als ik op m'n tabblad klik in ontwerpweergave krijg ik het subformulier als een wit vlak te zien met linksbovenin de naam, nietwaar? Deze naam heb ik gekozen, in dit geval Uitvoer2.

offtopic:
Irritant dat ik hier geen screenshots kan uppen zeg, alle poorten staan dicht en ik mag ook geen webspace gebruiken :(

Dividend for Starters


Verwijderd

PromWarMachine schreef op 02 oktober 2002 @ 14:44:
[...]


Die twee lijken hetzelfde te zijn? Heb nu de hele database afgesloten en opnieuw opgestart. Nu herkent hij het subformulier wel, maar werken doet het nog niet...

De naam die ik gekozen heb is wederom Uitvoer2, de redenatie is alsvolgt:
Als ik op m'n tabblad klik in ontwerpweergave krijg ik het subformulier als een wit vlak te zien met linksbovenin de naam, nietwaar? Deze naam heb ik gekozen, in dit geval Uitvoer2.

offtopic:
Irritant dat ik hier geen screenshots kan uppen zeg, alle poorten staan dicht en ik mag ook geen webspace gebruiken :(
Ja, en als je bij de eigenschappen van dat subformulier kijkt. Wat staat er bij het tabblad Overige en dan Naam? Die naam moet je gebruiken...

Verwijderd

eerst nieuwe record opslaan dan geheel het form opnieuw refreshen

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 02 oktober 2002 @ 14:47:
[...]


Ja, en als je bij de eigenschappen van dat subformulier kijkt. Wat staat er bij het tabblad Overige en dan Naam? Die naam moet je gebruiken...
Het tabblad Overige kent bij mij geen veld Naam?
De velden zijn:
• Pop-up
• Modaal
• Werking tabtoets
• Menubalk
• Werkbalk
• Snelmenu
• Snelmenubalk
• Snel afdrukken laser
• Help bestand
• Help context-id
• Extra info
• Bevat module
Dit is een normaal formulier... het wordt alleen als subformulier in het hoofdformulier geplaatst! Het hoofdformulier bevat de tabbladen.

Dividend for Starters


Verwijderd

[Als ik normaliter bij VBA een querynaam met een . ingeef, krijg ik die lijst met alle opdrachten mogelijk voor dat object. Geef ik echter een formuliernaam op, krijg ik die lijst niet, waaruik ik concludeer dat je een formulier niet kan requeryen?]

Dit is onjuist, een refresh is een geldige methode op het object form. Zie help. Het lijkt erop dat er een referentie onjuist is. Kijk eens onder [Tools], [References] of hier een missing tussen staat. Een minimum van drie is handig: vba, dao 3.6 en access 8.0 (microsoft access 97). Je kunt dit omzeilen door onderstaande programmacode even te gebruiken. Nu kun je alle methoden en eigenschappen van een formulier zien als je myForm. typt.

dim myForm as Form
myForm.refresh

[Het tabblad Overige kent bij mij geen veld Naam?]

Je kijkt op het verkeerde tabblad. Niet tabblad overige op je formulier, maar tabblad overige van de eigenschappen van het subformulier!

Cheers,
Under

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Heej! 8)
Wist ik veel dat je ook de eigenschappen van een subformulier kon zien, ik dubbelklikte op het subformulier, waarna ik het ‘gewone’ formulier kreeg. Deze objectnamen werkte inderdaad wél. Alleen is het probleem nog niet opgelost …

Wel weet ik iets meer, zo worden de gegevens uit tabblad 3 tijdens het invoeren, netjes opgeslagen in de tabel. Als ik handmatig de query uitvoer – nog steeds tijdens het invoeren van de gegevens in tabblad 3– krijg ik gewoon de juiste uitvoer te zien.

Dit betekend dus dat het uitvoerformulier de gegevens niet kan weergeven, althans niet op het moment dat er nog geen invoer is. Vrij logisch. Volgens de help voert de opdracht requery alleen de query opnieuw uit. Dat is wel de bedoeling, maar daarna moet het subformulier gefreshed worden, of niet? :?
Dit is echter geen keuzemogelijkheid bij het subformulier object. ‘k Heb nog steeds hetzelfde grijze vlak …

Dividend for Starters


Verwijderd

Ik ben er achter gekomen dat onderstaande code niet wordt uitgevoerd bij het selecteren van tabblad (page1). Hierdoor wordt ook geen requery uitgevoerd. Zet je een actieknop (command5) op het tabblad en klik je die aan dan werkt het wel.

Als je onder tabblad 3 data invoert dan komt dit record in de tabel op edit mode. Het is dan nog niet zichtbaar. Pas na een requery op deze tabel is de toevoeging cq. wijziging definitief en beschikbaar. In de eigenschappen van het formulier (niet sub) dient bij control source wel de naam van de tabel te staan.

Private Sub Page1_Click()
Child3.Requery
End Sub

Private Sub Command5_Click()
Me.Requery 'slaat wijzigingen in tabel op
Child3.Requery 'refresh van query
End Sub

Probeer de actieknop eens, weet je in elk geval of de requery werkt.

Cheers,
Underscore

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 03 oktober 2002 @ 12:19:
Ik ben er achter gekomen dat onderstaande code niet wordt uitgevoerd bij het selecteren van tabblad (page1). Hierdoor wordt ook geen requery uitgevoerd. Zet je een actieknop (command5) op het tabblad en klik je die aan dan werkt het wel.
Dit klopt! _/-\o_
Als je onder tabblad 3 data invoert dan komt dit record in de tabel op edit mode. Het is dan nog niet zichtbaar. Pas na een requery op deze tabel is de toevoeging cq. wijziging definitief en beschikbaar. In de eigenschappen van het formulier (niet sub) dient bij control source wel de naam van de tabel te staan.
Dit klopt gedeeltelijk mijns inziens, want het wordt al opgeslagen als ik het laatste veld invoer, dit gebeurd denk ik automatisch. De source stond uiteraard goed, anders wordt er helemaal niets opgeslagen.
Private Sub Page1_Click()
Child3.Requery
End Sub
Deze werkt! :>
Alleen moet 't automatisch gebeuren ... desnoods via Macro als dat ook kan.
Private Sub Command5_Click()
Me.Requery 'slaat wijzigingen in tabel op
Child3.Requery 'refresh van query
End Sub

Probeer de actieknop eens, weet je in elk geval of de requery werkt.
Die bovenste heb ik niet geprobeerd, want die eerste deed al wat ik wilde ;)
Die actieknop werkte, dat tabblad dinges niet! De actieknop het ik in het tabblad formulier gezet zeg maar, in ieder geval niet in het formulier van de uitvoer, want daar was het subformulier natuurlijk niet bekend.

Zoals gezegd: de actieknop werkt.

Dividend for Starters


Verwijderd

Ik heb wat dingen geprobeerd, maar heb geen andere werkende oplossing gevonden dan een actieknop op het tabblad waard de query uitvoer staat.

Misschien nieuw topic B)

Helaas :'(

Cheers
Underscore

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 03 oktober 2002 @ 17:05:
Ik heb wat dingen geprobeerd, maar heb geen andere werkende oplossing gevonden dan een actieknop op het tabblad waard de query uitvoer staat.

Misschien nieuw topic B)

Helaas :'(

Cheers
Underscore
Eej, jij hebt mij 3 á 4 keer geholpen, zal ik jou nu vertellen hoe ik het werkend heb gekregen? 8)

Heb je code achter een bepaalde actie gezet, namelijk als het subforum geladen wordt! Als je de eigenschappen van het subform bekijkt, kan je bij "Gebeurtenis" opgeven dat je een actie wilt plaatshebben bij het laden of het afsluiten van het (sub)formulier ;)

Ben in ieder geval blij dat het gelukt is :7

Oh ja, wat ik nog zeggen wilde: Begroeting onder posts & replies ;)

Dividend for Starters


Verwijderd

Briljant _/-\o_

Allebij weer wat geleerd...

Cheers
Underscore
Pagina: 1