Jump to content
  • 0

Probleem gedupliceerd record


TheMisfit

Question

Ik blijf problemen hebben met het dupliceren van records.

Volgens mij is dat binnen Filemaker gewoon onbruikbaar omdat er geen rekening wordt gehouden met sleutelvelden en bijbehorende relaties.

 

Ik heb twee tabellen een hooftabel en een gerelateerde en een layout die de velden uit beide laat zien.

 

Als ik een hoofdrecord dupliceer wordt de primary key mee gedupliceerd terwijl die net uniek moet zijn. Dus geen auto enter serial value gebruikt maar wel een auto enter berekende waarde:

 

if( statusopenrecord=1)

max(alleHoofrecords::recordKey)+1

recordKey

)

 

Daarmee lukt het wel unieke Primary Keys aan te maken.

 

Maar nu komt het!

In de gerelateerde velden staat nog steeds de gerelateerde info van het originele record!!!

Zelfs nadat het record gevalideerd is met de nieuwe Primary Key, kan ik info zien (en wijzigen!!) die niet gerelateerd is aan het nieuwe record, maar aan het oude??!??

Pas NA validatie van de eerste wijziging van de gerelateerde data wordt een nieuwe gerelateerd record aangemaakt en verdwijnt de oorspronkelijke relatie inclusief de aangebrachte wijziging???

Zoals verwacht is de wijziging wel doorgevoerd in het originele record.

 

Hoe kan je in godsnaam een "Dupliceer record"-commando opnemen in een relationele dbase als FP er zo'n potje van maakt????

Link to comment

18 answers to this question

Recommended Posts

  • 0

Dat je PK bij duplicering ongewijzigd blijft vind ik normaal.

Maar als je die PK een nieuwe waarde geeft zou je geen gerelateerde

records meer mogen zien, want er IS geen relatie zolang er geen

nieuwe gerelateerde records worden gemaakt.

Misschien dat je het bestandje eens kan posten.

Link to comment
  • 0
Dat je PK bij duplicering ongewijzigd blijft vind ik normaal.

Maar als je die PK een nieuwe waarde geeft zou je geen gerelateerde

records meer mogen zien, want er IS geen relatie zolang er geen

nieuwe gerelateerde records worden gemaakt.

Misschien dat je het bestandje eens kan posten.

 

ik zal het trachten te reproduceren in een testbestandje

Link to comment
  • 0

Toen ik het probleem trachtte te isoleren bleek de oorzaak een veld dat ik ooit had geïmplementeerd als audittrail/ recordlog.

Toen ik dat verwijderde werkte alles opeens zoals verwacht.

 

Bij een tweede poging heb ik enkel de "autoenter berekende waarde" van dat veld uitgeschakeld. Ook dat bleek een oplossing.

 

Toen ik zo nodig wou weten of ik de fout wel degelijk gelokaliseerd had en de autoenter terug wou inschakelen, gaf dit een Filemaker fout van het type:

 

"Onbekende fout 1218"

 

Iemand een idee wat dat betekent???

Link to comment
  • 0

Waarom niet gewoon een script gebruiken om zowel de PK te setten

als een nieuwe gerelateerde record te maken. Je hebt dan zelf overal

controle over.

 

Ik kan toch moeilijk van de gebruiker verwachten dat voor elk gerelateerd veld of portaalrij op een knop moet gedrukt worden.

Terwijl het zou eenvoudig zou kunnen zijn mocht Filemaker nou eens events ondersteunen:

RecordCreated()

RecordStartValidation()

RecordEndValidation()...

 

Ik ben me bewust van de krachtige scriptingmogelijkheden, maar keer op keer wordt dat aangereikt als een oplossing voor enkele tekortkomingen binnen FP die al jaar en dag bekend zijn en dan vind ik dat fundamenteel verkeerd. Dat ze dat nu eens ten gronde aanpakken bij Filemaker. :evil:

 

Begrijp me niet verkeerd ik ben al jaren grote fan van Filemaker Pro maar soms loop je keer op keer tegen dezelfde problemen aan en dat is uitermate frustrerend.

 

Bedankt voor je recatie.

Link to comment
  • 0
Ik kan toch moeilijk van de gebruiker verwachten dat voor elk gerelateerd veld of portaalrij op een knop moet gedrukt worden.

Terwijl het zou eenvoudig zou kunnen zijn mocht Filemaker nou eens events ondersteunen:

RecordCreated()

RecordStartValidation()

RecordEndValidation()...

 

OK nu weten we dus ook dat je geen knop wenst voor het maken van gerelateerde records.

Maar ook zonder knop zou je die gerelateerde records niet mogen zien.

Dus gooi nu niet de handdoek in de ring maar post nu eens dat bestandje

dan kunnen anderen incl. mijzelf daar eens naar kijken.

 

En denk nu niet dat die functionaliteit die bij andere platforms wel aanwezig is en bij FMP (nog) niet, zaligmakend is. De leercurves zijn altijd vele malen hoger en ook daar kent men workarounds, althans omslachtige manieren om iets te bereiken wat in FMP erg simpel is. Nog afgezien van de fouten die in sommige pakketten zitten of (weer) opduiken bij de zoveelste update. FMP heeft zeker tekortkomingen maar het pakket is zo goed als bugvrij, je weet kortom waar je aan toe bent.

 

 

gr.,

Arnoud

Link to comment
  • 0

Volgens mij is de max functie die je gebruikt hier niet op zijn plaats.

Ik zou gewoon de ID teller bijhouden in een global of in een

