28. maj 2009 - 07:38Der er
4 kommentarer og 2 løsninger
xport af ID fra 5.5
Jeg er igang med at skulle oprette et export fra en filemaker version 5.5 som ikke skal opdateres. Export går fint vil csv som det skal blot mangler jeg at få ID med. Det skal være det ID fieldname som ligger i filemaker. Er der nogle som kan sige hvordan man kan gøre så det kan vælges med over til export?
Jeg læser dit spørgsmål sådan, at du vil lave et script, der laver eksporten så du får de samme felter med over hver gang.
Eksport er lidt kringlet fra FileMaker før version 7. Du skal starte med at lave eksporten som du gerne vil have den dvs. gå i File > Export Records..., vælge eksportformat og filnavn og vælge de felter, der skal med (her dobbeltklikker du på felterne i listen i venstre side af dialogboksen så de hopper over på højre side)
Herefter laver du dit script og trækker det script-step ind, der hedder Export Records og sørger for, at Restore Export Order er afkrydset. Når du herefter kører scriptet, vil det foreslå de felter, du før udpegede.
Hvis du vil ændre på de felter, der indgår i eksporten, laver du først en ny manuel eksport. Herefter går du ind i redigering af dit eksport-script og trykker OK - FileMaker advarer om, at visse ændringer er ændret siden sidst, og beder dig beslutte, om de arkiverede ændringer skal bevares, eller om de skal opdateres. Vælg "Replace" ud for Export Order, og så er den opdateret.
I FileMaker 7 og nyere kan du direkte i scriptet ændre eksportindstillinger, sorteringsindstillinger mv.
Jeg har prøvet det du skriver, men jeg kan ikke se hvordan jeg kan få exporteret ID på record, altså det nummer med ud. Der er ikke noget som hedder ID, det field findes ikke. Kan kan ikke få et nummer med ud.
Det ville være rart hvis det var muligt på en eller anden måde at tilføje et indeks og køre en query igennem, men jeg er altså ikke sikker på om der overhovedet er noget sådant.
Så misforstod jeg dit spørgsmål - jeg troede, du allerede havde ID-feltet i din database. FileMakers interne ID.
FileMaker opretter et internt ID, som du kan få frem hvis du opretter et nyt felt af typen calculation. I beregningen indtaster du udtrykket Status (CurrentRecordID) - så får du det interne ID med ud. Ulempen ved dette ID er, at du ikke kan ændre på det - det tildeles automatisk og starter ved 1.
Hvis du har planer om at bruge dette ID til noget internt, vil jeg i stedet anbefale at du opretter et felt til dette. Lad det være af typen Number og gå i Options for feltet. Her kan du indstille FileMaker til automatisk at udfylde det med set løbenummer (vælg Serial Number). Hvis du allerede har oprettet poster, som skal have tildelt ID efterfølgende, kan du vise alle poster, klikke ind i feltet og vælge Records > Replace Contents.. og så herfra vælge at udfylde med serienummeret.
Vi kommer nærmere :) Beklager hvis jeg fik beskrevet det lidt uklart.
mht. CurrentRecordID Den melder "This field can not be found"
Jeg prøvede følgende:
Fra Navigationsrubrikken dobbelt-klikkes: Go to Record/Request/Page Fra Controlrubrikken dobbelt-klikkes: Loop Fra Fieldsrubrikken dobbelt-klikkes: Set Field Herunder redigeres: Script Step Options Specify target: vælg record_id og klik OK Calculated result: skriv (uden citationstegn): "Getfield(ID)" og klik OK Fra Navigationrubrikken dobbelt-klikkes: Go to Record/Request/Page Herunder redigeres: Specify: select Next Kryds i Exit after last
Men feltet record_id er stadigt tomt, det er nok pga. at ID også er det.... :O)
I stedet for scriptet kan du benytte finde de poster, du skal have sat ID ind på (det er jo dem alle, så en Records > Show All Records er nok det letteste). Dernæst klikker du i feltet record_id (som er dit nye ID-felt går jeg ud fra) og vælger Records > Replace Contents og vælge Replace with calculated result. Nu klikker du Specify og taster (uden anførselstegnene) "Status( CurrentRecordID )". Klik OK og klik herefter Replace.
Du kan også rette dit script så at du i dit Calculated result skriver Status( CurrentRecordID ) - det vil også virke, men et script er ikke strengt nødvendigt.
Ingen af disse metoder sikrer at du får en fortløbende ID på nye poster - der skal du ind i dit nye record_id-felt (File > Define FIelds, klik på record_id og klik Options... I fanen Auto Enter afkrydser du Serial Number og sætter Next value så den er 1 over den største værdi, der står i feltet på nogen post lige nu. Du kan vælge at sætte supplerende krav nu du er i Define Fields alligevel - fx Prohibit modification of value, Not Empty og Unique.
GetField-funktionen kan du ikke bruge her - den er beregnet til at tage værdien af et felt (dvs. feltindholdet), men dit problem er jo, at du ikke har nogen værdi at tage..
- André
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.