Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Access 2007] Foutmelding object SHAPE()

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met het volgende probleem.
Ik heb een Access adp project met een 30 tal formulieren. Bij sommige formulieren heb je een lijst met records (orders) en daarbij kan je links het record selecteren. Bij dubbelklikken op dit record opent er een lijst met informatie over de betreffende order.
Er wordt eerst een check gedaan of het betreffende formulier dat geopend moet worden nog niet geopend is.
Dit gebeurd als volgt:
code:
1
2
3
4
5
6
7
If PoEb = 0 Then
        If Not IsLoaded("ProcessOrder") Then
            DoCmd.OpenForm "ProcessOrder", , , , , , [OrderNumber]
        Else
            Forms![ProcessOrder]![OrderNumber] = [OrderNumber]
            Forms![ProcessOrder].Form.SetFocus
        End If


Daarna wordt het formulier (ProcessOrder) geopend en wordt deze gevuld aan de hand van het ordernummer dat meegegeven is.
Maar het probleem doet zich voor wanneer het formulier "processorder" nog niet geopend is, ik krijg dan de melding:

code:
1
Het object SHAPE(SHAPRE RS_87671 AS rsLevel0 COMPUTE rsLevel0, Sum(rsLevel0.[OutOfSpec]) AS C0, Sum(rsLevel0.[ResultsOk]) AS C1, Count(rsLevel0.[TestNo]) AS C2) AS RS_87672 kan in Microsoft Office Access niet worden gevonden.


Wanneer het formulier al geopend is werkt het wel.

Het 2e probleem wat zich voordoet naast die melding is dat de velden die gevuld moeten worden door elkaar gehaald worden. Dit gebeurd dus ook alleen wanneer het formulier niet geopend is.
Zo wordt bijvoorbeeld bij het ordernummer een materialnummer ingevuld en bij materialnummer de description.

Ik heb al gekeken wat er fout kan gaan bij het bovengenoemde stukje code, maar dit werkt goed naar mijn idee. Want ook zonder argumenten krijg ik dezelfde melding.
Verder heb ik al een nieuw .adp project aangemaakt en de huidige geimporteerd maar dit had ook geen zin.

Alles wordt wel goed weergegeven wanneer ik in het formulier processorder zit, naar ontwerpweergave ga en daarna terug naar formulierweergave. Alle velden die voorheen fout werden weergegeven staan dan weer goed.

Iemand enig idee wat ik met deze foutmelding moet?

Hartelijk dank!

[ Voor 5% gewijzigd door Verwijderd op 23-05-2011 16:48 ]


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 11:02

Reptile209

- gers -

Snelle gok/hack, probeer dit eens:

Visual Basic:
1
2
3
4
5
6
7
8
If PoEb = 0 Then
        If Not IsLoaded("ProcessOrder") Then
            DoCmd.OpenForm "ProcessOrder", , , , , , [OrderNumber]
        End If 

        Forms![ProcessOrder]![OrderNumber] = [OrderNumber]
        Forms![ProcessOrder].Form.SetFocus
End If  'If PoEb = 0

Mijn idee: als het form nog niet geopend is, open je het (via OpenForm). In beide gevallen zet je daarna de juiste gegevens erin.

Zit er nog enige (relevante) code achter het betreffende form dat verder roet in het eten zou kunnen gooien?

Zo scherp als een voetbal!


Verwijderd

Topicstarter
De methode die je mij geeft geeft hetzelfde resultaat als die ik voorheen gebruikte.
Ik weet wat de foutmelding veroorzaakt. Er is een stukje code waarbij ik zeg:
code:
1
2
3
4
Private Sub Form_Current()
    [OrderNumber] = [OrderNumberFrom]
    '[TestSpecsId] = [TestSpecsIdOrd]
End Sub

Dit stukje wordt gebruikt om het subformulier van waarden te voorzien die aan het ordernummer hangen.
Wanneer ik zeg
code:
1
[OrderNumber] = [OrderNumberTo]

Krijg ik een foutmelding, en als ik
code:
1
[OrderNumber] = [OrderNumberFrom]

gebruik werkt het wel en krijg ik geen foutmelding.

Ik heb dit zelf niet gebouwd maar voor zover ik weet zijn er voor dit probleem verder geen relavante stukken code.

Het enige probleem waar ik nu nog mee zit is dat de foute waarden in de velden ingevuld worden bij het laden. Wanneer ik naar ontwerpweergave ga en dan weer terug naar formulierweergave staan ze wel goed.

Ik denk. Nou weet bijna wel zeker dat het te maken heeft met het feit dat ik gebruik maak van een stored procedure. Eerst werd er gewerkt met een view maar de waarden moeten op een bepaalde manier geladen worden in het formulier. Bij de stored procedure wordt gekeken wat voor nummer het is en aan de hand daarvan wordt een select gedaan.
Als recordbron heb ik dus dbo.*stored procedure*. Die wil als parameter een (ordernumber) maar deze vul ik nergens in. Toch wordt het ordernummer goed geladen.
Wellicht dat ik hier iets fout doe?