Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. hoe importeer je de xml nu? als tekst waarna je de inhoud van de velden haalt uit de tekst, of importeer je de gegevens via een directe import? in dat geval zou je x records moeten krijgen. (in het eerste geval moet je kijken hoeveel records er in de xml staan en per record een nieuw record aanmaken)
  3. Dit doet al meer waar ik naar zoek: Het javascript roept een FileMaker script op, en wacht dan op een reply. Ik had even wat research nodig om dat op een asynchrone manier te doen. In de code staat de timeout op 10 seconden, dus ofwél is het javascript happy omdat het een resultaat terug kreeg, ofwel krijg je een javascript dialoog waarin staat dat het te lang duurde. <html><head> <script> //library var FileMakerWrapper = function() { this._promises = { } ; this._promiseCounter = -1 ; this.performScript = function( script, paramString , callBackFunction ) { this._promiseCounter = this._promiseCounter + 1 ; var promiseID = this._promiseCounter ; var scriptParameters = { id: promiseID, param:paramString } ; try { FileMaker.PerformScript( script, JSON.stringify( scriptParameters ) ) } catch ( e ) { alert ( "Fout: FileMaker.PerformScript() werkte niet." ) } this._promises[ promiseID ] = { callBack: callBackFunction, done: false } ; return promiseID ; } this.checkScriptDone = function( promiseID ) { return this._promises[ promiseID ].done ; } this._resolvePromise = function( promiseID, resultForCallBack ) { this._promises[ promiseID ].done = true ; this._promises[ promiseID ].callBack ( resultForCallBack ) ; } }; try { var fm = new FileMakerWrapper() } catch ( e ) { alert( "FileMakerWrapper kon niet aangemaakt worden." ) ; } function fmcallback( param ) { let scriptResults = JSON.parse( param ); try { fm._resolvePromise( scriptResults.id, scriptResults ) } catch (e) { alert( e ) } } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function waitForScript ( scriptID, timeOut ) { delay = 0 ; incr = 100 ; var done = false while ( ( done == false ) && ( delay < timeOut ) ) { done = fm.checkScriptDone ( scriptID ) ; document.getElementById("poll").value = 'done:' + done + ' ' + delay + ' ms' ; delay = delay + incr ; await sleep ( incr ) ; } if ( ! done ) { alert ( 'timeout waiting for script' ) } ; } </script> <script> //application function SaveRecord() { var scriptID = fm.performScript ( "SAVE RECORD", "", function( SaveResult ) { alert( JSON.stringify( SaveResult ) ) ; document.getElementById("saveResult.msg").value = SaveResult.msg ; document.getElementById("saveResult.error").value = SaveResult.error ; } ) ; waitForScript( scriptID, 10000 ) ; } </script> </head> <body> <div><button onclick="SaveRecord()">Bewaar Record</button></div> <div><input id="saveResult.msg" type="text" value=""</div> <div><input id="saveResult.error" type="text" value=""</div> <div><input id="poll" type="text" value=""</div> </body> callback.fmp12
  4. Today
  5. Dit is een xml gegenereerd vanuit vanuit een Automation Engine Workflow ik zou willen weten hoe je in FM deze blokken in xml(in dit geval 6) kunt opsplitsen naar 6 records, dus ieder blok moet een record worden
  6. Ik zou ook BaseElements gebruiken om de inhoud van die map uit te lezen, en dan voor elke xml een record aanmaken, de xml als tekst inlezen en de gegevens over de velden verdelen, daarna de jpg inlezen. Daarna kun je met BasElements de ingelezen items verwijderen uit de map.
  7. zo te zien is het een xml die vanuit FileMaker komt. Als je die importeert dan krijg je een x aantal records met de gegevens. met get(foundcount) heb je dan het aantal records, of bedoel je wat anders?
  8. ik heb geen idee hoe dit werkt, zijn daar voorbeelden van?
  9. Als er verwijzingen in de xml staan kan je daar gebruik van maken. Ik denk dat je bijvoorbeeld met BaseElements een routine in elkaar kunt knutselen die alle info in de map naar één order record helpt (met onderliggende records).
  10. M.i. Zou dit geen issue hoeven te zijn als je bij de xml import een goede xlst stylesheet hebt om de vertaling te maken.
  11. Goedemorgen, Wie kan mij helpen met een import issue? Er wordt automatisch in een map een xml bestand gezet met een bepaald nummer, maar met dat zelfde nummer worden er ook JPG beelden geplaatst in diezelfde map Hoe kan ik nou regelen met een import actie dat eigenlijk alles met hetzelfde nummer in een record wordt geplaatst, dus zowel de .xml als de .jpg. Ik kan werkelijk niet bedenken hoe ik dit moet inrichten. Alvast bedankt
  12. Ja, alles klopt wat je zegt, maar wat gebeurt er als er een bug in het script is, en het script nooit antwoord? Het script wordt verondersteld klaar te zijn in bijvoorbeeld 3 seconden max. Je merkt voor de 2de keer op dat dit de javascript gerichte manier van werken is. Fijn, maar ik wil wel de webviewer me vertelt dat FileMaker niet teruggekomen is met een antwoord. Dus nog eens ter verduidelijking: script call vanuit de web viewer - > FileMaker wacht op antwoord in web viewer zodra antwoord volgende actie in web viewer, indien geen antwoord, bail out volgende stap in web viewer Mijn doel is niet om asynchroon te programmeren, maar om iets gedaan te krijgen met 100% zekerheid. Als dat kan met asynchroon programmeren, goed. Iedereen happy. Als dat niet kan op een javascript gerichte manier, en er is een "valse pauze" voor nodig, is dat voor mij ook OK, zolang de CPU niet opgevreten wordt in de wacht loop.
  13. Dus werkt bij jou voor een Ewent card reader, al ging het initieel even fout. Inderdaad vreemd. Bedankt voor de test. Ja, die trigger via MBS is een goed idee voor de volgende versie. Spijtig dat het nog niet kan op macOS. Om deze file te doen werken, heb je alleen de MBS plug-in nodig, géén myFMbutler EID plug-in, en géén EID middleware.
  14. er is geen pauze in JavaScript... dat is het hele punt net van asynchroon programmeren: doe dit, als het goed gaat doe dan dat. Daarom dat Promises er zijn gekomen, omdat je dan overzichtelijk kan programmeren zonder in de callback hell terecht te komen. $("GET","/myData") .then ( ( data ) => fm.performScript( "SaveData" , data ) ) .then ( ( fmScriptResult ) => alert( "data has been saved:" + fmScriptResult ) ) .catch ( alert ( "something went wrong" ) ); "data has been saved" zal pas aangeroepen worden als filemaker klaar is met zijn functie. De code "wacht" dus wel om uitgevoerd te worden. Of beter gezegd: de code staat geregistreerd om uitgevoerd te worden, indien filemaker zegt dat alles goed is gegaan en dat de rest mag uitgevoerd worden. Dit lijkt mij de juistere (of in ieder geval meer Javascript gerichte) manier van werken, ipv een valse pause te gaan maken (want je code loopt wel verder, alleen zit die in een continue loop).
  15. Goedmorgen, het is allemaal gelukt met XML's importeren, dit gaat helemaal automatisch en via een applescript zorg ik dat de map wordt geleegd als ik de bestanden heb geïmporteerd. Iedere XML bevat beat eigenlijk een record, maar er worden ook XML gegenereerd waar binnen een Xml meerdere record staan (zie bestand) is er een mogelijk om deze in te lezen en te laten tellen hoeveel (Partversions) erin staan? En aan de hand daarvan voor ieder part daarvan een record met de juiste tevens erin te verwerken? 417568 - 351276_test 2.xml
  16. Shark, Shark, Nice job Andries! Grts, Jan
  17. Yesterday
  18. Hello Peter, I tested this version on ewent reader (keyboard) and no error but only the picture came , no other info In the second click all the data came a little bit strange. It s a good news because no more error. I m gonna try if u are agree to integrated the trigger ? Let me know. Just for info on a new computer we need the mbs plugin + le eid app exe ? or it s embedded in the fmp12 file ?
  19. Dit lijkt me een interessant artikel, dat de verschillende methodes illustreert: https://www.sitepoint.com/delay-sleep-pause-wait/
  20. Maar het is nog niet echt wat ik zoek, hoewel het al heel goed en bruikbaar is natuurlijk. Ik zoek methodes waar het javascript braafjes in standby blijft zolang er een script "hangende" is. Soms is het kritisch dat een script eerst uitgevoerd wordt, vooraleer de webviewer interface terug beschikbaar wordt. Dat gebeurd met deze methodes niet. Dit was mijn oorspronkelijke vraag ( in de andere thread ) : script word opgeroepen met FileMaker.DoScript() code gaat in pause ( met timeout ) en wacht op een variabele die vanuit FileMaker gezet wordt. code gaat verder nadat het resultaat gezet is of timeout bereikt is Laten we het "synchroon" programmeren noemen... en misschien is javascript hier niet zo happy mee, maar zo wil ik het wel.
  21. Ik ben een paar weken geleden begonnen met filemaker. Ik volg daarvoor één op één trainingen. Ondanks die trainingen loop ik ergens vast. Ik heb altijd met MS-Access gewerkt, dus denk ik nog vaak op die manier. Ik heb twee tabellen, waarbij een relatie wordt gelegd. Omdat de app die ik wil bouwen ook in het veld via mijn IPad moet kunnen worden gebruikt, is mij aangeraden om voor het unieke ID veld een berekend veld te maken met de volgende script: Get( UUID ). Dit gebruik ik in mijn tabel Relaties en in mijn tabel Orders. Uiteraard ligt in de tabel Orders de relatie met de tabel Relaties. Om toch een eigen relatienummer te kunnen kiezen heb ik niet alleen het veld RelatieID gemaakt, maar ook het veld Relatienummer en Uiteraard een veld met de Naam van de relatie. Ik wil graag bij het opzoeken van de relatie in de layout Orders de naam van de relatie kunnen intikken als ook het relatienummer, waarbij dan automatisch het betreffende record wordt gevonden. Het aan de record verbonden veld RelatieID wil ik niet zien en of gebruiken in de zoekopdracht en ook niet erna. In mijn layout wil ik dan graag de rest van mijn NAW gegevens zichtbaar krijgen. Ik heb een invoerlijst gemaakt op basis van de tabel Relaties, maar in een invoerlijst kan je maar twee velden selecteren. Ook hier wil niet het RelatieID selecteren, maar Relatienummer en Naam. Wanneer ik dat doe blijven de velden van de NAW gegevens leeg. Tevens is er tegen mij gezegd, dat stel iemand met de Ipad een nieuwe relatie aanmaak en iemand met de PC en ik niet het RelatieID gebruik, ik dan mogelijk bij synchroniseren van de IPad de gegevens aan de verkeerde relatie koppel. In MS_Access gaat dit zeer eenvoudig door een query te maken. Je kan dan in die query ook nog andere velden om mee te sorteren of te filteren toevoegen. Heeft iemand voor mij een oplossing. Ik heb nu nog de proefversie van filemaker. De aanschaf ervan is mede van de mogelijkheden aangaande mijn vraag bepalend. Groeten Frans Kester
  22. Last week
  23. Terug javascript aan het leren nadat ik er jaren nauwelijks naar omgekeken heb. Ik kan mezelf dus weer helemaal een noob voelen Wat voor mij werkt is dat ik de code doorloop en ze probeer aan te passen, zodat ze wat meer doet wat ik wil. Op die manier leer ik hoe de dingen gedaan moeten worden. Resultaat is dat ik iets compacts heb dat maar met 1 callback functie werkt, maar wél alle parameters doorgeeft van het script resultaat. Leek me wat handiger. Wat ik nog niet weet is hoe ik de object array terug opkuis nadat een callback uitgevoerd is. @andries weet jij hoe dat moet? callback.fmp12
  24. Gem

    res protocol

    Hallo Ik heb een tijdje geleden Easybarcode van Jan Stieperaere geintegreerd in een eigen projectje. Dit werkte goed tot ik nu een barcode printer wou aansluiten. Blijkbaar moet er iets veranderd zijn aan mijn Windows 10 instellingen waardoor de inhoud van de webviewer niet meer gelezen kan worden, het is te zeggen het res protocol is onbekend geworden. Ik heb inmiddels mijn java geupdated maar dit brengt geen oplossing. Ook via Google gezocht maar vind niet direct een oplossing. Is er iemand die hier ervaring mee heeft en weet hoe ik het res protocol weer werkende krijg aub? Bedankt alvast.
  25. eigenlijk ging dit vroeger ook al met het hash change trucje dat ik toonde op een fmsummit enkele jaren geleden. Voordeel is dat nu dat hele complexe stuk eruit kan.
  26. Ik vind het fantastisch! Je hebt hier heel wat energie in gestoken Andries, en je verdient een stukje van mijn chocolade Ik denk dat dit iets is waar je ook mee kan uitpakken binnen een paar dagen op de online dotfmp. Jammer genoeg moet ik nu aan de slag voor een klant, maar ik ben heel nieuwsgierig, waarschijnlijk ga ik deze middag eens wat proberen.
  27. dat moet je aan hun vragen, zij spreken over VBS ik denk dat het om VisualBasic script gaat, dus een macro in outlook of zo.
  28. 1997... dat is 23 jaar geleden. Waar blijft de tijd. de meeste mensen klikken denk ik ‘do not register’ of ‘later’. Want waarom zou je ook? Er is geen enkele indicatie dat je daar iets voor terug krijgt. En aangezien dat ongeveer het enige echte contactmoment is, raakt Filemaker die mensen onverbiddellijk kwijt. Dan zou je zeggen: je vult je gegevens toch in bij het bestellen? Ja, maar ook met die gegevens doet FileMaker kennelijk niet zoveel. Of het zijn bedrijfsonderdelen die efficiënt langs elkaar werken en dus de klantgegevens niet delen.
  29. Dat is nu nochtans makkelijker dan vroeger. Tot 1997 werden alle registratie-kaarten manueel ingegeven door de mensen van de technische support.
  1. Load more activity
×
×
  • Create New...