Välkommen Gäst. Var snäll och logga in eller registrera dig som ny medlem.
Har du inte fått ditt aktiveringsbrev?
20 Maj, 2012, 20:35

Sidor: [1]
  Skriv ut  
Författare Ämne: Fylla ut längd specifika fält.  (läst 242 gånger)
0 Medlemmar och 2 gäster tittar på detta ämne.
Diquito
Flitig postare

Antal inlägg: 134



Visa profil
« skrivet: 5 December, 2011, 13:57 »

Hejsan.

Jag vill göra ett script som kollar varje fält i en tabell och dess konfigurerade längd och jämför denna med den riktiga längden i fältet och fyller ut denna med mellan slag.

Ex:
Fält 1 är konfigurerad att den får max innehålla 10 tecken.
Fältet innehåller värdet "test" = 4 tecken
Scriptet ska i princip fylla ut det resterande 6 tecken med " "

Jag har letat som den men inte hittat hur man får fram MAX antal tecken i ett skript?

Nån som vet?

mvh
      ///David
Loggat

FileMaker Pro Advanced 11
Windows XP SP2
mvRobert
Gäst
« Svara #1 skrivet: 5 December, 2011, 14:31 »

Jag hänger inte med om det är max antal tecken i fältdefinitionen du vill läsa av eller om du undrar hur du begränsar antalet tecken som du fyller ut med?

Jag känner inte till att det går att läsa av fältdefinitionens max-värde men du kan läsa av kommentaren för fältet med designfunktionen FieldComment ( databas ; fält ). Om du skriver in max-värdet där så har du en lösning.

När det gäller att fylla ut så löser du det t ex så här:
Kodstycke:
1 Let(
2 mellanslag = "                                      ";
3 Left(Falt & mellanslag;10)
4 )
Loggat
Diquito
Flitig postare

Antal inlägg: 134



Visa profil
« Svara #2 skrivet: 5 December, 2011, 14:52 »

det är ju precis det jag vill ha ut.. den definierade max-längden...

Jag har en tabell med 130 kolumner som jag i så fall måste lägga till fält värdet i kommentars fältet..  Va?

Känns lite onödig när man definierat denna redan..

Men om det inte finns nån annan lösning så måste man väl..

Tack för snabbt svar.

///David
Loggat

FileMaker Pro Advanced 11
Windows XP SP2
David Wikström
Flitig postare

Antal inlägg: 342



Visa profil Hemsida
« Svara #3 skrivet: 5 December, 2011, 15:52 »

Du kan ju alltid köra en DDR och importera den till en referens-tabell, och sedan ha en formel som get dig antalet repetitioner. Måste förstås uppdateras, men kanske ändå bättre än att knappa manuellt... Beror på.

Varför vill du lägga till mellanslag i fältvärdena, förresten? Kanske kan man lösa ditt grundproblem på ett annat sätt?

Loggat

David Wikström
FileMaker 11/10/9/8 Certified Developer
FBA Member
FBA Trainer
Diquito
Flitig postare

Antal inlägg: 134



Visa profil
« Svara #4 skrivet: 5 December, 2011, 16:04 »

Jag vill egentligen inte spendera för mycket tid på att fixa det här..

Men huvud orsaken är att jag har bygg ett verktyg som laddar ner ett extrakt på ca 130 kolumner och som formaterar och kontrollerar data för att sedan skapa en tab separerat file som vi använder för att testa ett interface som uppdaterar en SAP material master modul.

I normala fall skickar meddelandena via MQ series som en "fast fält längds sträng"  Glad och för att skapa en test fil för detta så måste jag fylla i fälten med mellanslag.

///David
Loggat

FileMaker Pro Advanced 11
Windows XP SP2
David Wikström
Flitig postare

Antal inlägg: 342



Visa profil Hemsida
« Svara #5 skrivet: 5 December, 2011, 16:18 »

OK, det var det jag misstänkte. Jag brukar i liknande fall själv inte använda FileMakers inbyggda exportfunktion utan istället lagra data i variabler som jag formaterar mha en custom functions som lägger till mellanslag. Sedan lagrar jag variabelns värde temporärt i ett globalt fält dom sedan exportas via Export field contents. Men rätt längd måste du ändå mata in manuellt - jag tycker bara det är bekvämare/elegantare att göra detta i ett manus eller en custom function...
Loggat

David Wikström
FileMaker 11/10/9/8 Certified Developer
FBA Member
FBA Trainer
Diquito
Flitig postare

Antal inlägg: 134



Visa profil
« Svara #6 skrivet: 5 December, 2011, 17:49 »

Precis vad jag vill åstadkomma. Men att automatisk får fält längden verkar inte vara en lätt sak.. men som vmRobert skrev får jag använda fält kommentaren för att försöka fixa detta.... vi får se hur mycket tid jag lägger på det  Glad

///D
Loggat

FileMaker Pro Advanced 11
Windows XP SP2
majo
Nykomling

Antal inlägg: 30


Visa profil
« Svara #7 skrivet: 6 December, 2011, 11:32 »

Precis vad jag vill åstadkomma. Men att automatisk får fält längden verkar inte vara en lätt sak.. men som vmRobert skrev får jag använda fält kommentaren för att försöka fixa detta.... vi får se hur mycket tid jag lägger på det  Glad

///D

Jag tänkte på en lösning som fungerar, men kanske är lite bökig:
När fältet med begränsningen är tomt, låt en loop skriva tecken, räkna varven i loopen med en variabel och kolla varje varv om senaste fel är 511 (och kliv då ur loopen). Begränsningen för fältet (minus 1) finns då i variabeln.

Kodstycke:
1 Loop
2 Ange variabel $count;$count+1
3 Tilldela fält "test"; "test" & "x"
4 Exit Loop If Get(SenasteFel)="511"
5 End Loop
6 Ange variabel $count;0
7 

Sedan är det bara att tilldela fältet test det värde det ska ha plus att loopa fram ett antal blanksteg baserat på ($count-1) som då är fältets maxvärde. Bygger på att maxvärde för fältet alltid kontrolleras, inte bara vid inmatning. Och så loopa dig igenom alla fälten på samma vis.

Som sagt, fungerar bra, men kanske lite för omständigt?
« Senast ändrad: 6 December, 2011, 11:54 av majo » Loggat
Sidor: [1]
  Skriv ut  
 
Gå till: