Jump to content
  • 0

App vraagt om external datasource, vóórdat de global variables geladen worden


Gaiser

Question

Posted

Ik heb een app die bestaat uit een UI met erachter data-files (seperation model).

In de UI file wil ik de external datasources laden met global variables. Zodat ik op de development-server de dev data files kan laden en op de productie-server de productie data files.

Ik ervaar het volgende probleem:

Filemaker vraagt bij het openen van de hosted app om 2 van de 7 external datasources vóórdat het OnFirstWindowOpen script gaat draaien. Hij kan deze niet oplossen en noemt in de dialoog de global variable als pad. Dus voordat de global variables met het pad naar de files is gedeclareerd, klaagt hij al dat hij de file niet kan vinden en zoekt op letterlijk de "$$DATAPAD" in plaats van deze global te hebben geladen en het pad kan vinden.

Ik ben al een tijdje aan het rondneuzen op het Claris-forum. Het probleem is bekend. Er is onder andere deze thread het issue.
Filemaker onthoudt bij sluiten van de app onder meer de laatste layout die lokaal ge-edit is en indien daar referenties naar externe files op staan, dan probeert hij deze te laden vóórdat hij start met gaan naar de default layout in de file-setting en runnen van het OnFirstWindowOpen script.

De app is nu zo ingericht dat in het OnFirstWindowOpen script deze eerst naar een Splash-layout gaat met niets erop, en onderliggend een SPLASH tabel met geen enkele relatie en geen records. Niets wat een external datasource kan triggeren dus. Daarna laden de global variables met de paden naar de external datasources. En daarna gaat de app naar de layout waar de gebruiker start.

Bij afsluiten gaat het OnLastWindowClose script weer terug naar de splash-layout met niets erop en tabel zonder relaties, sluit alle externe data-files en dan sluit de app af. Ik heb overigens geen close application erin zitten, zoals soms geadviseerd wordt omdat dit nog een stukje cache weg zal halen.

Als eerste oplossing wordt er geadviseerd een lichte recovery op de file te doen zodat de cache leeg komt. 

En daarnaast een andere goede (en logischer) oplossing Appsolutions (ik vermoede de NL partij):

---

FileMaker has a starting layout that is open BEFORE the file options or script trigger layout is invoked. This is because FileMaker always needs a current Layout to function and can't even login and send you to a different layout without loading a current layout first.

This starting layout is the last layout that has been EDITED (while not hosted!). OnLastWindowClose is not enough. Go to the empty layout in layout mode and change anything, ie. move something 1px and save it. Close the file and reopen.

---

Ik heb dit geprobeerd - dus lokaal splash layout iets editten, afsluiten, weer hosted openen  en inderdaad, de eerste keer dat ik de file hosted open, is het probleem weg! Filemaker vraagt niet meer om de missende files en alle external datasources laden als een zonnetje.

Echter de vreugde was van korte duur - en nu komt het - als ik de hosted app dan weer afsluit en opnieuw open, is het probleem weer terug.

En ik doe helemaal niets.

Zelfs geprobeerd in scenario waarbij de app slechts op de splash layout blijft, niets doet behalve de external datasource global variables declareren en dan bij afsluiten ook niets extra's doen. 

Heeft iemand ervaring hiermee?
Weet iemand nog opties om te proberen?

Dank!
Gijs

 

Recommended Posts

  • 0
Posted

Dank Banach en BigBadWolf,

@bigbadwolf
Het lijkt idd in de cache te zitten. Daar slaat hij iets op wat vraagt om de external data sources vóórdat OnFirstWindowOpen de global variables kan laden met de paden.
Ik kan er maar niet achter komen wát dit dan triggered. De laatste layout bij OnLastWIndowClose heeft geen velden en is een tabel zonder enige relatie. 

@Banach 
Kun je uitleggen hoe je met de dummy werkt?
Het issue zit 'm niet zozeer dat de files niet gevonden kunnen worden. Hij kan de files vinden, indien de globals netjes geladen worden vóórdat hij gaat zoeken naar de external data sources. Maar in dit geval probeert FileMaker de external data source te vinden vóórdat de globals door OnFirstWindowOpen gevuld worden. Dus Filemaker start de app op, gaat als allereerste zoeken naar het pad van de twee files zonder dat ook maar iets geladen is, en gaat daarna pas verder met OnFirstWindowOpen.

Het gekke is: als je de oplossing van AppSolutions uitvoert met een edit (niet hosted) op de lege Splash pagina zonder relaties, dan gaat het de eerste open wél goed. De cache lijkt dan dus goed te gaan.
Totdat je de file een keer geopend hebt en nogmaals opent, en dan slaat Filemaker 'ergens' iets op en gaat daardoor vóór start van alles de external data sources op willen lossen, en loopt dan tegen niet gevulde globals aan.

Ook wel gelezen: custom functions die external datasources triggeren voordat script laadt, maar ik heb geen custom functions die dit doen. Die hebben geen verwijzingen. Bovendien werkt het met de methode een eerste keer. Dus er gebeurt iets met een layout en cache bij afsluiten. Terwijl ik een OnLastWIndowClose heb die langs die lege Splash layout gaat, zonder enige relatie.

Er zit iets in mijn applicatie waardoor een cache gevuld wordt met een datasource die Filemaker wil hebben voordat OnFirstWindowOpen draait. En het is niet op te lossen met een OnLastWindowClose langs een lege layout.

Iemand ervaring hiermee?

  • 0
Posted (edited)

Wat ik dacht is dat je ervoor zorgt dat de global voor het pad naar het bestand altijd gevuld is met een pad dat gevonden kan worden. Ik weet niet wat je als initiele inhoud daarven hebt. Is het leeg? Dan zou je dit eens kunnen proberen. Het pad kan natuurlijk ook het pad naar b.v. je productie db zijn en hoeft niet per sé een dummy bestand te zijn.

Geen idee of dit werkt hoor. Zelf zou ik zoiets wel als eerste proberen.

Edited by Banach
  • 0
Posted

Ik gebruik deze techniek zelf bij een van mijn klanten om van 14 servers verschillende betanden te openen, maar doe daarin niks met data, dat wordt in de bestanden zelf gedaan.

De regels waar je aan moet voldoen zijn echter exact hetzelfde:

  1. Een dynamische datasource kan je slechts éénmaal per sessie definiëren en activeren.
    M.a.w. eenmaal nadat een koppeling is gelegd en 'werkt' kan je deze niet omleggen naar een ander bestand.
  2. Het aanspreken van data kan alleen wanneer je een geldig pad naar de datasource hebt.
    Dus je kan niet eerst naar een layout of een script starten met daarin koppelingen naar de datasource en daarna de datasource een pad geven, anders krijg je foutmeldingen.
  3. Zorg bij het afsluiten van een 'stand-alone' interface-bestand, dat het bestand wordt afgesloten op een lay-out zonder een actieve externe datasourcee.

Ik heb een demo'tje met drie bestanden toegevoegd, dat je zowel 'stand-alone' als op de fmserver kan 'sharen'.

Open het bestand 'Interface' met user: Admin an wachtwoord: Admin

ExternaDataSources.zip

  • 0
Posted

Dank Menno!
Aan alle drie de punten die je noemt wordt in de app voldaan.

Toch - ondanks de stand alone layout zonder external data source bij afsluiten via OnLastWindowClose - slaat hij toch ergens iets op waardoor bij een volgende opening vóór alles hij gaat zoeken naar twee external datasources, vóordat de globals ingevuld kunnen worden door het OnFirstWindowOpen script.

Hij doet misschien iets met de cache van het bestand op de server? Kan dat?

Als je de file repareert lokaal, door de laatste exit layout te editten, gaat het 1 keer goed. Er is dan geen cache-informatie waardoor FileMaker de twee datasources per se wil vinden voordat de globals geladen zijn. Maar na 1x openen van de hosted file, gaat het de tweede keer weer mis.

