Toon posts:

[Access 2007] Foutmelding object SHAPE()

Pagina: 1
Acties:

Acties:
  • 0Henk 'm!

Anoniem: 322510

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 Anoniem: 322510 op 23-05-2011 16:48]


Acties:
  • 0Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 09:05

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?

Ik verafschuw wat u zegt, maar ik zal uw recht om het te zeggen met mijn leven verdedigen. - Voltaire


Anoniem: 322510

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?


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee