Jump to content
  • 0

Bewaarpad ingeefbaar in voorkeuren?


Gido_

Question

Posted (edited)

Is het zo dat je in FM7 de gebruiker nog steeds niet volledig zelf een bewaarpad kan laten ingeven als voorkeur? (verbonden aan een "Bewaar backup"-knop bv.)

 

Maw, dat je je nog steeds moet behelpen met eventueel een paar voorafbepaalde keuzes, of de gebruiker zijn pad elke keer moet intypen.

Edited by Guest

13 answers to this question

Recommended Posts

  • 0
Posted

Dat gaat zeker weer met één of andere sinistere Windows component? :lol:

Dan moet daarvoor ook weer een pad ingesteld worden, want niet iedereen heeft zijn systeem op c:\ staan :wink:

 

Ben benieuwd of ik verder hints ga opvangen... :wink: Voorlopig "valt" hij nog niet, maar ik heb er ook nog niet over geslapen :wink:

Toch al bedankt voor de hoop :D

  • 0
Posted

Wat je moet doen is het volgende:

- maak een "save a copy" script stap, en duidt "c:\windows\temp" aan als je pad, vergewis je ervan dat de checkbox voor een relatieve referentie af staat. Test deze script stap even, door eerst even via je "open file" dialoog box ergens anders een file te openen, en dan terug naar je werkfile te gaan en het script te runnen. Staat je backup in "c:\windows\temp" ? Dan kan je verder.

- maak een batch file aan. Da's een file met ".bat" of ".cmd" als extensie. Daarin geef je de dos instructie om het bestand te kopiëren, bjvoorbeeld "copy c:\windows\temp\mijnbackup.fp7 d:\data\backups\20050717.fp7". Zet deze ook op een vast plekje.

- zoals Arnoud juist opmerkte kan je nu met de "send event" script stap je batch file gaan opstarten. Die zet je dus achter je "save a copy" script stap.

 

Wil je een backup maken met een variabele naam? No problemo. Maak een globals tabel in je file met 1 record. Maak daar een global field "export_cmd" aan. In je script exporteer je dat veld naar je batch file (gebruik tab text als formaat, maar zet de extensie op .bat) . Ook weer een goed idee om deze nu ook weeral in "c:\window\temp\" te gaan zetten. En je stuurt dan de send event naar dat bestandje. De naam is vast, de inhoud is echter variabel. Het export_cmd veldje vul je met een calculatie:

"copy c:\windows\temp\mijnbackup.fp7 d:\data\backups\" & Year ( Get ( CurrentDate ) ) & Right ( "0" & Month ( Get ( CurrentDate ) ) ; 2 ) & Right ( "0" & Day ( Get ( CurrentDate ) ) ; 2 ) * ".fp7"

Wat betreft de locatie van "windows\temp" - daar is de methode "bruut met de schouders" misschien wel geschikt voor. Doe gewoon de export naar "c:\windows\temp", en kijk je error na met Get ( LastError ). Gezien de export instructie geen directories kan aanmaken, zal ze immers niet kunnen exporteren als het pad niet correct is (hoop ik toch).

Krijg je een error, probeer je hetzelfde kunstje met de D schijf... ik zie niet direct iemand zijn windows op de Z schijf zetten dus, je kan na drive E wel een defintieve foutmelding geven denk ik.

 

Als je geen foutmelding krijgt (wat ik me kan voorstellen) probeer dan eerst je batch file in die directory te exporteren, en lees hem terug in van die locatie in een test tabel. Heb je een error, dan heeft FileMaker hem niet daar geexporteerd, dus kan je je volgende pad proberen.

  • 0
Posted
Wat je moet doen is het volgende:

- maak een "save a copy" script stap, en duidt "c:\windows\temp" aan als je pad, vergewis je ervan dat de checkbox voor een relatieve referentie af staat. Test deze script stap even, door eerst even via je "open file" dialoog box ergens anders een file te openen, en dan terug naar je werkfile te gaan en het script te runnen. Staat je backup in "c:\windows\temp" ? Dan kan je verder.

- maak een batch file aan. Da's een file met ".bat" of ".cmd" als extensie. Daarin geef je de dos instructie om het bestand te kopiëren, bjvoorbeeld "copy c:\windows\temp\mijnbackup.fp7 d:\data\backups\20050717.fp7". Zet deze ook op een vast plekje.

- zoals Arnoud juist opmerkte kan je nu met de "send event" script stap je batch file gaan opstarten. Die zet je dus achter je "save a copy" script stap.

 

Wil je een backup maken met een variabele naam? No problemo. Maak een globals tabel in je file met 1 record. Maak daar een global field "export_cmd" aan. In je script exporteer je dat veld naar je batch file (gebruik tab text als formaat, maar zet de extensie op .bat) . Ook weer een goed idee om deze nu ook weeral in "c:\window\temp" te gaan zetten. En je stuurt dan de send event naar dat bestandje. De naam is vast, de inhoud is echter variabel. Het export_cmd veldje vul je met een calculatie:

"copy c:\windows\temp\mijnbackup.fp7 d:\data\backups" & Year ( Get ( CurrentDate ) ) & Right ( "0" & Month ( Get ( CurrentDate ) ) ; 2 ) & Right ( "0" & Day ( Get ( CurrentDate ) ) ; 2 ) * ".fp7"

Wat betreft de locatie van "windows\temp" - daar is de methode "bruut met de schouders" misschien wel geschikt voor. Doe gewoon de export naar "c:\windows\temp", en kijk je error na met Get ( LastError ). Gezien de export instructie geen directories kan aanmaken, zal ze immers niet kunnen exporteren als het pad niet correct is (hoop ik toch).

Krijg je een error, probeer je hetzelfde kunstje met de D schijf... ik zie niet direct iemand zijn windows op de Z schijf zetten dus, je kan na drive E wel een defintieve foutmelding geven denk ik.

 

Als je geen foutmelding krijgt (wat ik me kan voorstellen) probeer dan eerst je batch file in die directory te exporteren, en lees hem terug in van die locatie in een test tabel. Heb je een error, dan heeft FileMaker hem niet daar geexporteerd, dus kan je je volgende pad proberen.

Wat een verhaal Peter....

Een apart bestandje voor je global, een fieldexport, een batch file, mogelijke exporteer problemen...

Volgens mij maak je het te ingewikkeld en sterker nog het zal (afgezien van een typefoutje) denk ik niet gaan werken. Die bach file die je maakt bevat namelijk FMP (datum etc.) code en daar kan Windows weinig mee.

Of mis ik hier iets?

 

Je kunt het, zoals ik ook bedoelde, ook oplossen met een Send Event zonder batch file en een aparte tabel lijkt me overbodig.

 

Dit ingevuld in de Send Event textbox geeft een statisch pad:

RunDLL32 shell32.dll,ShellExec_RunDLL cmd.exe /Q /C copy c:\windows\temp\fmbackup.fp7 d:\backup\fmbu1.fp7

Wil je een dynamisch pad dan stop je de volgende code in de calculatiebox van de Send Event:

 
Opslaan::gPad  &
Opslaan::gBestandsNaamVar &
"_" &
Year ( Get ( CurrentDate ) ) & 
Right ( "0" & Month ( Get ( CurrentDate ) ) ; 2 ) & 
Right ( "0" & Day ( Get ( CurrentDate ) ) ; 2 ) &
".fp7"

gPad bevat het eerste deel van de code:

gPad: RunDLL32 shell32.dll,ShellExec_RunDLL cmd.exe /Q /C copy c:\windows\temp\fmbackup.fp7 d:\data\backups\

gBestandsNaamVar bevat een variable bestandsnaam:

gBestandsNaamVar: Arnoud

 

Het bestand wordt opgeslagen als: Arnoud_20050717.fp7

"Opslaan" is mijn tabelnaam.

Het bestandsnaam hulpveld is niet strikt noodzakelijk, maar het eerste veld zu ik wel maken. Ik kreeg namelijk problemen om de code rechtstreeks als text in de calculatie op te nemen (missende quotes??: Zou FMP de weg kwijt zijn door de vele slashes?).

En wat let je om FileMaker zelf de directories te laten maken, wederom met een SendEvent, hetzij (bij voorkeur eenmalig in een initialisatiescript) of voorafgaand aan de backup.

Op fouten checken kan zoals Peter zegt natuurlijk geen kwaad.

 

Directory maken met een Send Event in de textbox:

RunDLL32 shell32.dll,ShellExec_RunDLL cmd.exe /Q /C md d:\data\backups

Pas als het met FMP niet mogelijk is dan gebruik ik batch files, AutoIt, PowerPro en plugins etc., maar hier hoeft dat dus niet.

 

gr.

 

Arnoud

  • 0
Posted

Het verhaal is lang om de zaak duidelijk te houden. Jij kan er anders ook wel wat van Arnoud... :wink:

De verbeterng die je nog aanbrengt een goed idee. Via die rundll32 syntax (die ik altijd vergeet) kan je op windows parameters doorgeven, wat je niet kan met een standaard "send event". De methode die ik voorstelde gebruikt deze syntax niet, en moet daardoor een batch file aanroepen, die ook nog een keer moet samengesteld worden - door een export.

Een nog andere methode - die nog korter is (jawel het kan) is met de gratis shell plugin.

Het voordeel dat die biedt, is dat je feedback krijgt van het commando dat je in dos geeft. Ons beider voorbeelden zijn eigenlijk moeilijk qua error trapping, de rundll32 methode geeft ook geen reply - omdat de "send event" script instructie dat niet doet.

Nog een andere methode is de Tro File plugin gebruiken - maar die kost geld.

  • 0
Posted
De methode die ik voorstelde gebruikt deze syntax niet, en moet daardoor een batch file aanroepen, die ook nog een keer moet samengesteld worden - door een export.

Er zijn inderdaad meerdere wegen die naar Rome leiden en die shell plugin is geweldig!

Jouw formule moet (inderdaad) in een calculatie staan en niet in een tekstveld, zag ik even niet.

Het voordeel van de batch file methode is dat je dan ook nog allerlei directories mee kan aanmaken, zonder dat je problemen krijgt met elkaar opvolgende send events.

 

gr.

 

Arnoud

  • 0
Posted
ik zie niet direct iemand zijn windows op de Z schijf zetten dus, je kan na drive E wel een defintieve foutmelding geven denk ik.

In de professionele wereld misschien... :wink: Ikzelf heb systemen van c tem g :lol: (er zijn wel wat andere apparaten tussengekropen, wat ook al niet professioneel is :oops:)

 

Wat het bewaren naar c:\windows\temp betreft zie ik liever gewoon bloot op de root gebeuren; gezien je de file dan toch gaat verplaatsen, waarom niet?

 

Vooral ook omdat de hele clou liefst is om backups te hebben op fysiek verschillende schijven (of partities). Je kan dan toch al enige voorkeuze geven wat betreft schijfnaam waar de nog niet hernoemde backup naartoe moet (op schijf e zit dan bv geen windows\temp; en ja, op c kan je'm dan evengoed in de temp steken, dat wel).

Deze voorkeuze lijkt mij het slimst, omdat je anders potentieel teveel tijd kan gaan verliezen. Stel dat de gebruiker schijf d kiest, dan zou een heel grote file altijd nog eens verplaatst moeten worden van windows\temp naar d. Het is dan beter dat hij al op de juiste partitie/schijf staat, voor veel snellere "verplaatsing". Zoiets is wel te arrangeren, denk ik.

 

Bedankt alvast voor de "tricks of the trade" die ik één van ga uitproberen 8)

  • 0
Posted
Dit ingevuld in de Send Event textbox geeft een statisch pad:

RunDLL32 shell32.dll,ShellExec_RunDLL cmd.exe /Q /C copy c:\windows\temp\fmbackup.fp7 d:\backup\fmbu1.fp7

"Meer moet dat niet zijn..." 8)

Of toch...

 

1) Hoe delete ik een file? (nu snap ik waarom de windows\temp wel interessant is... :lol:)

 

2) De file wordt blijkbaar niet verplaatst, maar gekopieerd. Zodoende blijf je wel zitten met de kopieervertraging bij heel grote files (om nog te zwijgen van schijfruimte die eventje "dubbel moet zijn")... Kan écht verplaatsen/hernoemen ook?

  • 0
Posted
Dit ingevuld in de Send Event textbox geeft een statisch pad:

RunDLL32 shell32.dll,ShellExec_RunDLL cmd.exe /Q /C copy c:\windows\temp\fmbackup.fp7 d:\backup\fmbu1.fp7

"Meer moet dat niet zijn..." 8)

Of toch...

 

1) Hoe delete ik een file? (nu snap ik waarom de windows\temp wel interessant is... :lol:)

 

2) De file wordt blijkbaar niet verplaatst, maar gekopieerd. Zodoende blijf je wel zitten met de kopieervertraging bij heel grote files (om nog te zwijgen van schijfruimte die eventje "dubbel moet zijn")... Kan écht verplaatsen/hernoemen ook?

 

Ad1: Inderdaad er staat COPY in de code.

"copy c:\........." is een windows cmd.

deleten kan dus ook: DEL

Ad2: MOVE en REN

Eerlijk gezegd vraag ik me af of Windows intern bij het verplaatsen

ook niet een copy-del gebruikt, dus of dat wat uitmaakt?

 

Tip1: gebruik de cmd line / opdrachtprompt om je code uit te testen

voordat je die in een send event stopt.

Win XP CMD's:

http://www.ss64.com/nt/

 

Tip2: vermijd meerdere (''zware") send events achter elkaar, gebruik

dan liever Shell plugin, AutoIt, een BatchFile of Troi File Plugin.

  • 0
Posted
Wat het bewaren naar c:\windows\temp betreft zie ik liever gewoon bloot op de root gebeuren; gezien je de file dan toch gaat verplaatsen, waarom niet?
Zolang de root dir voldoende privileges heeft is dat OK, maar ben je daar altijd wel zeker van - ook op een terminal server? - de c:\windows\temp moet altijd scrhijfbaar zijn, kan ni anders.
  • 0
Posted

Aha..., wijze pro-info :wink: Bedankt.

 

Eerlijk gezegd vraag ik me af of Windows intern bij het verplaatsen

ook niet een copy-del gebruikt, dus of dat wat uitmaakt?

Het zou toch maar erg zijn :lol: Dus ik hoop van niet.

 

Heb gemerkt dat ingave van OS-schijfletter ook noodzakelijk is, want die cmd's nemen niet automatisch het actieve OS.

 

De Send Event-delete wordt dan:

"cmd /" & OS_diskLetter & " del c:\tempBackup.fp7"

en dat werkt goed.

Ik laat momenteel een check doen op de schijfletter van de padvoorkeur en ga op die schijf dan de tempBackup zetten en hernoemen/verplaatsen/deleten.

 

Rest mij nog de beste (Shell plugin) oplossing te bestuderen.

 

Zijn het daarbij vooral deze 2 voordelen...?

 

1) dat deze automatisch "weet" wanneer bv een kopieerbewerking voltooid is, en daarna pas een volgende event uitvoert? (terwijl opeenvolgende Send Events dat *niet* weten?) Of moet je daar zelf op controleren via zijn feedback?

2) dat je van die plugin desgewenst feedback kan evalueren

  • 0
Posted
Rest mij nog de beste (Shell plugin) oplossing te bestuderen.

 

Zijn het daarbij vooral deze 2 voordelen...?

 

1) dat deze automatisch "weet" wanneer bv een kopieerbewerking voltooid is, en daarna pas een volgende event uitvoert? (terwijl opeenvolgende Send Events dat *niet* weten?) Of moet je daar zelf op controleren via zijn feedback?

2) dat je van die plugin desgewenst feedback kan evalueren

Yep, wat mij betreft allebei 'just'.

Probeer maar eens 10 send events, 10 bestandjes te laten kopieren, dan ga je vast stellen dat het OS soms een file overslaat.Het besturingsysteem wordt a.h.w. gebombardeerd met opdrachten.

  • 0
Posted
Ik laat momenteel een check doen op de schijfletter van de padvoorkeur en ga op die schijf dan de tempBackup zetten en hernoemen/verplaatsen/deleten.

Dit lijkt mij ook belangrijk voor "een bepaald soort van minder professionele gebruikers" wiens schijven altijd zo goed als vol staan. Zij selecteren dan speciaal hun enige schijf met nog wat plaats op voor de backup en wensen dus niet dat die eerst naar windows/temp wordt geschreven, omdat ze weten dat er daar gewoon geen plaats meer voor is. Vooral bij heel grote files toch belangrijk, denk ik.

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