Een exit application in het OnLastWindowClose werkt ook niet. Het lijkt dus niet aan de cache van de lokale app te liggen.


@Banach
"Wat ik dacht is dat je ervoor zorgt dat de global voor het pad naar het bestand altijd gevuld is met een pad dat gevonden kan worden. Ik weet niet wat je als initiele inhoud daarven hebt. Is het leeg? Dan zou je dit eens kunnen proberen. Het pad kan natuurlijk ook het pad naar b.v. je productie db zijn en hoeft niet per sé een dummy bestand te zijn.

Het punt is (voor zover ik weet en als ik je suggestie goed begrijp): als het dummy-pad gevonden wordt vindt FileMaker dat de external datasource is opgelost, en krijg je het daarna niet meer op het pad van de global. Je kunt een external datasource maar 1 keer oproepen. Zie punt 1 van Menno: "Een dynamische datasource kan je slechts éénmaal per sessie definiëren en activeren.
M.a.w. eenmaal nadat een koppeling is gelegd en 'werkt' kan je deze niet omleggen naar een ander bestand. "
 

  • 0
Posted

De opstart van jouw 'Interface' bestand moet gebeuren op een lay-out zonder koppelingen naar een virtuele datasource (VDS).

Het eventuele opstartscript mag geen enkele verbinding bevatten naar een VDS. Heb je die wél, verplaats dat dan naar een subscript, zodat je eerst de juiste VDS in $$DATAPAD instelt en vervolgens de rest in een subscript uitvoert.

Ik heb het interface-bestand uit mijn eerdere voorbeeld een beetje uitgebreid met een voorkeur-instelling en een startscript. Er wordt nergens naar de VDS gevraagd, alles loopt probleemloos door .

Als jij toch foutmeldingen hebt met jouw eigen systeem, dan probeert jouw bestand de VDS meteen te benaderen, nog vóórdat jij die instelt. Je zal dan de lay-out en het script dat loopt moeten onderzoeken. Als er al iets in 'de cache' zou zitten dan kan je dat simpel verhelpen door je 'temp-files' te wissen (FileMaker Vookeuren, eerste tabblad: Wissen tijdelijke bestanden).

Overigens moet je wanneer je lay-outs gaat bewerken éérst de VDS instellen en daarna pas naar lay-out modus gaan :-)

ExternalDataSources_v2.zip

  • 0
Posted

Dank Menno! Ook voor de moeite om het demo bestand aan te passen.

Ik kan bevestigen dat het interface bestand naar een lay-out gaat zonder koppelingen naar een VDS.

Het is een lay-out met een tabel die een TO heeft met geen enkele relatie.
Ik heb ook getest met 0 records in deze tabel.

De lay-out zelf heeft geen enkel object.

Het OnFirstWindowOpen script is deze:

 

#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Function:    Opens OnFirstWindowOpen
#  Modified:    10-10-2023
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Export:        False
#  Import:        False
#  Server:        False
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Allow User Abort [ On ]
Set Error Capture [ On ]
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Notes             
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#
Go to Layout [ “SPLASH” (SPLASH) ; Animation: None ]
#
Perform Script [ Specified: From list ; “3135 System | Set External Data Sources” ; Parameter:    ]
#
#
Exit Script [ Text Result: "" ]
#
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  ----- HISTORY of CHANGES
#  02-12-2023    GVM Initial script

 

Het subscript is deze:

