Jump to content
  • 0
AlbertUrk

CSV kolomnaam veranderen

Question

Ik heb een programma waar ik moet exporteren naar CSV bestand maar.... de kolomtekst komt niet overheen met wat het moet zijn.

Bijvoorbeeld "Nummer" moet worden "x/NUMMER" enz. Is dit mogelijk

Share this post


Link to post

19 answers to this question

Recommended Posts

  • 0

De csv-export van FileMaker exporteert ,-gescheiden ipv ;-gescheiden en dus opent zo'n csv niet lekker in Excel. Verder zou je de export kunnen maken door een record toe te voegen met louter de gewenste veldnamen. Je moet dan direct voor je exporteert met bijvoorbeeld sorteren zorgen dat het record met de veldnamen het eerste record wordt.

Het bijgaand voorbeeld heeft daarom een iets andere benadering (die pas vanaf FM 18 mogelijk is).
1) Eerst wordt er op de standaardmanier van FM naar CSV geëxporteerd
2) Dan wordt alle data uit dat resultaat door FM in een variabele gezet
3) In de variabele wordt een eerste lijn met de veldnamen toegevoegd
4) In de varaiabele worden vervolgens alle "," vervangen voor ";"
5) De bestaande gegevens in het exportbestand worden overschreven met de inhoud van de variabele

De veldnamen staan in een xtra tabelletje, maar je kan dat ook simpel "hard" in je script zetten :-)

 

ExportNaarCSV.fmp12

Share this post


Link to post
  • 0
1 uur geleden zei menno:

De csv-export van FileMaker exporteert ,-gescheiden ipv ;-gescheiden en dus opent zo'n csv niet lekker in Excel. Verder zou je de export kunnen maken door een record toe te voegen met louter de gewenste veldnamen. Je moet dan direct voor je exporteert met bijvoorbeeld sorteren zorgen dat het record met de veldnamen het eerste record wordt.

Het bijgaand voorbeeld heeft daarom een iets andere benadering (die pas vanaf FM 18 mogelijk is).
1) Eerst wordt er op de standaardmanier van FM naar CSV geëxporteerd
2) Dan wordt alle data uit dat resultaat door FM in een variabele gezet
3) In de variabele wordt een eerste lijn met de veldnamen toegevoegd
4) In de varaiabele worden vervolgens alle "," vervangen voor ";"
5) De bestaande gegevens in het exportbestand worden overschreven met de inhoud van de variabele

De veldnamen staan in een xtra tabelletje, maar je kan dat ook simpel "hard" in je script zetten :-)

 

ExportNaarCSV.fmp12 272 kB · 1 download

Dit is iid ook een goede methode wellicht beter omdat de gebruiker de kolomnamen zelf kan veranderen. Ik zie alleen nog niet waar het uitvoerbestand naar toe gaat?

Share this post


Link to post
  • 0

In regel 7 van het script wordt de variabele $exportpad ingesteld met:

Let ( [ 
	bestandsnaam = "Exportbestand.csv" ; 
	pv = Abs ( Get ( SystemPlatform ) ) - 1 ; 
	pad = "file" & Choose ( pv ; "mac" ; "win" ) & ":" & Get ( DesktopPath ) & bestandsnaam
] ; 
	pad 
)

Dus op je bureaublad. Je zou i.p.v. Get ( DesktopPath ) ook Get ( DocumentsPath ) kunnen gebruiken. (engelse namen van de get-functies werken in alle talen)

Share this post


Link to post
  • 0
1 uur geleden zei menno:

In regel 7 van het script wordt de variabele $exportpad ingesteld met:


Let ( [ 
	bestandsnaam = "Exportbestand.csv" ; 
	pv = Abs ( Get ( SystemPlatform ) ) - 1 ; 
	pad = "file" & Choose ( pv ; "mac" ; "win" ) & ":" & Get ( DesktopPath ) & bestandsnaam
] ; 
	pad 
)

Dus op je bureaublad. Je zou i.p.v. Get ( DesktopPath ) ook Get ( DocumentsPath ) kunnen gebruiken. (engelse namen van de get-functies werken in alle talen)

Tnx 

Share this post


Link to post
  • 0
Op 08/11/2020 om 17:27 zei AlbertUrk:

Dit is iid ook een goede methode wellicht beter omdat de gebruiker de kolomnamen zelf kan veranderen. Ik zie alleen nog niet waar het uitvoerbestand naar toe gaat?

Ik heb nog wel een aanvullende vraag. De velden komen tussen aanhalingstekens te staan. Dat is niet de bedoeling, zie het verschil de schermafbeeldingen. Is dit ook te verhelpen?

Schermafbeelding 2020-11-17 om 18.59.00.png

Schermafbeelding 2020-11-17 om 18.59.06.png

Share this post


Link to post
  • 0

Wijzig:

Substitute ( 
	Quote ( Instellingen::Veldnaam1 ) & "," & 
	Quote ( Instellingen::Veldnaam2 ) & "," & 
	Quote ( Instellingen::Veldnaam3 ) & Char ( 13 ) & 
	$exportdata ; 
	[ Quote ( "," ) ; Quote ( ";" ) ] )

in: 

Instellingen::Veldnaam1 & "," & 
Instellingen::Veldnaam2 & "," & 
Instellingen::Veldnaam3 & Char ( 13 ) & 
$exportdata 

En kijk ook eens in de documentatie en zoek daar de gebruikte functies in op

Share this post


Link to post
  • 0
1 uur geleden zei menno:

En kijk ook eens in de documentatie en zoek daar de gebruikte functies in op

Whoops 😳🤗 Dat doe ik zeker maar een voorbeeld zegt zoveel meer, daar ben ik dan ook heel dankbaar voor. De oplossing aangedragen werkt perfect behalve dan dat er quotes tussen de velden komen als je het in een tekstverwerker opent. Excel gaat goed. 

Share this post


Link to post
  • 0

Dit quotes horen nu eenmaal bij een csv-bestand, dus dat is logisch.

Maak maar eens een export uit Excel naar csv en open die in een tekstverwerker… dan zie je hetzelfde. Behalve dan dat ze bij Microsoft nog steeds denken dat een puntkomma hetzelfde is als een komma… ;o)

Share this post


Link to post
  • 0
11 uur geleden zei bigbadwolf:

Dit quotes horen nu eenmaal bij een csv-bestand, dus dat is logisch.

Inderdaad. Is ook mijn fout ik bedoelde de aanhalingstekens  :(  "tussen de velden"

Share this post


Link to post
  • 0

Ik heb trouwens na zitten denken en kwam door verschillende antwoorden te combineren tot een zeer simpele oplossing. De velden uit de oplossing van Menno gebruikt voor de veld namen en vervolgens een variabele gemaakt waar ik alle velden in vang met ; vervolgens in een globaal veld zetten. Dan alleen dat ene veld exporteren. Dat gaat als een trein met heel weinig code.

Dat gaat goed alleen niet bij het openen in excel want dan komen de kolomteksten in één veld. Er is ook altijd wat maar dit lijkt een simpele oplossing

CSV export.fmp12

Share this post


Link to post
  • 0
20 uur geleden zei AlbertUrk:

Ik heb trouwens na zitten denken en kwam door verschillende antwoorden te combineren tot een zeer simpele oplossing. De velden uit de oplossing van Menno gebruikt voor de veld namen en vervolgens een variabele gemaakt waar ik alle velden in vang met ; vervolgens in een globaal veld zetten. Dan alleen dat ene veld exporteren. Dat gaat als een trein met heel weinig code.

Dat gaat goed alleen niet bij het openen in excel want dan komen de kolomteksten in één veld. Er is ook altijd wat maar dit lijkt een simpele oplossing

CSV export.fmp12 276 kB · 0 downloads

Als csv zit het goed als ik in number open ook heel goed maar als ik in excel open zet hij alle kolomnamen in één veld. Dat is echt een gedoe. Wie weet daar een oplossing voor want dat schijnt wel uit te maken. Kan nu niet de csv export uploaden

Share this post


Link to post
  • 0

Als ik op de Mac de scriptstap 'automatisch openen' uitzet en het exportbestand open vanuit Excel met de menuoptie 'openen' (dus niet dubbelklikken) en kies voor puntkomma als scheidingsteken, staan de waarden in eigen kolommen .Het is extra werk maar misschien heb je er wat aan.

p

Share this post


Link to post
  • 0
22 minuten geleden zei peerke:

Als ik op de Mac de scriptstap 'automatisch openen' uitzet en het exportbestand open vanuit Excel met de menuoptie 'openen' (dus niet dubbelklikken) en kies voor puntkomma als scheidingsteken, staan de waarden in eigen kolommen .Het is extra werk maar misschien heb je er wat aan.

p

Idd wat apart. Het rare is dat hij niet importeert in de site waar dat moet maar ik ga het eens proberen op deze manier. Dan bewaren en eens kijken of hij dan wel wil importeren

Share this post


Link to post
  • 0
1 uur geleden zei peerke:

Als ik op de Mac de scriptstap 'automatisch openen' uitzet en het exportbestand open vanuit Excel met de menuoptie 'openen' (dus niet dubbelklikken) en kies voor puntkomma als scheidingsteken, staan de waarden in eigen kolommen .Het is extra werk maar misschien heb je er wat aan.

p

Helaas ook dit resulteert weer in een csv die weer een totaal andere indeling krijgt. :( Wordt een beetje moedeloos. Als zoveel manieren geprobeerd.

Share this post


Link to post
  • 0

Geen idee of het een optie is maar ik heb (na behoorlijk wat gerommel) het volgende gedaan. In Excel een bestand aangemaakt en dat omgezet in CSV formaat, zodanig dat het ook goed door Excel weer in te lezen was. Weet je meteen het juiste scheidingsteken (in mijn geval ";")

De headers (uit CSV bestand) in een veld geplaatst (kan ook in een variable maar let dan op de (dubbele) quotes en zo). Daarna maak ik de dataregels aan met ExecuteSQL (veldscheiding ";", recordscheiding "¶") , plak beide aan elkaar en schrijf alles weg naar een  bestand met extensie CSV.

Altenatief is een tabel aanmaken met de juiste headers en dan daarheen wegschrijven. Als je die tabel exporteert als mer (merge) dan is die in een keer te lezen met Excel (wel even hernoemen naar csv).

CSV is wel een standaard indeling, maar met de nodige variaties en smaken helaas...

Share this post


Link to post
  • 0

@AlbertUrk Ik begrijp niet waarom het jou niet lukt. Jouw screenshot verbaast me ook, omdat de aanhalingstekens zijn gedubbeld en dat kan ik zelf niet reproduceren met mijn voorbeeld.

Ik heb daarom mijn eerdere voorbeeldje even uitgebreid en opgeleukt, zodat je precies kan instellen wat je eindresultaat wordt. Je kan kiezen uit 3 verschillende scheidingstekens en je kan aangeven of er tekens om de veldinhoud moeten worden gezet (geen, ' of " ). Tenslotte kan je opgeven of deze datawrapper wel of niet om de veldnamen heen moet.

Voor die instellingen is géén relatie nodig, omdat alle velden van de instellingen "globals" zijn en die werken onafhankelijk van de context.

Het script gaat uit van een standaard FileMaker csv-export, dus met een gewone comma ( , ) als schedingsteken, de veldinhouden in aanhalingstekens ( "" ) en zonder de kolomnamen. Als je iest anders gebruikt, dan zul de logica erna aan moeten passen. Dit bestand werkt goed op een standaard Nederlandse MacOS of Windows 10 computer.

Als je dit voorbeeld in je eigen oplossing wil gebruiken, dan kan je dat het beste als volgt doen:

  • Zorg eerst dat je een tabel hebt die je wilt exporteren
  • Kopiëer en plak als eerste de 3 keuzelijsten uit het voorbeeld naar jouw eigen oplossing
  • Kopiëer en plak vervolgens de tabel "Instellingen" uit het voorbeeld naar jouw eigen oplossing
  • Kopiëer alle objecten van de layout "instellingen", m.u.v. de navigatieknop linksboven (mag natuurlijk wél)
  • Open de layout "Instellingen" die vanzelf is aangemaakt in jouw eigen oplossing
  • Plak daarin de objecten die je zojuist hebt gekopiëerd in het voorbeeld
  • Als laatste importeer (of kopiëer en plak) je het voorbeeldscript in je eigen oplossing
  • Het enige dat je nu nog met doen is andere velden opgeven in regel 9 van het script.
  • Je kan in regel 7 nog de bestandsnaam en het exportpad naar je eigen smaak aanpassen

Als je meer of minder kolommen (velden) hebt om te exporteren, zal je dat zelf moeten weghalen of toevoegen...

TextExport.fmp12

Share this post


Link to post
  • 0
44 minuten geleden zei menno:

Ik begrijp niet waarom het jou niet lukt. Jouw screenshot verbaast me ook, omdat de aanhalingstekens zijn gedubbeld en dat kan ik zelf niet reproduceren met mijn voorbeeld.

Ja ik snap het zelf ook niet. Nogmaals alles nagelopen en uiteindelijk is het gelukt met jou eerste oplossing. Ik denk toch dat ik iets verkeerds gedaan heb. Hoe dan ook het is nu eindelijk gelukt. Waarschijnlijk ook omdat degene die moest uploaden iets niet goed deed.

Mega bedankt voor je support en ook dat je nog extra moeite genomen hebt. Dat waardeer ik zeer. De laatste oplossing ga ik koesteren wellicht voorde toekomst

Share this post


Link to post

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