Ga naar inhoud
  • 0

Bug in FileMaker


andries

Vraag

Handig voor de mensen die printen via script.

 

Als je de volgende script step gebruikt:

 

Error Capture [On]
Print Setup [Restore]

 

zal Filemaker geen error code teruggeven, waardoor het onmogelijk is om ze om op te vangen.

 

Een mogelijkheid om dit op te lossen kan doormiddel van:

 

Set Error Capture [ On ] 
...
Print Setup [ Restore; No dialog ] 

#AH This step needs to be here, FileMaker does not return an errorcode if Print[Restore] is on (bug in FileMaker)  -------> 

Print Setup [  ] 

#<----------- 

 

Het is raar... maar waar :-)

Link naar reactie

17 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Met Error Capture On kun je wel degelijk fouten opvangen, namelijk door Get(LastError) te gebruiken.

 

Voorbeeld:

 

Set Error Capture [On]
Print Setup
Set Variable [$LastError; Value:Get(LastError)]
If $LastError = 0
Print [] [No dialog]
End If

 

Groet,

 

Mark

Link naar reactie
  • 0

Ik heb een voorbeeld bestandje toegevoegd, met tweemaal het identieke script.

 

Eenmaal met PrintSetup[restore] en eenmaal met PrintSetup[]. Als je dan op Cancel klikt tijdens de Print Setup van je OS, zul je zien dat in het eerste geval de foutcode gelijk is aan 0, in het tweede geval de foutcode gelijk is aan 1.

 

Persoonlijk vind ik dit raar... en ik weet niet in welke gevallen het nog zo is. Bij Print[] of Print[restore] geeft hij iig wel steeds foutcode 1 indien de gebruiker op Cancel duwt.

Print.fp7

Link naar reactie
  • 0

Dan maar even een beetje theorie.

 

Set Error Capture [On] doet niets meer en niets minder dan de foutmeldingen die Filemaker normaal zichtbaar aan de gebruiker geeft, onzichtbaar maken. De foutcodes die met deze meldingen gemoeid zijn blijven gewoon beschikbaar via Get ( LastError ).

 

Draai de volgende scripts maar eens in elkaar en zie de verschillen...

 

Script 1

Print[]
Show custom dialog[Get ( LastError )]

Script 2

Set Error Capture [On]
Print[]
Show custom dialog[Get ( LastError )]

 

Druk bij uitvoer van beide scripts een keer op OK en een keer op Cancel.

En bij Cancel in script 1 ook nog een keer op Continue.....

 

Restore heeft in dit geval helemaal geen invloed op het resultaat van deze scripts, omdat dat niet meer doet dan de in het script opgeslagen printerinstellingen herstellen en dat is weer een heeeeeeeel ander stukje theorie :wink:

 

Kwestie van IZDHL, naar mijn bescheiden mening

http://www.filemaker.nl/help/Script-Steps14.html

 

rmw

Link naar reactie
  • 0

ik weet wel wat Set Error Capture(On) doet...

 

Het probleem stelt zich als je een script maakt dat er zo uitziet:

 

 

Set Error Capture (On)
...

Print Setup (Restore)
If (Get (LastError) = 0 )
   Print (No Dialog)
End If
....

 

dan zal de gebruiker een mooi scherm zien waar hij zijn print kan opmaken. Stel dat hij dan toch nog wil annuleren en toch op Cancel duwt, dan zou je denken dat door de if statement de print opdracht niet uitgevoerd zou worden (FileMaker zou namelijk een errorcode 1 teruggeven door de cancel). Wel het is dus zo dat FileMaker in bovenstaand geval helemaal geen errorcode teruggeeft, waardoor er dus wel geprint wordt (en wat dus niet zou mogen want de gebruiker heeft op cancel geduwt). Het rare is dat als je dus geen print specificaties meegeeft in de PrintSetup script stap, hij wel een error code 1 geeft.

 

We hebben er hier al met een paar mensen ons hoofd over gebroken, en we denken allemaal dat dit echt een bug is in FileMaker. Ik wou het alleen maar meedelen moesten andere mensen hier ooit eens over vallen.

 

probeer maar eens...

 

Ik heb dit probleem ontdekt door het boek FileMaker 9 Developer Reference door te nemen en op pag 120 staat dit voorbeeld, waarbij ik dus het resultaat 0 kreeg ipv 1, en waardoor ik dus ben beginnen nadenken over dit probleem.

Link naar reactie
  • 0

Andries heeft het probleem maar drie keer hoeven aan kaarten voordat er echt serieus naar zijn opmerking werd gekeken.

 

Vind dit eigenlijk wel een les(je)... in (meer) bescheidenheid, zou ik zeggen.

 

Niet alleen goed gevonden, maar ook geweldig dat het dan ook op het forum gedeeld wordt.

Link naar reactie
  • 0

Even kijken:

 

Je hebt

 

Print Setup (Restore) 

 

dan zeg je:

dan zal de gebruiker een mooi scherm zien waar hij zijn print kan opmaken.

We zitten dus in de 'restore' area.....

 

Dan zeg je:

Stel dat hij dan toch nog wil annuleren en toch op Cancel duwt

De vraag is: Wat Cancel ?

Antwoord: de Restore van de Print Setup

 

Dus is het normaal dat FileMaker print.

Je anuleert een mogelijke verandering van de Setup, niet van het totale Print gebeuren dat je in je script hebt staan.

 

Of niet ?

 

Het loont dus altijd om de Print script als sub-script te gebruiken.

Dan kun je nog altijd een halt script uitvoeren bij het opduiken van een mogelijke 'error' of als resultaat van een If().

Link naar reactie
  • 0
Geplaatst: (aangepast)

graag gedaan. Op zich denk ik dat het nu niet meer hoeft, omdat de Print script stap eigenlijk de functie heeft overgenomen van Print Setup (als je dan toch van plan bent om direct af te drukken) of ben ik hierin mis?

 

en ik moet mss maar eens leren mijn problemen beter te beschrijven... zeker op een forum waar alleen tekst het moet doen :-) (of een smiley)

aangepast door Gast
Link naar reactie
  • 0

voor zij die in brussel wonen: iemand een goed alternatief voor Coditel?? als ik van thuis post, is het steeds dubbel (daarom ook dat dit draadje twee keer begonnen is).

 

Vanaf ik binnen een beveiligde omgeving rondsurf, werkt het gewoon niet, moet ik steeds twee of drie keer klikken voor hij uberhaubt reageert... pfrt

Link naar reactie
  • 0
Je anuleert een mogelijke verandering van de Setup, niet van het totale Print gebeuren dat je in je script hebt staan.

 

Of niet ?

 

Niet mee eens Jean, hoewel ik me doorgaans zeer goed kan vinden in je gedachtenspinsels :wink:

Dat is spijkers op laag water zoeken om FM toch maar gelijk te laten krijgen als je het mij vraagt.

Nu is de FM logica niet gelijk aan die van de doorsnee mens, maar dit vind ik toch wel erg ver gezocht.

 

Als je Print SETUP (dus niet Print zelf, maar de setup) annuleert, dan moet je dat kunnen traceren.

En zoals je hierboven kan zien is dat niet meer mogelijk als je de restore optie aanvinkt.

 

Ik voor mij heb de Restore optie altijd gezien als een service aan de gebruiker: als ontwikkelaar denk je de gebruiker een handje te helpen door alvast een Print Setup voor te stellen. Het is aan de gebruiker om die te gebruiken of niet, maar de Print Setup annuleren geeft volgens mij aan dat je geen Setup wilt instellen en dat moet je kunnen afvangen.

 

Ik heb het in elk geval als probleem bij FM gemeld....

http://www.filemaker.com/company/problems.html

 

rmw

Link naar reactie
  • 0

FileMaker is nochtans duidelijk in de beschrijving:

 

Sets Print Setup options, such as paper size and orientation, which can be stored with this script step. You can also have the step performed with a dialog box so the user can specify print options at runtime. You can use multiple Print Setup script steps within a script.

 

Het gaat dus enkel en alleen over de scriptstap Print Setup.

En het is die die je annuleert.

 

Dat is dan ook de reden waarom ik de eigenlijke Print script altijd als sub-script gebruik.

 

Als je de Setup script stap afzonderlijk zet kun je de Print nog afvangen.

Zet je de Set-up EN de Print in eenzelfde script, gaat dat script gewoon door en zal er toch geprint worden, zelfs indien je de Set-up zou annuleren.

 

Je geeft inderdaad de gebruiker de kans al of niet een Set-up uit voeren.

Doet hij een set-up dan zal die in de script stap opgeslagen worden, en dan zal er geprint worden.

 

Annuleert de gebruiker de script stap, dan wordt er niks verandert, en zal er geprint worden....

 

Je wil als ontwikkelaar beletten dat er geprint wordt wanneer je een set-up zou annuleren. Dus moet je de eigenlike print stap buiten je lopende script zetten en conditioneel aanroepen.

 

En dan nog: wie zegt dat als ik een Set-up annuleer ik tegelijkertijd ook de Print opdracht wil annuleren ?

 

Het zijn en blijven twee afzonderlijke scriptstappen.

Het is niet omdat je de ene annuleert dat je daarom tegelijkertijd ook de andere wilt annuleren.

Indien dat je opzet is, moet je dat ook expliciet duidelijk maken dat je TWEE scriptstappen wilt annuleren.

Link naar reactie
  • 0

daarin heb je volledig gelijk. het enige is dat ik dacht dat als een gebruiker eender wat ooit zou annuleren, dit tot een errorcode in Filemaker zou moeten leiden. Ze gebruiken dit als een voorbeeld in het boek om net de Get ( LastError ) te testen, en blijkt dat het dus niet zo is.

 

maar je hebt idd gelijk dat het annuleren van een print script stap steeds apart moet opgevangen worden, en niet de eigenlijke PrintSetup.

Link naar reactie
  • 0

Dag Andries - Welkom hier

Oorzaak van het misverstand zit hierin dat er in feite steeds drie spelers op het veld (je bureau) staan: de computer, zijn besturingssysteem en de gebruikssoftware (hier FileMaker).

Al wat FileMaker doet, wordt uitgevoerd door de computer. Hoe die weet wat ie moet doen, dankt hij aan de info die het besturingssysteem doorgeeft nadat het die gekregen heeft van FileMaker.

Zo kan FileMaker interne dialoogpanelen tonen (waar FileMaker dan zelf verantwoordelijk voor is) maar FileMaker kan ook opdrachten geven aan het besturingssysteem dat die opdrachten dan weer kan beantwoorden met een dialoogpaneel afkomstig van Windows of van het Mac OS. FileMaker heeft hier niet echt vat op. Typisch hier is bijvoorbeeld de communicatie met peripherals, zoals een printer. Het doorgeven van Print Setup info is zo'n geval. Als FileMaker die moet tonen, dan wordt dat geactiveerd vanuit het besturingssysteem. Klikt de gebruiker dan op Cancel, dan is dat niet een melding aan FileMaker, maar aan het besturingssysteem. Het hangt er dan allemaal van af of en hoe het besturingssysteem dit afhandelt en eventueel meldt aan de software. Pas als dat zou gebeurd zijn, kan FileMaker daar een errorcode aan vasthangen.

Link naar reactie
  • 0

He AdV, bedankt voor de verwelkoming ;-)

 

In principe gaat het hem helemaal niet om de script stap PrintSetup, maar wel met de verschillende opties die je kan meegeven met die script stap. namelijk dat het al dan niet meegeven van specificaties leidt tot een ander resultaat indien men Get ( LastError ) gebruikt.

 

Wat is dan voor het OS het wezenlijke verschil dat wij specificaties meegeven of niet, want in het geval van:

 

scenario 1

PrintSetup [] wordt er wel een errorcode teruggegeven

 

en in het geval van

 

scenario 2

PrintSetup[Restore] wordt er geen errorcode teruggegeven.

 

 

In principe geven we dus aan het OS door dat we een print setup willen doen, in het eerste geval geven we specificaties mee, in het tweede geval geven we geen specificaties mee en laten we alles aan de gebruiker over. Dus de communicatie van FileMaker naar het OS loopt goed.

 

Volgens u ligt het probleem hem dus in de terugcommunicatie van het OS naar FileMaker... en ik zie geen rede waarom het OS een verschil zou maken tussen het eerste en het tweede scenario om al dan niet een "error" naar FM terug te sturen.

 

 

maar goed, ik wou dit gewoon even meegeven aan jullie, dat je hier voor moet opletten.

 

en zoals Jean al zei: het is gewoon slimmer om je print script anders te scripten.

Link naar reactie
  • 0
(...)in het eerste geval geven we specificaties mee, in het tweede geval geven we geen specificaties mee en laten we alles aan de gebruiker over. Dus de communicatie van FileMaker naar het OS loopt goed.

 

Het is andersom, dacht ik, met dat eerste en tweede geval. Afgezien daarvan is je conclusie dat de communicatie goed loopt voorbarig. Er staat hier ergens op het forum uitgelegd dat een Print Restore een moeilijk ding is, omdat het volledig afhankelijk is van de kwaliteit van de printer driver (dus of die de mogelijkheid biedt alle instelbare parameters te restoren: bij de ene printer lukt dat goed, bij de andere niet). Soms los je het op door de meest recente versie te installeren. Soms helpt niks.

Link naar reactie
  • 0
(...)in het eerste geval geven we specificaties mee, in het tweede geval geven we geen specificaties mee en laten we alles aan de gebruiker over. Dus de communicatie van FileMaker naar het OS loopt goed.

 

Het is andersom, dacht ik, met dat eerste en tweede geval. Afgezien daarvan is je conclusie dat de communicatie goed loopt voorbarig. Er staat hier ergens op het forum uitgelegd dat een Print Restore een moeilijk ding is, omdat het volledig afhankelijk is van de kwaliteit van de printer driver (dus of die de mogelijkheid biedt alle instelbare parameters te restoren: bij de ene printer lukt dat goed, bij de andere niet). Soms los je het op door de meest recente versie te installeren. Soms helpt niks.

 

 

oeps... :oops:

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...