#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Function:    Set external datasource global variables
#  Modified:    01-08-2024
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Export:        False
#  Import:        False
#  Server:        False
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Allow User Abort [ On ]
Set Error Capture [ On ]
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  Notes             
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#
#  >> Set external datasource paths
#
If [ PatternCount ( Get ( FileName ) ; "DEV" ) > 0 ]
#  >> DEVELOPMENT
Set Variable [ $$SKDATA_AUDIENCE ; Value: "file:SKDATA_AUDIENCE_DEV" ]
Set Variable [ $$SKDATA_ATTRIBUTES ; Value: "file:SKDATA_ATTRIBUTES_DEV" ]
Set Variable [ $$SKDATA_SALES ; Value: "file:SKDATA_SALES_DEV" ]
Set Variable [ $$SKDATA_LOGS ; Value: "file:SKDATA_LOGS_DEV" ]
Set Variable [ $$SKDATA_MAIN ; Value: "file:SKDATA_MAIN_DEV" ]
Set Variable [ $$SKDATA_IMPORT ; Value: "file:SKDATA_IMPORT_DEV" ]
Set Variable [ $$SKDATA_CONTAINERS ; Value: "file:SKDATA_CONTAINERS_DEV" ]
#
Else If [ PatternCount ( Get ( FileName ) ; "DEV" ) = 0 ]
#  >> PRODUCTION
Set Variable [ $$SKDATA_ATTRIBUTES ; Value: "file:SKDATA_ATTRIBUTES" ]
Set Variable [ $$SKDATA_SALES ; Value: "file:SKDATA_SALES" ]
Set Variable [ $$SKDATA_AUDIENCE ; Value: "file:SKDATA_AUDIENCE" ]
Set Variable [ $$SKDATA_LOGS ; Value: "file:SKDATA_LOGS" ]
Set Variable [ $$SKDATA_MAIN ; Value: "file:SKDATA_MAIN" ]
Set Variable [ $$SKDATA_IMPORT ; Value: "file:SKDATA_IMPORT" ]
Set Variable [ $$SKDATA_CONTAINERS ; Value: "file:SKDATA_CONTAINERS" ]
#
End If
#
#
#
#  ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
#  ----- HISTORY of CHANGES
#  02-12-2023    GVM Initial script
#  01-08-2024    GVM Added SKDATA_CONTAINERS

 

Het probleem is echter dat FileMaker niet aan dit OnFirstWindowOpen script toekomt.

Vóórdat dit script uitgevoerd wordt, probeert FileMaker de VDS te laden. En vindt daar alleen de $$SKDATA_LOGS.

Je krijgt deze foutmelding:

image.png.c9902ae1e3ccbc7cc3b8012e53abc94b.png

 

Voor alle duidelijkheid:

Als ik in de niet hosted file deze lay-out edit en het bestand afsluit, vervolgens hosted benader, is het probleem eenmalig opgelost.

De globals laden dan prima en deze foutmelding is niet te zien. Alles werkt.

Echter als ik het bestand afsluit en daarna nóg eens open, dan krijg ik de 2e keer weer de foutmelding.

Bij afsluiten loopt er een script OnLastWindowClose wat langs de lege lay-out gaat en wat alle data files afsluit, voordat de app daadwerkelijk stopt.

 

  • 0
Posted

Staat jouw interface bestand op de server? Zo ja, op welke lay-out stond/staat dit bestand als je het laat openen zonder een script te laten lopen én zonder een specifieke lay-out te openen?

Zo te zien hebben beide scripts geen actieve koppelingen naar EDS's/VDS's, dus daar zal het probleem niet ontstaan. Logische conclusie is dan dat de tabel "SPLASH" een berekening of een koppeling heeft naar een extern bestand dat nog niet kan worden of is geladen.

Je hebt nog twee mogelijkheden om het op te lossen:

  1. Start het interfacebestand 'stand-alone' op, ga naar de SPLASH en sluit dan het bestand (zonder scriptaflopen) en plaats het terug op de server.
  2. Als dit niets heeft geholpen, maak dan een nieuwe tabel in de interface. Haal alles van de SPLASH lay-out af en baseer SPLASH op de nieuwe tabel

Als je de interface op de gebruikelijke manier start, zou je probleem moeten zijn verholpen en kan jij gaan uitzoeken wat er verkeerd ging

  • 0
Posted

Dank weer Menno.

Beide stappen doorlopen. Geven hetzelfde euvel.