1 record bestand en hiermee je PK setten in het script voor je

nieuwe / dupliceer record. Dat werkt gewoon goed.

Overigens vind ik het wel een beetje flauw dat je niet even een

bestandje hebt gepost na het lezen van mijn antwoord.

We proberen je wel te helpen.

 

gr,

Arnoud

Link to comment
  • 0
Volgens mij is de max functie die je gebruikt hier niet op zijn plaats.

Ik zou gewoon de ID teller bijhouden in een global of in een

1 record bestand en hiermee je PK setten in het script voor je

nieuwe / dupliceer record. Dat werkt gewoon goed.

Overigens vind ik het wel een beetje flauw dat je niet even een

bestandje hebt gepost na het lezen van mijn antwoord.

We proberen je wel te helpen.

 

gr,

Arnoud

 

Ik moet eerst even mijn oplossing terug werkende krijgen en deployen.

'k zal het zeker wel posten maar moet nu eerst even verder doen.

 

PS waarom zou je da max functie daarvoor niet gebruiken? Dat werkt perfect hoor.

Link to comment
  • 0

Laten we niet twee max-en door elkaar halen.

De max-functie werkt ogenschijnlijk alleen goed als je

een laatste record dupliceert, als een tussenliggende record

dupliceert dan ga je de boot in.

De max-functie is alleen geschikt op recordniveau, het optellen van waardes in velden en repeterende velden en bij het gebruik van portals. Niet om in een recordset de hoogste veldwaarde te bepalen.

Als je een summaryveld gebruikt met de instelling maximum gaat alles wel goed uiteraard, misschien bedoel je dat.

Maar dan nog ik zou ervoor kiezen FileMaker niet te laten rekenen als de juiste pk voor het opgrijpen kan liggen.

gr,

Arnoud

Edited by Guest
Link to comment
  • 0
Laten we niet twee max-en door elkaar halen.

De max-functie werkt ogenschijnlijk alleen goed als je

een laatste record dupliceert, als een tussenliggende record

dupliceert dan ga je de boot in.

De max-functie is alleen geschikt op recordniveau, het optellen van waardes in velden en repeterende velden en bij het gebruik van portals. Niet om in een recordset de hoogste veldwaarde te bepalen.

Als je een summaryveld gebruikt met de instelling maximum gaat alles wel goed uiteraard, misschien bedoel je dat.

Maar dan nog ik zou ervoor kiezen FileMaker niet te laten rekenen als de juiste pk voor het opgrijpen kan liggen.

 

gr,

Arnoud

 

Maar ik maak een tweede TO aan van mijn tabel en leg daartussen een X-relatie op de recordkey. Daardoor geeft de Max me de Max van Alle records.

Bovendien gebruik ik eigenlijk max+status(telleropenrecords) ipv gewoon max+1 om problemen in multiuser-omgevingen te ondervangen

Link to comment
  • 0

Allemachtig, een selfjoin, een voorwaarde, een max-berekening, en een auto-enter, en dat allemaal om een unieke ID te krijgen.

Ik zat te denken...zijn er redenen waarom je niet FileMaker's eigen record ID gebruikt?

Dus: RecordKey = Get(RecordID) via een auto-enter.

 

 

gr.,

Arnoud

Link to comment
  • 0
Allemachtig, een selfjoin, een voorwaarde, een max-berekening, en een auto-enter, en dat allemaal om een unieke ID te krijgen.

Ik zat te denken...zijn er redenen waarom je niet FileMaker's eigen record ID gebruikt?

Dus: RecordKey = Get(RecordID) via een auto-enter.

 

 

gr.,

Arnoud

 

Omdat je dan in de problemen komt als je gaat importeren

Link to comment
  • 0
.... problemen hebben met het dupliceren van records.

Hoe kan je in godsnaam een "Dupliceer record"-commando opnemen in een relationele dbase als FP er zo'n potje van maakt????

 

Ik denk niet dat FileMaker verkeerd zit.

 

Er zijn toch andere manieren om te bereiken wat je wil ?

 

Ik begrijp niet waarom je 'duplicate' als uitgangspunt neemt.

Link to comment
  • 0
.... problemen hebben met het dupliceren van records.

Hoe kan je in godsnaam een "Dupliceer record"-commando opnemen in een relationele dbase als FP er zo'n potje van maakt????

 

Ik denk niet dat FileMaker verkeerd zit.

 

Er zijn toch andere manieren om te bereiken wat je wil ?

 

Ik begrijp niet waarom je 'duplicate' als uitgangspunt neemt.

 

Omdat het dupliceren van een record een functionaliteit is die door de gebruiker wordt gevraagd.

Link to comment
  • 0
Bij het importeren kan je toch de auto-enter opties aanzetten, dus de importrecords krijgen dan elk ook een unieke RecordKey.

Welke problemen zie jij dan? Het synchroniseren van data?

 

Het behouden van de koppeling tussen hoofdrecords en hun gerelateerde records bij het herimporteren van oude data in een nieuwere versie van de dbase.

Link to comment
  • 0

Auto-enter optie uitzetten bij het importeen en je behoudt de koppeling.

Zelf zou ik (ook) de duplicering scripten (bijv. : ID = Get(RecordID) en niet auto-enteren.

Jouw methode is m.i. onnodig ingewikkeld (althans ik zou het zo nooit doen), gooi het eens over een meer eenvoudige boeg zou ik zeggen en je zult zien dat het dan wel gaat werken.

 

gr,

Arnoud

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...