Jeg har lavet et "samlefelt" der samler dataene fra flere Repetitions felter. Feltet virker som det skal, men når feltet CSV eksporteres får jeg desværre også linieskift fra tomme felter med.
Kan jeg lave et "kopi-felt" heraf, der er stripped for disse "tomme" linieskift.
Mit felt calc ser således ud:
Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 3 )& ":"&"default")&¶& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 4 ))
og resultatet ser sådan ud: Almindelig::5.75:default m/smør:+4:9.75: m/smør og ost:+7:12.75:
- her er der er blot et linieskift for meget til sidst. Hvis alle "optionfields" er tomme får jeg eksporteret 4 linieskift for meget.
De fire repeterende felter samles sammen i t1, t2, t3 og t4. Vi har altid et linjeskift for meget, og det fjerner vi blot til sidst ved at eksportere alle tegn bortset fra ét.
Kan den beregning bruges? Ellers kan du kombinere dine oprindelige beregninger med mine t1, .. , t4 så du i stedet for at sammenligne IsEmpty sammenligner med ":::" (dvs. tre kolonner uden noget at adskille).
De manglende afsluttende kolonner klarer du let: Hvis du retter definitionen af eksport til nedenstående, så er der også kolonner i slutningen af linjen:
Begge disse calc'er laver et korrect resultat i filemaker, blot er sidste afslutning tilsyneladende ikke korrekt når de bliver importerede i mySql. PS. det er vigtigt at der bliver checket om første felt er tomt i hver linie. Hvis tomt: SKAL hele linien være tom. Hvis IKKE tom: SKAL der være kolon OGSÅ mellem tomme felter
Vh Boris
Let( [ t1 = Substitute( List( option1 ); "¶"; ":" ) ; t2 = Substitute( List( option2 ); "¶"; ":" ) ; t3 = Substitute( List( option3 ); "¶"; ":" ) ; t4 = Substitute( List( option4 ); "¶"; ":" ) ; eksport = Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 3 )& ":"&"default")&¶& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 4 )) ] ; Left( eksport; Length( eksport ) - 1) )
Eller denne:
Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option1 ; 1 )); GetRepetition ( option1 ; 3 )& ":"&"default")&¶& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option2 ; 1 )); GetRepetition ( option2 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option3 ; 1 )); GetRepetition ( option3 ; 4 ))& ¶& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 1 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 2 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 3 )& ":")& Case ( not IsEmpty(GetRepetition ( option4 ; 1 )); GetRepetition ( option4 ; 4 ))
Du skal bruge denne her så. Fort hvert af de fire repeterende felter tester vi først, om der er noget indhold - hvis ikke genererer vi ikke noget tekst, ellers sætter vi de fire repetioner sammen og afslutter med linjeskift.
Den underforståede logik er, at der er linjeskift efter enhver linje. Vi ved ikke, om felt1, felt2, felt3 eller felt4 er det sidste felt, der er indhold i, men vi ved, at der altid er et linjeskift for meget uanset hvilket felt, det kommer fra. Derfor skal der også være linjeskift efter den sidste linje - det bliver automatisk slettet af Left-funktionen. Det var den detalje, der manglede i din funktion.
Din calc er bestemt korrekt lavet nu... - men det er stort set lige meget hvad jeg (vi) gør, efter import i mySql mangler der et linieskift efter sidste linie. Hvis jeg indsætter det manuelt i mySql (på nettet) funker det som det skal.
Når du skriver "sidste linje" er det så sidste linje i eksportfilen eller sidste linje i den enkelt post?
FileMaker laver jo et linjeskift efter hver post i eksporten, men der kommer ikke et linjeskift efter den sidste post.
En måske ikke særlig køn men ganske effektiv løsning er at have en post uden data til sidst i eksporten. Så kommer der et linjeskift mellem den sidste egentlige post og dummyposten, og da der jo ikke er noget feltindhold i den sidste post (dummyposten), vil beregningen heller ikke generere data.
Bagefter tekst indskrevet på nettet (i mySql) er der ingen ekstra linieskift.
Almindelig::5,75:default m/smør :+4:9,75: m/smør og ost:+7:12,75:
Din calc virker "perfekt" blot mangler der en eller anden usynlig afslutning på feltet. Det hjælper tilsyneladende IKKE at lave ekstra linieskift i FileMaker eksporten, heller ikke i den eksporterede fil. Intet bliver korrekt før jeg manuelt har lavet en afslutning direkte i mySql feltet. Så mySql laver sikkert et eller andet tegn som afslutning.
TekstWrangler viser linieskift som et omvendt spørgsmålstegn og afslutning på "Record" er et stort L der er lagt vandret.
De omvendte spørgsmålstegn erstetter jeg (som du anviste). Så umiddelbart er alt korrekt (i eksporten)
Vh Boris
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.