Ga naar inhoud
  • 0

delen van een tekst uit een veld halen


Wim Bongertman

Vraag

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 naar reactie

19 antwoorden op deze vraag

Aanbevolen berichten

  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...