Het enige wat tot nu toe 'werkt' om de meldingen weg te krijgen is om in het interface-bestand 'stand-alone' de SPLASH lay-out te editten (al is het maar 1 pixel verschuiven). Vervolgens bestand weer hosten, hosted openen en dan gaat het 1 keer goed.

Ik noem hier nog even de tip van AppSolutions op het Claris Forum:

---

FileMaker has a starting layout that is open BEFORE the file options or script trigger layout is invoked. This is because FileMaker always needs a current Layout to function and can't even login and send you to a different layout without loading a current layout first.

This starting layout is the last layout that has been EDITED (while not hosted!). OnLastWindowClose is not enough. Go to the empty layout in layout mode and change anything, ie. move something 1px and save it. Close the file and reopen.

---

Logischerwijs, wat kan het dan zijn? Je zou zeggen dat er dan tóch door het hosted openen aan het einde langs een layout wordt gegaan, maar het kán bijna niet dat er een andere starting-layout ontstaat, want de "laatste layout' is ook de SPLASH met niets erop en een frisse nieuwe lege tabel erachter. Dat gaat via het OnLastWindowClose script, maar ik heb het ook handmatig zo getest en het lost het probleem niet op.

 

 

  • 0
Posted

Wat verschruif je 1 pixel als er niets op de lay-out staat? Jij schrijft in jouw bericht:

2 uren geleden, Gaiser zei:

Ik kan bevestigen dat het interface bestand naar een lay-out gaat zonder koppelingen naar een VDS.

Het is een lay-out met een tabel die een TO heeft met geen enkele relatie.
Ik heb ook getest met 0 records in deze tabel.

De lay-out zelf heeft geen enkel object.

 

  • 0
Posted

Scherp! Ik heb er toch maar een zinnetje op gezet "Bestand aan het openen...".
Tekst, dus roept geen EDS op.

En ook getest zonder het zinnetje, vergroten of verkleinen zichtbaar veld is ook een edit. Maar lost het niet op.

Het lijkt ergens anders aan te liggen.

Als de laatste lay-out altijd deze SPLASH is, wat kan er dan nog meer gebeuren waardoor de file denkt de EDS nodig te hebben, vóórdat alles start?

  • 0
Posted

Ieder geshared bestand opent altijd met de lay-out die actief was op het moment waarop het werd gesloten toen het 'strand-alone' was geopend (dus op dat moment niet geshared door fmserver). Je kan in de file-options opgeven met welke lay-out het bestand moet openen, maar het openen begint dan nog steeds op die 'beruchte' laatste lay-out.

Ik heb sterk mijn twijfels of SPLASH van jouw interface-bestand wel de lay-out is waar het daadwerkelijk mee opent.

Jij maakt bij het afsluiten de lay-out SPLASH actief tijdens dat je het bestand geopend hebt vanaf de FMServer, dat heeft geen toegevoegde waarde, je kan die stap net zo goed achterwege laten.

  • 0
Posted

"Ik heb sterk mijn twijfels of SPLASH van jouw interface-bestand wel de lay-out is waar het daadwerkelijk mee opent. "

Daar lijkt het inderdaad op. Hij gebruikt toch een andere lay-out. Of er iets iets anders wat de referentie veroorzaakt, wat we nog niet kennen.

"Ieder geshared bestand opent altijd met de lay-out die actief was op het moment waarop het werd gesloten toen het 'strand-alone' was geopend (dus op dat moment niet geshared door fmserver). "

Met de toevoeging dat het lijkt te gaan om de layout die het laatst ge-edit is (zie opmerking AppSolutions eerder).
Het bewijs hiervoor zou zijn:
Als ik het bestand lokaal open, de SPLASH lay-out oproep maar verder niks doe en het bestand sluit met die lay-out actief, de hosted open nog steeds de foutmelding geeft.
Maar als ik het bestand lokaal open, de SPLASH layout wijzig, het bestand sluit en daarna gehost open, gaat alles goed. De globals laden en alle VDS/EDS staan goed.

Het gekke is: wat gebeurt er nou waardoor bij de 2e keer hosted openen het probleem zich gaat voordoen. Opent het bestand inderdaad niet meer via SPLASH of is er een ander event  / instelling waardoor FileMaker de EDS wil oproepen.

Zelfs als ik geen enkele actie doe na die eerste hosted opstart, de OnFirstWindowOpen en OnLastWindowClose script triggers uit zet, dan nog vertoont het bestand na de 2e open nog steeds het gedrag. Het probleem zit 'm dus niet in start / eind scripts en de lay-outs waar deze scripts langs navigeren of waar je handmatig langs navigeert.

Het is een groot raadsel. Ik zal het eens posten op het Claris forum om te kijken of iemand daar ervaring met een soortgelijke situatie heeft gehad.
 

  • 0
Posted

Ik zie nergens in jouw relaas, dat je het bestand offline naar jouw werkstation download, daarop direct opent, op de juiste layout afsluit (na een wijziging) en vervolgens weer terugzet op de fmserver.

DAT is namelijk de ENIGE manier waarop je bewerkstelligt FileMaker het bestand op de gewenste koppeling-loze lay-out te laten openen.

  • 0
Posted

 

56 minuten geleden, menno zei:

Ik zie nergens in jouw relaas, dat je het bestand offline naar jouw werkstation download, daarop direct opent, op de juiste layout afsluit (na een wijziging) en vervolgens weer terugzet op de fmserver.

DAT is namelijk de ENIGE manier waarop je bewerkstelligt FileMaker het bestand op de gewenste koppeling-loze lay-out te laten openen.

Dank voor je bericht.

Doe ik inderdaad zo, zie alle eerdere berichten sinds donderdag.
Het gaat als volgt:
Ik sluit bestand op FileMaker Server, ik open het bestand vervolgens lokaal. Welliswaar op de server maar ik kan daar bij via VPN. Het bestand is op dat moment niet hosted, en het opent in de lokale FileMaker Pro client, dus stand-alone offline zoals je bedoelt. Ik ga naar de SPLASH lay-out, edit de layout, en sluit dan het bestand af terwijl ik op de SPLASH lay-out zat. Dit is de facto hetzelfde als het bestand naar werkstation toehalen en daarna weer uploaden naar de server.


Het bestand doet het dan ook goed na die eerste keer... Het lijkt opgelost. Filemaker pakt die eerste keer dus de juiste SPLASH layout en alles loopt goed.
Maar na die ene keer remote openen gaat de eerstvolgende keer niet goed.

Ik zal nu voor alle zekerheid een keer testen door bestand echt van de server af te halen. Laat zo weten.

 

  • 0
Posted

Dan zijn er m.i. nog twee mogelijkheden

  1. in een 'onzichtbaar' deel is er toch nog een link naar iets.
  2. het bestand is corrupt geraakt.

Je kan een nieuw interface-bestand bouwen of proberen het interface-bestand te herstellen.

Ik heb even het eerste testbestandje omgebouwd en daarin jouw filereferences nagemaakt en aan iedere reference een layout gekoppeld (heb eerst even het data-bestand 14x gedupliceerd met eveneens jouw bestandsnamen. Vervolgens het bestand gedupliceerd met "_dev" aan de bestandsnaam toegevoegd.

Dit bogus-systeempje werkt denk ik precies zoals jij dat wilt:

Opstarten met alleen de EDS gedefiniëerd:

Openen_zonder.thumb.png.906765acd36d9cec9ed9ba5dbe38a7c0.png

Na het bzoeken van lay-outs (in beide interface=bestanden):

Na_enkele_layouts.thumb.png.eb22fd1a78a2febc660380b849f04129.png

Na alle lay-outs te hebben bezocht:

Alles_geopend.thumb.png.21d635c0bf6a6be03abfd99422df5d11.png

Als nu de beide interface-bestanden worden gesloten, worden ook alle achterliggende bestanden weer gesloten (tenzij je die zelf naar de voorgrond hebt gehaald en van alles hebt laten uitvoeren)

Mocht je het zelf willen proberen (ik heb de prefixes even gewijzigd naar CLARIFY_ zodat jouw eigen bestanden geen last ondervinden) dan kan je deze gebruiken: ExternalDataSources_v3.zip

  • 0
Posted

Veel dank voor de demo en het uitvoerige meedenken!

Zo moet het idd werken.

Als ik in het UI bestand de twee EDS die opgevraagd worden "hard" erin zet als tweede optie, gaat het ook goed. Dat scheelt in ieder geval in plaats van telkens zeven EDS paden omzetten van dev naar productie bij het deployen.

Ik ga het UI bestand eens trachten te recoveren. Kijken of er ergens iets corrupt is.

Hoop niet opnieuw te hoeven bouwen! Ca. 1750 scripts, 2900 layouts en 3300 TO's. Het is nogal een systeem...

  • 0
Posted

Ik was al bang dat je uitgebreid systeem zou hebben ... is denk ik ook een beetje bejaard? Als in enkele jaren oud en misschien wel begonnen met pre fmp12?

Mogelijk heb je dan ook nog lay-outs die zij gebaseerd op het 'Classic' thema en dat geldt misschien ook voor jouw starter lay-out. Ik zou dan niet teruggrijpen op recoveren, dat wordt nog steeds door Claris afgeraden.

Je kan dan het beste een totaal nieuwe tabel maken in jouw interface bestand en ook een nieuwe lay-out die op die tabel is gebaseerd. Laat dan jouw EDS-laadscript voortaan uitvoeren op die nieuwe tabel met nieuwe lay-out en sluit je de interface af op die lay-out (alleen als je stand-alone ontwikkelt). Blijkt dit de oplossing te zijn, verwijder dan die oude lay-out, want die is waarschijnlijk corrupt.

Laat hier gerust weten of je het nu krijgt opgelost en vooral hoe, want we lezen allemaal mee :-) 

  • 0
Posted (edited)
19 uren geleden, menno zei:

Mogelijk heb je dan ook nog lay-outs die zij gebaseerd op het 'Classic' thema en dat geldt misschien ook voor jouw starter lay-out. Ik zou dan niet teruggrijpen op recoveren, dat wordt nog steeds door Claris afgeraden.

De basis is inderdaad nog uit begin jaren 90 :-)
Is na 2000 een tijd niet in gebruik geweest en in 2009 weer in gebruik genomen wegens overname bedrijf en de behoefte aan goede software.
Ik verbaas mij nog altijd wat je met FM allemaal kunt doen en hoe snel het werkt. Eigenlijk alles behalve misschien echt 'op schaal', maar dan is FM in onze stack een prima oplossing als data source met api calls vanaf de web app. Dat brengt met de global variables voor EDS paden overigens nog een andere uitdaging, Filemaker laadt OnFirstWindowOpen niet als je api calls doet. Gelukkig hebben wij een seperate app die de api calls afhandelt, los van de UI app. Die laat ik vooralsnog met 'harde' paden staan. Ik begrijp wel dat er oplossingen voor zijn. Maar dat is wellicht een keer voor een andere thread!

Classic zit er niet in, Enlighted wel. Ik kan het mij niet meer herinneren, mogelijk heb ik classic er een keer uitgehaald of hebben we destijds gemigreerd naar nieuwere versie. Is lang geleden.

 

19 uren geleden, menno zei:

Je kan dan het beste een totaal nieuwe tabel maken in jouw interface bestand en ook een nieuwe lay-out die op die tabel is gebaseerd. Laat dan jouw EDS-laadscript voortaan uitvoeren op die nieuwe tabel met nieuwe lay-out en sluit je de interface af op die lay-out (alleen als je stand-alone ontwikkelt). Blijkt dit de oplossing te zijn, verwijder dan die oude lay-out, want die is waarschijnlijk corrupt.

De starter layout is reeds een layout met niets erop dan 1 regel tekst en gebaseerd op een nieuwe lege tabel, waarvan de TO geheel solo staat.

Dit had ik inderdaad eerder al geprobeerd als oplossing, en nogmaals voor de zekerheid na je reactie van vrijdag 14:07.

Biedt helaas geen soelaas.

Wat ik gek en onlogisch blijf vinden is dat bij eerste openen de oplossing werkt. Hij pakt dan blijkbaar de gewenste layout.
Maar dat na hosted openen de tweede keer het probleem zich pas voordoet.

Dan moet er dus 'iets' gebeuren in de hosted file wat de situatie verandert voor de tweede keer... En we hadden net geleerd dat dit alleen op stand alone lokaal geopende bestanden gebeurt!

Wat kan het zijn?

- Slaat hij hosted tóch een andere layout op bij sluiten?

- Is er iets anders wat in de cache of file ergens opgeslagen wordt wat niets met de starting layout te maken heeft?

 

 

Edited by Gaiser
  • 0
Posted

Heb je FMP gestart zonder bestanden te openen, start dan eerst de script-debugger en schakel daarin script-triggers uit. Rechtsboven in de debugger heb je 2 knoppen, de rechter is om de dataviewer te (dé)activeren en met de linker kan je alle script-triggers uitschakelen.

Open vervolgens de starter en kijk wat er gebeurt ....

  • opent de starter dan meteen op de juiste lay-out?
  • worden er geen file-references gevraagd? 

Is 'ja' het antwoord op beide vragen, dan weet je zeker dat er geen vervuiling op die lay-out staat én dat er op de juiste lay-out wordt gestart.

  • 0
Posted
Op 3-11-2024 om 13:09, menno zei:
  • opent de starter dan meteen op de juiste lay-out?
  • worden er geen file-references gevraagd? 

Dit is een interessante.

Met de debugger open en script-triggers uitgeschakeld gebeurt er dit:

1 - Ik open de file via de host, debugger staan aan, script-triggers uitgeschakeld.
2 - FileMaker laat nog geen lay-out zien - ik zie wél in het windows menu de file-name 'verborgen' staan, tussen haakjes. Ik kan niet zien welke lay-out dit is, het venster is verborgen en in het menu staat niet de naam van de lay-out.
3 - FileMaker vraagt om de twee external datasources, zegt in het dialoogvenster dat ze niet gevonden zijn en niet geopend kunnen worden. De globals zijn nog niet geladen, dus hij zoekt op de string met de global, niet op het bestandspad wat de global later in het proces in gaat vullen.
4 - Ik klik OK en vervolgens cancel als FileMaker het finder/bestandsscherm laat zien.
5 - De eerste lay-out opent: de SPLASH. De script-triggers staan uit en in de file-info (switch to layout) staat geen lay-out waar FileMaker default heen moet voor deze file. Het lijkt dus gelukt dat de juiste eerste zichtbare lay-out opent - waar het bestand lokaal stand-alone op is gezet door daar een edit te doen en het bestand te verlaten.
Zou hij dan ook deze lay-out gebruiken als hij nog verborgen het bestand opent in stap 2?
6 - Er worden op de eerste layout vervolgens geen file references meer gevraagd. Die lijkt 'schoon'.
 

  • 0
Posted

Wat staat er bij je file-options voor dit bestand? Is daar soms een start lay-oyt opgegeven? FMP begint daarop ondanks dat je de script-debugger gebruikt om triggers te blokkeren.

'(verborgen)' geeft dat weg, omdat de EDS niet wordt gevonden is er ook geen bestandsnaam bekend.

Schermafbeelding2024-11-05om09_29_11.thumb.png.88824deb291fba6320ee7aac2e4720ba.png

Schermafbeelding2024-11-05om09_29_26.thumb.png.d945f8982acb5c3721e79bb38dd28ff6.png

Zorg dat dit verwijst naar jouw 'SPLASH' lay-out en probeer het dan nog eens

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...