Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Trigga FM att gå till vald post

Tråden skapades och har fått 11 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2004-05-24 21:56

Finns det några möjligheter att trigga FM från ett externt program att gå till en vald post (där varje post i tabellen har en tidsstämpel)? Resultatet bör bli att FM "rullar" genom posterna varefter en extern tidsvariabel spelas framåt i tiden.

Det bästa vore en plattformsoberoende lösning (om det ens går på endera plattformen), men viktigast är (tyvärr) Win.

Om detta inte är möjligt, finns det några andra program som kan lösa detta? (tänk er alltså typ "dagboksnoteringar" som presenteras allteftersom tidsvariabeln förändras.)

Kan du förklara lite mera, jag tror att jag har lite ideer, men är osäker på vad du menar.

  • Medlem
  • Stockholm
  • 2004-05-26 16:34
Ursprungligen av Taz_1999:

Kan du förklara lite mera, jag tror att jag har lite ideer, men är osäker på vad du menar.

Jo, det jag är ute efter är att kunna återskapa ett händelseförlopp där en mängd olika tidigare lagrade data spelas upp för användaren. Dessa data består av en mängd olika typer där de viktigaste är positionsdata (koordinater som lagrats med ett intervall om normalt 2 ggr/minut) och "dagboksnoteringar" där aktuella händelser skrivits ned (kodade med tidsstämplar).

Alla positionsdata spelas upp i ett GIS-program (t ex ArcGIS - www.esri.se) eller andra liknande program. Dessa program har dock sällan möjligheter att visa aktuella textnoteringar direkt i programmen. Istället för att utveckla separata insticksprogram är vår idé att om möjliigt låta textnoteringarna ligga kvar i Filemakerdatabasen och via några anrop låta GIS-programmet styra vad textnoteringstabellen ska visa för textnoteringar. Det ultimata vore en tabell som i takt med att GIS-programmets "tid" förflyter under en uppspelning "rullar" nedåt och visar de närmast angränsande textnoteringarna.

Är detta möjligt på något sätt?

  • Medlem
  • Stockholm
  • 2004-05-26 16:59

hekr,

Spontant låter det som att det inte borde vara så svårt att lösa...

GIS-programmet anropar FileMaker å skickar med den aktuella tidsstämpeln (vilken ju är ett unikt värde) som argument, Baserat på detta argument, söker Filemaker då upp aktuell post och presenterar den/de värden du eftersöker.

-Torkel

Inte för att jag vill vara kritisk eller så Torkel, men... hur? Ser inte att du skickar med någon användbar information i ditt svar.

FM kan prata SQL via ODBC och JDBC, kan GIS-programmet skicka sådana kommandon?
FM kan svara på anrop via webben, kan GIS-programmet skicka sådana?
FM kan scriptas via Applescript, kan GIS-programmet köra Applescript?
FM kan också scriptas via Visual Basic, men där är jag osäkrare på hur det fungerar...

/Ola

  • Medlem
  • Stockholm
  • 2004-05-26 18:41

Tack för dessa svar som ju låter lite hoppfulla. Däremot kommer det inte att vara riktigt tillfredsställande att filemaker måste söka ut en aktuell notering och enbart visa den. Som jag skrev tidigare så skulle jag vilja ha en lösning där det aktuella filemakerfönstret scrollar nedåt i takt med att en dynamisk variabel ändras, exempelvis via ODBC/JDBC eller VB. På så sätt kan användarna se de närmast aktuella noteringarna som kan vara nog så intressanta som enbart den som ligger närmast i tiden.

GIS-programmet kan prata via VB och kan i vilket fall lyssna på ODBC, om det dessutom kan vara ODBC-server törs jag idag inte säga.

  • Medlem
  • Stockholm
  • 2004-05-26 21:25

hekr skrev:

Citat:

..låta textnoteringarna ligga kvar i Filemakerdatabasen och via några anrop låta GIS-programmet styra vad textnoteringstabellen ska visa för textnoteringar.

Det låter för mig som om att GIS-programmet regerar, d.v.s. styr vad av all information i FM som är av intresse för tillfället.

Tänker mig således regelbundna anrop från GIS-programmet, via typ VB, som skickar med aktuell tidsstämpel. Filemaker "hoppar" då till aktuell post i en lista.

Sker detta med jämna mellanrum, upplevs det just som hekr efterfrågade, nämligen:

Citat:

..tabell som i takt med att GIS-programmets "tid" förflyter under en uppspelning "rullar" nedåt och visar de närmast angränsande textnoteringarna.

Således en lösning på hekr:s ursprungliga önskan:

Citat:

Finns det några möjligheter att trigga FM från ett externt program att gå till en vald post (där varje post i tabellen har en tidsstämpel)? Resultatet bör bli att FM "rullar" genom posterna varefter en extern tidsvariabel spelas framåt i tiden.

-Torkel

Kan du få GIS-programmet att via VB prata ODBC eller JDBC? I så fall behöver du bara ha två databaser, en till vilken ODBC-kommandon skickas och en för att innehålla data. Vad ODBC-programmet gör är att skapa en relation mellan den första databasen som bara behöver innehålla en post och den andra databasen. Mha denna relation kan man i den första databasen visa valfria poster ur den andra databasen, ingen sökning är därför nödvändig. Om VB kontinuerligt skickar ett update-kommando i SQL via ODBC kommer det urvalet kontinuerligt att ändras. Så då blir det ungefär som du vill.

Jag skulle kolla lite på internet efter saker som har med Visual Basic och ODBC eller JDBC att göra. Sedan efter Visual Basic och FileMaker, tex på http://www.filemaker.com/

  • Medlem
  • Stockholm
  • 2004-05-29 12:50
Ursprungligen av Taz_1999:

Kan du få GIS-programmet att via VB prata ODBC eller JDBC? I så fall behöver du bara ha två databaser, en till vilken ODBC-kommandon skickas och en för att innehålla data. Vad ODBC-programmet gör är att skapa en relation mellan den första databasen som bara behöver innehålla en post och den andra databasen. Mha denna relation kan man i den första databasen visa valfria poster ur den andra databasen, ingen sökning är därför nödvändig. Om VB kontinuerligt skickar ett update-kommando i SQL via ODBC kommer det urvalet kontinuerligt att ändras. Så då blir det ungefär som du vill.

Tack för detta svar. Förutom det GIS-programmet jag nämnde har vi även lite specialutvecklade analysprogram varav vi hade utvecklarna för ett av dessa program uppe hos oss i veckan. De skapade en "fullösning" så att deras program nu både kan styra och bli styrd av innehållet i en textfil, dvs programmet sparar kontinuerligt en textfil med aktuell tidsstämpel så att andra program kan få veta var programmet befinner sig i tiden och vice versa.

Frågan för mig är nu om jag kan få FM att dynamiskt läsa av denna textfil utan att behöva köra ett script som importerar textfilens innehåll med ett regelbundet tidsintervall?

Och vice versa, kan jag få FM att dynamiskt skriva till en textfil utan att behöva köra ett screipt som gör detta kontinuerligt?

Ursprungligen av hekr:

Tack för detta svar. Förutom det GIS-programmet jag nämnde har vi även lite specialutvecklade analysprogram varav vi hade utvecklarna för ett av dessa program uppe hos oss i veckan. De skapade en "fullösning" så att deras program nu både kan styra och bli styrd av innehållet i en textfil, dvs programmet sparar kontinuerligt en textfil med aktuell tidsstämpel så att andra program kan få veta var programmet befinner sig i tiden och vice versa.

Frågan för mig är nu om jag kan få FM att dynamiskt läsa av denna textfil utan att behöva köra ett script som importerar textfilens innehåll med ett regelbundet tidsintervall?

Och vice versa, kan jag få FM att dynamiskt skriva till en textfil utan att behöva köra ett screipt som gör detta kontinuerligt?

Förstår jag dig rätt om du vill att FM skall använda filens innehåll utan att behöva regelbundet läsa in den?

I FIleMaker (och sannolikt i alla andra databasprogram) så finns inte möjligheten att bygga en levande relation mellan en textfil på en hårddisk och en tabell. Det existerar helt enkelt inte i databas-världen, vad jag vet.

Men det finns flera lösningar på problemet om vi nu lägger till textfiler som kommunikations-verktyg mellan GIS-programmet och FileMaker.

1. Du kan i FileMaker köra ett script som loopar i evighet. Detta är förstås ingen elegant lösing och troligen kanske den kommer att stjäla väl mycket processorcykler, men det kan fungera.

I det scriptet så kan du lägga in funktionen att importera en textfil, för detta kan du antingen använda FIleMakers egen importfunktion (om filen bara innehåller ett enda värde kan det fungera utmärkt). Importens parametrar lagras lätt i en FM-databas i det manuset som gör importen, det inkluderar sökvägen till filen på hårddisken, matching mellan fält i filen (tex separerade med TAB-tecken) och vilket fält i FM de skall in i.

Kör manuset så börjar FM loopa och importerar värdet om och om igen...

Men en liten varning är förstås på sin plats. De flesta filsystem (Mac OS X, Windows osv) har system där endast ett program i taget och en användare i taget kan få tillgång till samma fil, vad som händer om FM inte kan läsa filen för att GIS-programmet skriver till den, vet jag inte. En krasch låter inte helt orimlig, men det märker du när du prövar.

2. En lösning på problemet med att två program skriver och läser till samma fil är förstås att de inte gör det. Om du kan få GIS-programmet att spara ner nya filer som har nummer istället, så kan FM via en plugin som heter "Troi File Plugin" från Troi Automatisering, läsa av vilka filer som ligger i en mapp, hitta den med högst nummer, importera den och radera alla andra.

http://www.troi.com/software/fileplugin.html

Alltså kommer GIS-programmet att skapa en fil som heter 100000.txt, FM läser av innhållet i mappen GIS-programmet skriver till, hittar den, importear den, raderar den. GIS-programmet skapar en fil som heter 100001.txt och kanske även 100002.txt, och 100003.txt,, FM hittar dessa, ser att 100003.txt, har högst nummer, läsar av den, raderar de övriga, under tiden hinner GIS-programmet skriva även 100004.txt, och 100005.txt, 100006.txt osv...

På det viset så kommer FM och GIS-programmet inte att peta på samma fil samtidigt och denna lösning kan vara väldigt stabil.

Om du in i ekvationen även slänger in en annan plugin: "Events Plugin" från Waves in Motion

http://wmotion.com/events.html

...så kan du schemalägga att importscriptet körs tex var femte sekund eller oftare... (Lite osäker på hur exakt Event-pluggen är när det gäller tidsstyrningn, men en TV-station använder den för att sända program, så helt inexakt kan den inte vara).

Du kan även göra åt andra hållet (kanske i en annan mapp) i vilken FM Pro via Troi File Plugin sparar ner en textfil antingen med olika namn eller med nya namn.

3. Vänd på kuttingen, kanske det du vill göra kanske lättare löses genom att exportera en texfil från FM och sedan skapa en liten applikation som styrs av GIS-programmet som hoppar till rätt textrad i filen och visar innehållet i den raden?

Förutom ovanstående så vidhåller jag mitt tips att ha två databaser, en som innehåller endast en post och som från den enda posten visar rätt information från en relaterad databas som innehåller alla data antingen via en portal (för att visa flera poster) eller bara en post. Relationsnyckeln är förstås tidsstämplen. Det är till denna databas med en enda post som importen av textfilen sker.

<SHAMELESS SELF-PROMOTION>Om det är av intresse att bygga detta så kan jag troligen pilla ihop ett fungerande exempel på sex timmar á 750:- i timmen som innehåller lösning 2 (förutom den biten som GIS-programmet står för). Kontakta mig privat i så fall. :)</SHAMESLESS SELF-PROMOTION>

Lycka till!

/Ola

  • Medlem
  • Stockholm
  • 2004-05-29 18:04
Ursprungligen av Taz_1999:

Förutom ovanstående så vidhåller jag mitt tips att ha två databaser, en som innehåller endast en post och som från den enda posten visar rätt information från en relaterad databas som innehåller alla data antingen via en portal (för att visa flera poster) eller bara en post. Relationsnyckeln är förstås tidsstämplen. Det är till denna databas med en enda post som importen av textfilen sker.

<SHAMELESS SELF-PROMOTION>Om det är av intresse att bygga detta så kan jag troligen pilla ihop ett fungerande exempel på sex timmar á 750:- i timmen som innehåller lösning 2 (förutom den biten som GIS-programmet står för). Kontakta mig privat i så fall. :)</SHAMESLESS SELF-PROMOTION>

Ja, ditt förslag med två databaser varav den ena innehåller tidsstämpeln och uppdateras kontinuerligt via ODBC/VB och den andra innehåller själva datat låter helt klart smidigast. Jag har noterat ditt förslag om att göra jobbet men känner i dagsläget att de största svårigheterna med implementering av detta nog inte ligger i FM utan i hur våra diverse analysprogram ska kunna skicka ut aktuell tidsstämpel på ett smidigt sätt.

I vilket fall - stort tack för goda råd!

Kan tillägga att jag skrivit lite om mina öden och äventyr med ODBC och JDBC och FileMaker Pro här på 99Mac. Sök!

1
Bevaka tråden