Jump to content
  • 0

delen van een tekst uit een veld halen


Wim Bongertman

Question

Na een paar uren vruchteloos zoeken en experimenteren, hier mijn vraag:

 

In een veld staat de volgende tekst:

 

mijnweb.nl - gratis transport

-===================================================-

Bestelnummer: 1614

Gedetailleerde pakbon: http://www.mijnweb.nl/catalog/account_history_info.php?order_id=1614

Besteldatum: zondag, 20 april 2008

 

Artikelen

-===================================================-

1 x warmte lamp armatuur 50% schakelaar (1234) = 18,50EUR

1 x Maino MPS 12 automaat (1235) = 135,00EUR

-===================================================-

Verzending: 0,00EUR

Sub-Totaal: 153,50EUR

Btw Hoog: 24,51EUR

Totaal: 153,50EUR

 

Verzendadres

-===================================================-

Trien schuil

straat 75

8559bt plaats1

N

 

Factuuradres

-===================================================-

Jan schuil

andere straat 69

1234AA plaats1

N

 

Betaalwijze

-===================================================-

iDEAL

 

Ik wil hier uit halen

 

1 het bestelnummer (dit moet in een veld worden geplakt.)

2 het aantal en de artikelen - in dit voorbeeld zijn het twee maar het kan er ook een of meer zijn (aantal is altijd eerste positie - artikelnummer staat altijd tussen haakjes (ook deze twee moeten in velden)

3 factuur adresgegevens (alles uiteraard in verschillende velden)

4 verzend adresgegevens (alles uiteraard in verschillende velden)

5 betaalwijze (iDEAL maar kan ook iets anders zijn) (weer in eenv eld)

 

Tot nu toe is het knippen en plakken geblazen, maar dat moet volgens mij ook eleganter kunnen. ik ben al met diverse scriptstappen bezig geweest, maar het blijft knoeien.

 

De werkzijze zou volgens mij moeten zijn dat vanaf een gevonden punt - zeg maar artikelen - bepaald kan worden waar de benodigde gegevens staan en deze met set field verwerken.

 

Hoe kom ik op weg?

Link to comment

19 answers to this question

Recommended Posts

  • 0

Hallo Wim,

 

Ik zou graag even een stapje terug willen gaan.

Hoe komen al deze gegevens in dat veld terecht?

 

Misschien heb ik het mis, maar ik heb het idee dat het om een online bestelling gaat waarbij je de gegevens overzet naar FileMaker...

Link to comment
  • 0

 

De werkzijze zou volgens mij moeten zijn dat vanaf een gevonden punt - .....

 

Wim, misschien ben ik verkeerd maar kun je het laatste streepje in

'==- ' gebruiken als 'gegeven punt' ?

 

Feitelijk zitten je gegevens die je wil hebben tussen het laatste streepje van '==- ' en het eerste '-==' van de volgende tussenlijn.

Al of niet met een volgende ¶ of een voorlopende ¶.

 

Door er een Substitute() op los te laten kun je een encapsulated vorm van je gegevens hebben.

 

Dat zou al een eerste aanzet voor parsing kunnen zijn.

Link to comment
  • 0

ja dat klopt. Het is een bestelling uit een online winkel welke ik per email ontvang.

Ik heb er ook al aan gedacht om de MYSQL database op de website direct te benaderen - dat kan immers met de 9 - maar ???????????? dat stelt mij voorlopig voor nog veel grotere problemen.

 

Dus was mijn denkwijze: Ik selecteer de gehele tekst in het bericht, plak hem in een veld en ga door middel van een script de tekst bewerken en plaatsen in de diverse velden.

 

Uiteraard kan ik via de website ook facturen maken, maar dan ben ik mijn gehele voorraad overzicht weer kwijt. En zeg nu zelf, wat werkt er mooier dan Filemaker.

 

2e antwoord. Inderdaad zijn de streepjes misschien de oplossing om de punten van de tekst te markeren.

 

Ik ga daar eens mee aan de slag.

Link to comment
  • 0
dat kan immers met de 9 -

 

Alhoewel je in het FM6 forum zit hier, kun je via ODBC vrij gemakkelijk verbinding leggen met SQL en daarmee data via een pull in FM krijgen.

 

Ik ken de structuur niet die je hebt, dus kan ik moeilijk

maar ???????????? dat stelt mij voorlopig voor nog veel grotere problemen.

plaatsen.
Link to comment
  • 0

bij veel onlinewinkels kan je de opbouw van de bestellingsemail zelf aanpassen.

 

wanneer je de email zodanig aanpast dat de gewenste gegevens tussen zelfgedefinieerde tags komen te staan kan je in filemaker die gegevens vervolgens makkelijk filteren met de functie Middle.

 

groet, bdk

Link to comment
  • 0

Met de aangedragen tips en oplossingen op het forum ben ik weer geruime tijd bezig geweest. Maar het vlot niet erg. De naar mij gezonden email kan ik niet gemakkelijk wijzigen. ik moet dat echt in de PHP van de webshop rommelen, en dat wil ik niet. We laten de email dus standaard.

 

De functie middle is duidelijk, daar kan ik wel wat mee. Maar......

 

Het artikel nummer staat altijd tussen aanhalingstekens - Hoe isoleer ik die? Dat kan ik niet tellen - met de functie Middle - omdat de tekst ervoor variabel is.

 

Hoe haal ik voornaam en achternaam - die steeds wisselend van lengte zijn uit elkaar?

Link to comment
  • 0

Mmmmmm. Dat ziet er al heel knap uit. Ik denk dat mijn grootste probleem is om de invoer te knippen in kleine bewerkbare stukjes. in mijn probeerseltjes raak ik het overzicht kwijt.

Het probleem van een naam valt op te lossen. ik denk dat een klein beetje handwerk on onkoombaar is. Overigens blijf ik ook van mening dat de in internetwinkels veel gebruikte voor en achternaam adressering absoluut niet netjes is, enige aanpassing is op zijn plaats. Ik stuur een klant van 65 jaar toch geen factuur met als aanhef, Piet - Klaas of Johan. Dat wordt - de Heer of Mevrouw.

Met de aangedragen oplossing kan ik in ieder geval verder werken.

 

Bedankt, voor zover.

Link to comment
  • 0

Wat ik in zo'n geval doe:

 

a. Ik zoek een bepaald gegeven op uit de tekst, bepaal de voor en achterkant van dat deel.

 

b. Ik maak een globaal veld aan t.b.v. herkenning van de voorkant (veld OpgaveVooraf). Daarin kopieer ik het vaste deel dat altijd vooraf gaat aan de gegevens dat ik zoek.

 

c. Ik maak nog een globaal veld aan voor de achterkant van het stuk tekst dat ik zoek (veld OpgaveAchteraf). Ook hier kopieer ik een vast deel uit de tekst, zodat deze altijd goed overeenkomt.

 

d. Ik maak een controleveld waaruit middels een berekening het juiste stuk tekst moet gaan verschijnen. Zo'n berekening ziet er als volgt uit

(voorbeeld uit het ophalen vanuit het RDW kentekenbestand):

 

Middle (RDW uittreksel ; Position ( RDW uittreksel ; APKdatumOpgaveVooraf ; 1 ; 1 ) + Length ( APKdatumOpgaveVooraf) ;

Position ( RDW uittreksel ; APKdatumOpgaveAchteraf ; 1 ; 1 ) - Position ( RDW uittreksel ; APKdatumOpgaveVooraf ; 1 ; 1 ) - Length ( APKdatumOpgaveVooraf))

 

Middels een script hoef je weinig meer te doen dan het berekeningsveld over te kopieren naar een losstaand tekstveld. Bij wijziging van de orginele bron weet je in elk geval zeker dat reeds ingevulde velden hun waarden blijven behouden.

 

Een bijzonder groot voordeel van deze constructie is dat je vrijwel elk gegeven op steeds dezelfde wijze kan oppikken. Mocht de bron in zijn vorm veranderen (bijvoorbeeld bij internetpagina's) dan pas je met de inhoud van de velden OpgaveVooraf en OpgaveAchteraf even de boel aan en het werkt weer.

Je hoeft dan niet meer in de formules te zitten rommelen.

Tevens worden hogere Ascii tekens volop ondersteund. Filemaker weet er soms geen raad mee, maar aangezien je de OpgaveVooraf en OpgaveAchteraf uit dezelfde bron haalt, klopt het toch weer altijd.

Met name bij internetpagina's is dat bijzonder waardevol.

 

Misschien wat cryptisch omschreven, maar als je het eenmaal doorhebt, werkt het fantastisch.

Link to comment
  • 0

Schitterend idee, van SuperWimmie. Schitterend want eenvoudig en efficiënt.

Er is maar een stukje in zijn tekst waar ik een probleem mee heb: "Wat ik in zo'n geval doe".

"Zo'n geval" is hier wel een speciaal geval, want het is geen vaste tekst. Heb ik je goed begrepen, SuperWimmie, als ik geloof dat je ervan uitgaat dat inleidende en afsluitende teksten vaste gegevens zijn? Want dan werkt het hier niet, en moet je het eerste zinnetje vervangen door iets anders. Of zie ik iets over het hoofd? Zou kunnen want ik ben al dagen een handleiding aan het lezen voor een ding zonder knopjes :wink:

Link to comment
  • 0

Er zitten redelijk wat vaste teksten in.

 

Voor:

-===================================================-
Bestelnummer: 

 

Achter:


Gedetailleerde pakbon:

 

inclusief de Enter tekens kom je toch een heel eind.

In dit voorbeeld heb ik perfect het bestelnummer te pakken, op de positie nauwkeurig.

 

En helaas... mochten er geen vaste delen in zitten, dan past alleen nog maatwerk en veel denkwerk om precies datgene er uit te halen dat je nodig hebt. Dit geldt bijvoorbeeld bij de adresgegevens die je gedetailleerder moet gaan ontleden.

 

Maar ik zie al

 ) = 

 

en

EUR

(met enter teken)

 

en x

 

dus, ga op zoek en probeer de structuur er in te ontdekken. Je komt er vaak verrassend ver mee. Let wel dat de vaste tekstdelen dus meerdere regels mogen bevatten.

Link to comment
  • 0

Natuurlijk is het nog niet geheel waterdicht, dat had ik al ontdekt. Het forum zal ook niet kunnen worden gebruikt voor pasklare oplossingen, dan moet je maatsoftware laten schrijven.

Het leuke van een forum is dat je soms net even op het goede spoor wordt gezet. vervolgens moet je het dan zelf aanpassen, verbeteren of integreren.

Uiteindelijk willen we natuurlijk allemaal iets programmeren in filemaker, anders hadden we het pakket nooit aangeschaft. Zodra het dan wat speciaals is, is het forum nabij.

Link to comment
  • 0

Het eerste nare probleem doet zich al voor:

 

Stel dat het bericht ook nog een firma naam bevat / of alleen een firma naam en geen persoonsnaam:

 

Bijvoorbeeld:

 

mijnweb.nl - gratis transport

-===================================================-

Bestelnummer: 1614

Gedetailleerde pakbon: http://www.mijnweb.nl/catalog/account_history_info.php?order_id=1614'>http://www.mijnweb.nl/catalog/account_history_info.php?order_id=1614

Besteldatum: zondag, 20 april 2008

 

Artikelen

-===================================================-

1 x warmte lamp armatuur 50% schakelaar (1234) = 18,50EUR

1 x Maino MPS 12 automaat (1235) = 135,00EUR

-===================================================-

Verzending: 0,00EUR

Sub-Totaal: 153,50EUR

Btw Hoog: 24,51EUR

Totaal: 153,50EUR

 

Verzendadres

-===================================================-

Stichting Zorgboerderij

Trien schuil

straat 75

8559bt plaats1

N

 

Factuuradres

-===================================================-

Jan schuil

andere straat 69

1234AA plaats1

N

 

Betaalwijze

-===================================================-

iDEAL

 

OF:

 

 

mijnweb.nl - gratis transport

-===================================================-

Bestelnummer: 1614

Gedetailleerde pakbon: http://www.mijnweb.nl/catalog/account_history_info.php?order_id=1614

Besteldatum: zondag, 20 april 2008

 

Artikelen

-===================================================-

1 x warmte lamp armatuur 50% schakelaar (1234) = 18,50EUR

1 x Maino MPS 12 automaat (1235) = 135,00EUR

-===================================================-

Verzending: 0,00EUR

Sub-Totaal: 153,50EUR

Btw Hoog: 24,51EUR

Totaal: 153,50EUR

 

Verzendadres

-===================================================-

Trien schuil

straat 75

8559bt plaats1

N

 

Factuuradres

-===================================================-

Stichting zorgboerderij

andere straat 69

1234AA plaats1

N

 

Betaalwijze

-===================================================-

iDEAL

 

Dan gaat de geboden oplossing niet op. Er zal dus nu op een of andere wijze moeten worden bepaald of we de firma naam wel of niet hebben. En of we daarna eventueel een persoonsnaam hebben.

Link to comment
  • 0

Valt nog wel mee, hoor. In de geboden oplossing kan je in elk geval het gehele naam/adres/woonplaats/landcode als één tekstblok destilleren.

De laatste regel is altijd de landcode, de één na laatste regel is altijd postcode als eerste woord (indien de eeste vier cijfers als getal hetzelfde resultaat geeft als tekst), de rest is woonplaats, de twee na laatste regel is altijd adres, waarvan het laatste woord het huisnummer is.

De rest is de naam, indien twee regels heb je als tweede regel de contactpersoon te pakken.

 

Eitje :wink::wink:

Link to comment
  • 0
Stel dat het bericht ook nog een firma naam bevat / of alleen een firma naam en geen persoonsnaam:

 

Of als soms je adresveld uit 2 lijnen bestaat:

Industriepark III Zuid

Industrielaan 2

 

Let vooral op het woordje soms...

Bij dergelijke oplossingen is het altijd goed, dat de gegevens na overzetting, nog even manueel gecontrolleerd worden en eventueel gecorrigeerd.

 

Koen

Link to comment
  • 0

Andries, bedankt voor de aanvulling. Ik ben al druk bezig het aangeboden script te integreren en aan te passen aan mijn specifieke "problemen". Jouw aangedragen oplossing lijkt daar ook in te passen. Het blijft - zoals al eerder opgemerkt- toch regelmatig even handmatig corrigeren. Maar ook het corrigeren kan met een paar simpele scriptjes worden beperkt tot enkele muisklikken.

Link to comment

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