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:19

Sidor: 1 [2]
  Skriv ut  
Författare Ämne: Läsa info från fil i ett containerfält?  (läst 319 gånger)
0 Medlemmar och 3 gäster tittar på detta ämne.
RolfC
Nykomling

Antal inlägg: 50

FileMaker-utvecklare sedan 1988


Visa profil Hemsida
« Svara #15 skrivet: 2 Februari, 2012, 22:53 »

Du kan skapa temporära id i xslt som kopplar ihop posterna i XML-filen som du sedan byter ut mot de "riktiga" id-numren.
Loggat

Rolf Clausen | Mallverkstan | www.mallverkstan.se | 046-235250 | Certifierad FileMaker 7/8/10/11
KoTTeN
Nykomling

Antal inlägg: 50


Visa profil Hemsida
« Svara #16 skrivet: 3 Februari, 2012, 01:36 »

Hur ser .xml-filen ut?
Funktionen är till för att importera kundorder till vårt system. XML-filerna kan se väldigt olika ut beroende på vilken kund det är - hur de organiserar datan hos sig och vilket affärssystem dom använder.

Men generellt kan man säga att de är uppbyggda som nedan (finns även bifogat som fil)
Kodstycke:
1  <?xml version="1.0" encoding="UTF-8"?>
2  
3  <orderstock>
4   <order>
5    <kund_namn>Företaget</kund_namn>
6    <kund_nr>123</kund_nr>
7   <orderbok>
8   <orderrad>
9   <artikelnr>474345222</artikelnr>
10  <antal>1000</antal>
11  </orderrad>
12  <orderrad>
13  <artikelnr>102532</artikelnr>
14  <antal>5</antal>
15  <orderrad>
16  </orderrad>
17  <artikelnr>MIX</artikelnr>
18  <antal>60</antal>
19  </orderrad>
20  </orderbok>
21  </order>
22 
23  <order>
24   <kund_namn>Ett annat företag</kund_namn>
25   <kund_nr>334</kund_nr>
26  <orderbok>
27  <orderrad>
28  <artikelnr>Artikel nr.1</artikelnr>
29  <antal>5</antal>
30  </orderrad>
31  </orderbok>
32  </order>
33 </orderstock>
34 

Informationen om order (Kundens namn och nummer) importeras i databasen "K_Order" och varje orderrad (artikel och antal) ska då importeras som en relaterad post i "K_Order_Rad".

Du kan skapa temporära id i xslt som kopplar ihop posterna i XML-filen som du sedan byter ut mot de "riktiga" id-numren.
Skulle du möjligen ge ett exempel på hur man gör detta? Eller om du vet någon bra guide på nätet som behandlar ämnet?

* exempel.txt (0.63 KB - nedladdat 7 gånger.)
Loggat

Packing AB
David Wikström
Flitig postare

Antal inlägg: 342



Visa profil Hemsida
« Svara #17 skrivet: 3 Februari, 2012, 06:59 »

Jag vet inte om smidigt är rätta ordet, men jag har själv nyligen byggt en xml-"import" (från Final Cut Pro) som överhuvud taget inte använder FileMakers egen import-funktion. ...plugin skapat med 360Works ScriptMaster 4 Advanced.

Det känns lite som samma problematik som jag har. Jag ska dock försöka att klara mig så långt det går utan plugin. Speciellt de som kostar pengar Leende (smiley).

ScriptMaster är gratis - du behöver inte ScriptMaster Advanced för att göra detta (bara smidigare för att distribuera, och jag betalar gärna 99 dollar som tack för ett fantastiskt plugin).
Loggat

David Wikström
FileMaker 11/10/9/8 Certified Developer
FBA Member
FBA Trainer
RolfC
Nykomling

Antal inlägg: 50

FileMaker-utvecklare sedan 1988


Visa profil Hemsida
« Svara #18 skrivet: 3 Februari, 2012, 09:29 »

Citat
Skulle du möjligen ge ett exempel på hur man gör detta?

Med XSLT gör du ett löpnummer av order-taggen, använd t.ex. funktionen position(), som du importerar i båda tabellerna och som gör att du har en koppling mellan dem. Efter importen ersätter du med annat id-nummer som du kan hämta från FileMaker-tabellen.

Så här t.ex.:
Kodstycke:
1 <xsl:for-each select="//order">
2    <ROW>
3       <COL><DATA><xsl:value-of select="position()"/></DATA></COL>
4       <COL><DATA><xsl:value-of select="kund_nr"/></DATA></COL>
5 ...
6 </xsl:for-each>
7 
Loggat

Rolf Clausen | Mallverkstan | www.mallverkstan.se | 046-235250 | Certifierad FileMaker 7/8/10/11
KoTTeN
Nykomling

Antal inlägg: 50


Visa profil Hemsida
« Svara #19 skrivet: 3 Februari, 2012, 14:35 »

ScriptMaster är gratis - du behöver inte ScriptMaster Advanced för att göra detta (bara smidigare för att distribuera, och jag betalar gärna 99 dollar som tack för ett fantastiskt plugin).

Behöver man inte Enterprise license för att kunna köra ScriptMaster via FMP Server och IWP? Den kostar väl närmare 2000 dollar.
Loggat

Packing AB
David Wikström
Flitig postare

Antal inlägg: 342



Visa profil Hemsida
« Svara #20 skrivet: 3 Februari, 2012, 18:37 »

Tror inte det - finns ingen Enterprise licens - några av raderna på hemsidan om licensalternativ är allmänna formuleringar för all 360Works plugin.  Har visserligen ännu inte själv prövat att installera ScriptMaster på servern för att köra manus där, men från din beskrivning låter det mer som om det är en FileMaker Pro-användare som kör importen och då behöver du ju hur som helst bara ha pluginet installerat på arbetsstationen, inte på servern. Så gratisversionen fungerar utmärkt.
Loggat

David Wikström
FileMaker 11/10/9/8 Certified Developer
FBA Member
FBA Trainer
KoTTeN
Nykomling

Antal inlägg: 50


Visa profil Hemsida
« Svara #21 skrivet: 3 Februari, 2012, 19:10 »

Tror inte det - finns ingen Enterprise licens - några av raderna på hemsidan om licensalternativ är allmänna formuleringar för all 360Works plugin.  Har visserligen ännu inte själv prövat att installera ScriptMaster på servern för att köra manus där, men från din beskrivning låter det mer som om det är en FileMaker Pro-användare som kör importen och då behöver du ju hur som helst bara ha pluginet installerat på arbetsstationen, inte på servern. Så gratisversionen fungerar utmärkt.
Ja ok - jag kanske missuppfattade deras hemsida. Tyckte det var lite luddigt skrivet på sidan.

Jag har tänkt mig att funktionen ska gå att köra både på klient och server. Klienten används internt hos oss för att snabbt och smidigt kunna lägga in order. Servern används däremot av våra kunder som vill lägga upp order direkt i systemet. Har tänkt mig att man via FTP laddar upp xml-filerna varpå man i FMPSA hittar filen, importerar och raderar filen via schemalagd script.
Loggat

Packing AB
RolfC
Nykomling

Antal inlägg: 50

FileMaker-utvecklare sedan 1988


Visa profil Hemsida
« Svara #22 skrivet: 3 Februari, 2012, 19:24 »

Verkar som en alldeles utmärkt lösning.
Loggat

Rolf Clausen | Mallverkstan | www.mallverkstan.se | 046-235250 | Certifierad FileMaker 7/8/10/11
KoTTeN
Nykomling

Antal inlägg: 50


Visa profil Hemsida
« Svara #23 skrivet: 8 Februari, 2012, 22:01 »

Med XSLT gör du ett löpnummer av order-taggen, använd t.ex. funktionen position(), som du importerar i båda tabellerna och som gör att du har en koppling mellan dem.

Verkligen smidigt! Det gör det både enklare men framförallt mycket, mycket snabbare!
Med risk att vara lite OT då detta är mer XML än FileMaker: Hur gör jag för att få fram positionen från en ovanliggande for-each? Så här ser mitt exempel ut:

Kodstycke:
1  
2  <xsl:for-each select="//order">
3   <!-- HÄR KAN JAG FÅ FRAM RÄTT POSITION-ID MED ""POSITION()"" FÖR ORDERN -->
4   <!-- DET VÄRDET VILL JAG SEDAN KOMMA ÅT I NEDANSTÅENDE FOR-EACH SÅ ATT -->
5   <!-- JAG KAN ANGE DENNA RELATION I ORDER-RADEN -->
6  
7   <xsl:for-each select="orderbok/orderrad">
8      <ROW>
9        <COL><DATA><xsl:value-of select="position()"/></DATA></COL>
10  <!-- OVANSTEÅNDE ""POSITION()"" HÄMTAR POSITION-ID FÖR ORDER-RADEN OCH INTE DEN OVANLIGGANDE FOR-EACH SOM JAG ÖNSKAR-->
11       <COL><DATA><xsl:value-of select="kund_nr"/></DATA></COL>
12  ...
13  </xsl:for-each>
14 </xsl:for-each>
15 

Dvs för att få fram ID för order och sedan gå igenom tillhörande orderrader måste jag köra med nästlade For-Each men hur kan jag komma åt position-ID från den yttre när jag är i den inre? Har sökt via Google och hittat något exempel men får det inte att fungera.
Loggat

Packing AB
RolfC
Nykomling

Antal inlägg: 50

FileMaker-utvecklare sedan 1988


Visa profil Hemsida
« Svara #24 skrivet: 9 Februari, 2012, 09:34 »

Du kan sätta en variabel efter första for-each som du sedan använder, ungefär så här:

Kodstycke:
1  <xsl:for-each select="//order">
2     <xsl:variable name="pos" select="position()" /> 
3     <xsl:for-each select="orderbok/orderrad">
4        <ROW>
5           <COL><DATA><xsl:value-of select="$pos" /></DATA></COL>
6           <COL><DATA><xsl:value-of select="kund_nr"/></DATA></COL>
7           ...
8      </xsl:for-each>
9  </xsl:for-each>
10 

Import av XML med XSLT är oerhört smidigt, flexibelt och snabbt!

Vill du lära dig mer kan du t.ex. läsa här: http://www.w3schools.com/xsl
Loggat

Rolf Clausen | Mallverkstan | www.mallverkstan.se | 046-235250 | Certifierad FileMaker 7/8/10/11
Sidor: 1 [2]
  Skriv ut  
 
Gå till: