Results 1 to 5 of 5

Thread: Vreemd gedrag master-detail

  1. #1

    Vreemd gedrag master-detail

    De situatie is alsvolgt :

    ik heb een master-detail relationship tussen twee paradox-TTables, en 2 grids onder elkaar, de master boven, details eronder. Nu heb ik per master record een gegeven nodig uit het laatste detail-record. Dus ik heb een knopje die de master doorloopt, en par master-record wordt een detail.last uitgevoerd en het gegeven opgehaald (er moet nog wel meer gebeuren maar dat doet nu even niet ter zake). Dit proces moet ik voor verschillende tabellen herhalen. So far so good.

    Nu bestaan de tabellen uit 2 tot 7 miljoen records, en wil het allemaal niet zo vlotten; het duurt errug lang (de situatie is ingewikkelder, met meerdere grids). Een simpele oplossing, dacht ik, is per gebruikte tabel de controls te disablen. Dat geeft echt een enorme snelheidsverbetering, MAAR ....

    Wat blijkt ?! Het springen naar het laatste detail-record met een detail.last geeft voor mij vreemd gedrag. De recordpointer staat namelijk niet op het laatste record; ieder gegeven dat ik uit de detail-tabel wil halen via een AsString of AsFloat geeft een lege waarde. Detail.eof staat op true.

    Het lijkt erop dat DisableControls dit voor mij vreemde gedrag veroorzaakt. Wanneer ik namelijk van de datacontrols de datasource-property leeg, treed het probleem niet op. En dat is dan ook wel de oplossing van mijn probleem, maar ik snap het niet.

    Kan iemand hier iets zinnigs over zeggen ? Heeft iemand ervaring met dit gedrag ?

    Groet,
    Arthur Habraken

  2. #2
    Je zult zelf al wel overtuigd zijn dat 7 miljoen regels in een Paradox database stoppen levensgevaarlijk is, dus daar zullen we maar niet over beginnen

    Een truuk die meteen bij me opkwam: wat gebeurt er als je een last / enablecontrole / prior / next doet?
    Marcel

  3. #3
    EOF kan 2 dingen betekenen, afhankelijk van de database.
    bij DBF bestanden betekend EOF dat je VOORBIJ het laatste record staat, op een zogenaamd Phantom record. Fysiek bestaat het record niet, maar het is wel benaderbaar. Het record is leeg.
    Ik weet niet of Paradox ook op die manier werkt, maar dit zou het kunnen verklaren.

  4. #4
    Tja, 7 miljoen records in een paradox-tabel, daar heb ik zelf niet om gevraagd en is mijn idee ook niet, ik heb het er maar mee te doen.

    Ik ben niet toegekomen die truuk uit te proberen, ik laat het ook verder zitten. Ik kan het probleem reproduceren, ook bij een niet BDE-gerelateerde database.

    Ik gebruik nu als oplossing alle DB-controls langs te lopen en de datasource op nil te zetten. Werkt perfect, maar het blijft een rare situatie.

    Het verhaal van dat Phantom-record gaat op, als de controls zijn uitgezet via disablecontrols. Ander gaat het niet op ...

    Dank voor jullie reacties.

  5. #5
    Jan
    Join Date
    Oct 2007
    Location
    Mijdrecht
    Posts
    906
    Als alternatief kun je de van de ttables kopieen maken zonder datasource.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •