Home >Documents >FileMaker Konferenz 2012 Salzburg Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL...

FileMaker Konferenz 2012 Salzburg Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL...

Date post:06-Apr-2015
Category:
View:108 times
Download:1 times
Share this document with a friend
Transcript:
  • Folie 1
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Datenaustausch zwischen FileMaker und MySQL Lesen, Vergleichen, Schreiben FileMaker Konferenz2010 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com
  • Folie 2
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Struktur 1. Szenario: FileMaker-Runtime und MySQL-Server 1. Beispiel MVB3 2. Beispiel Litlink 3. Lizenz beachten! 2. Was brauchen wir? 1. FileMaker Advanced 2. PHP-Plugins 3. MySQL 3. Arbeiten mit FileMaker PHP am Beispiel Smartpill 1. Verschiedene Arten, PHP-Code zu integrieren Script, Feldwert, Custom Function, externe Funktion 2. Den Function-Maker nutzen 3. Funktionen erstellen 4. Update zur Laufzeit via URL
  • Folie 3
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Struktur 4. Aufbau der SQL-Datenbank 5. Den Datenabgleich organisieren 1. Warum ein Transfermodul? 2. Was sind neue Daten? 3. Protokoll einrichten 4. Datenstrukturen vergleichen 5. Daten zum SQL-Server schicken 6. Daten vom SQL-Server holen 7. Konflikte lsen 8. Daten schreiben 9. Protokoll abschliessen
  • Folie 4
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Szenario MVB3: Teamsoftware fr die Mtter- und Vterberatung FileMaker Runtime Gleichzeitige Erfassung und Bearbeitung von Daten auf diversen Rechnern Datennutzung soweit separat, dass in der Praxis keine Konflikte zu erwarten sind Datenabgleich mit MySQL-Server Litlink: Wissensmanagement fr Geisteswissenschaftler mit Web- Anwendung FileMaker Runtime oder Vollversion Erfassung alternierend auf verschiedenen Rechnern des gleichen Users oder in der Weboberflche Projektfreigabe fr andere User Datenabgleich mit MySQL-Server
  • Folie 5
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Lizenz beachten Keine Netzwerk-Funktion fr Runtime nachbauen "All use of the Runtime and Runtime Solutions must be on a standalone basis only. You are prohibited from using the Runtime with any middleware, application server, CGI, or other software or technology that allows more than a single client to access the Runtime."
  • Folie 6
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Was brauchen wir? FileMaker natrlich FileMaker Advanced dringend empfohlen (Data Viewer!) Ein PHP-Plugin MySQL (>> XAMP)
  • Folie 7
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL PHP-Plugins Monkeybread MBS SQL Connection http://www.monkeybreadsoftware.de Umfangreicher Befehlssatz http://www.monkeybreadsoftware.de Scodigo Smartpill www.scodigo.com Stellt Umgebung fr PHP zur Verfgung www.scodigo.com 360works ScriptMaster www.360works.com Groovy (Java) statt PHP www.360works.com
  • Folie 8
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL MySQL Testumgebung einrichten Virtuelle Maschine, Website, Server Xampp verwenden: http://www.apachefriends.org/de/xampp.htmlhttp://www.apachefriends.org/de/xampp.html
  • Folie 9
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL PHP-Code: Arbeitsvarianten Code direkt im Script Custom Functions nutzen Mit dem Smartpill Function Maker arbeiten
  • Folie 10
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Code direkt im Script Probleme mit Anfhrungszeichen Feldname und Tabellennamen in Anfhrung "Feldname" " im Text \" \"Feldname\" \" im Text \\\" \\\"Feldname\\\" Feldwert in Hochkomma ID = '34523' Berechneter Wert \\\"_pk_GUID\\\" = '" & $ID & "' Variable setzen [$table; Wert:GetValue( Get( ScriptParameter ) ; 1 )] Variable setzen [$ID; Wert:GetValue( Get( ScriptParameter ) ; 2 )] Variable setzen [$Command; Wert:"echo fm_sql_select(\"SELECT count(1) FROM \\\"" & $table & "\\\" WHERE \\\"_pk_GUID\\\" = '" & $ID & "'\") ;" ] Variable setzen [$$SQL_Result; Wert:PHP_Execute ( $Command)] Aktuelles Script verlassen [$$SQL_Result]
  • Folie 11
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Code in Custom Functions Beispiel 1: Temporren Pfad ermitteln cf.GetUserTmpFolder: PHP_Execute( "echo FM_TEMPORARY_PATH;" ) Beispiel 2: Verschlsselung Cf.Encode_Base64: Parameter( Text, PW) PHP_Execute ( " $cipher = MCRYPT_RIJNDAEL_128; $key = hash('md5', '" & PW & "'); $iv_size = mcrypt_get_iv_size($cipher, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypt_text = mcrypt_encrypt($cipher, $key, '" & Text & "', MCRYPT_MODE_ECB, $iv); echo base64_encode($crypt_text); ")
  • Folie 12
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Function Maker Code ohne umstndliche Anfhrungszeichen Package variables Sauberer Code Kontrollierte bergabe von Parametern Fehlerbehandlung Testumgebung
  • Folie 13
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Funktionsbibliotheken erstellen Den Function-Maker nutzen Tests definieren Sets erstellen Version-Funktion nutzen
  • Folie 14
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Update zur Laufzeit laden Laden aus lokalen Dateien SetzeVar[ $Result ; Value:PHP_LoadFunctions ] Laden via URL SetzeVar[ $result; Value:PHP_LoadFunctionsFromURL ( "http://www.beispiel.ch/xml/PHPx_Functions.xml" ) ]
  • Folie 15
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Den Datenabgleich organisieren FileMaker- Datenbank Transfermodul (FM) SQL
  • Folie 16
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Aufbau der SQL-Datenbank FileMaker- Datenbank Transfermodul (FM) SQL In allen FM-Tabellen: s_ChanceLocal_n - Wert "1" wenn lokal gendert In Global-Tabelle: d_LLwebLastsyncNo_ng Nummer des letzten abgeschlossenen Synchs d_LLwebNextsyncNo_ng Nummer des laufenden Synchs d_LLwebLastDate_tg - Zeitstempel letzter Abgleich Tabellen enthalten immer alle Feldnamen, die in der Geschichte des Projekts existierten Import funktioniert immer mit Option "Gleiche Feldnamen" Gleiche Tabellen- und Feldnamen wie in FileMaker verwenden Zustzliche Tabellen fr Metadaten: web_global, web_synchlog Synchnummer: Sitzungsnummer des Datenabgleich-Vorgangs in jedem Datensatz Webnderung: Timestamp von Upload oder Bearbeitung im Web
  • Folie 17
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Warum ein Transfermodul? Sicherheit Update-Erwgungen: Aktualisierung unabhngig von Kundendaten Anpassungen der Daten vor dem Import & Export Flexibilitt Import aus verschiedenen Fremdsystemen
  • Folie 18
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Ablauf des Abgleichs Transfermodul leeren Neue Daten lokal identifizieren Datenset in das Transfermodul laden Daten zum SQL-Server schicken Transfermodul leeren Neue Daten auf Server identifizieren Daten vom Server holen Daten im Transfermodul aufbereiten Daten nach Litlink schreiben
  • Folie 19
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Was sind neue Daten Upload: Zeitstempel letzte lokale nderung > Letzter Abgleich UND s_ChangeLocal_n = 1 Download: Synchnummer SQL-Datensatz > Synchnummer letzter Abgleich ODER ( Zeitstempel Webnderung > Zeitstempel letzter Abgleich UND Synchnummer SQL-Datensatz Synchnummer letzter Abgleich) "Pingpong" verhindern: Upload nur Elemente, die auf diesem Rechner bearbeitet wurden Gleichzeitiger Upload mehrerer Clients ist mglich
  • Folie 20
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Rechte des Users prfen PHPx_SQL_CheckUserAccount: $user = fm_get_parameter('user'); $pwd = fm_get_parameter('pwd'); () $SQL_connect= mysql_connect($server,$account,$password); if( $SQL_connect===false) { errorHandler(SQL_ERR_COULD_NOT_CONNECT, 'Database: '. $db); return ; } mysql_select_db($db) or die("Selection of database ".$db." failed".mysql_error()); $user = mysql_real_escape_string( $user); $pwd = mysql_real_escape_string( $pwd); $query = "SELECT count(1) as Counter FROM Adressen WHERE d_Email_t='".$user."' and d_Passwort_t='".$pwd."' and d_active_i='1'"; $res = mysql_query($query); if(!empty($res)){ $row = mysql_fetch_assoc($res); echo $row['Counter']; }
  • Folie 21
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Letzte Sitzungsnummer holen PHPx_SQL_GetSynchNo: mysql_select_db($db) or die("Selection of database ".$db." failed".mysql_error()); $query= "SELECT * FROM Adressen WHERE d_Email_t='".$user."' and d_Passwort_t='".$pwd."' and d_active_i='1'"; $res= mysql_query($query); $iad= 0; while($row = mysql_fetch_assoc($res)){ $litdat_ID = $row['_pk_guid']; $litdat_lastsynch = $row['d_SynchId_n']; $iad++; echo $litdat_ID." "; echo $litdat_lastsynch; } if( $iad!=1) { echo 'Error'; return ; }
  • Folie 22
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL und neue Sitzungsnummer schreiben PHPx_SQL_SetServerSynchNo: $sid = fm_get_parameter('sid'); mysql_select_db($db) or die("Selection of database ".$db." failed".mysql_error()); $user = mysql_real_escape_string( $user); $pwd = mysql_real_escape_string( $pwd); $query = "UPDATE Adressen SET d_SynchId_n='".$sid."',d_LastUploadId_n='".$sid."',d_LastUpload_t=now() WHERE d_Email_t='".$user."' AND d_Passwort_t='".$pwd."'"; $res = mysql_query($query);
  • Folie 23
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Die ganze bung im FM-Script Variable setzen [$SQL_call; Wert:PHPx_SQL_GetSynchNo ( _DGlobal::d_LLwebuser_tg; _DGlobal::d_LLwebpassword_tg; sys_Globals::s_SQLDB ; sys_Globals::s_SQLServer ; sys_Globals::s_SQLAccount ; sys_Globals::s_SQLPassword )] Wenn [$SQL_Call = "Error"] Aktuelles Script verlassen ["Error: Konnte Synch-Nr. nicht lesen"] Sonst Variable setzen [$Result; Wert:Substitute( $SQL_call ; " " ; )] Variable setzen [$$SQLUserID; Wert:GetValue( $Result ; 1)] Variable setzen [$$SQLLastSynchID; Wert:GetValue( $Result ; 2)] Feldwert setzen [_DGlobal::d_LLwebnextsyncno_ng[]; $$SQLLastSynchID+1] Schreibe nderung Datens./Abfrage [Ohne Dialogfeld] Ende-Wenn Variable setzen [$SQL_call; PHPx_SQL_SetServerSynchNo ( _DGlobal::d_LLwebuser_tg; _DGlobal::d_LLwebpassword_tg; sys_Globals::s_SQLDB ; sys_Globals::s_SQLServer ; sys_Globals::s_SQLAccount ; sys_Globals::s_SQLPassword ; _DGlobal::d_LLwebnextsyncno_ng)] Wenn [$SQL_Call = "Error"] Aktuelles Script verlassen ["Error: Konnte Synch-Nr. nicht schreiben"] Sonst Aktuelles Script verlassen ["OK"] Ende-Wenn
  • Folie 24
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Datenstrukturen vergleichen Statt hart codiertem Datenaustausch Datenbanken analysieren 1.Tabellenlisten auslesen & vergleichen o FM: Variable Setzen[ $TablesInFM ; "Autoren" & & "Periodikum" & & "Titel" ] o SQL: $TablesInSQL mysql_select_db($db) or die("Selection of database ".$db." failed".mysql_error()); $query = mysql_query("SHOW TABLES"); while($row = mysql_fetch_assoc($query)) { echo $row['Tables_in_'.$db]." " ; } o Schnittmenge: [$TableList = TrText_SortLines( "-unused" ; TrText_ANDText( "- unused" ; $TablesInSQL ; $$TablesInFM )
  • Folie 25
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Datenstrukturen vergleichen 2.Feldlisten auslesen & vergleichen o Script ausfhren ["fn.Smartpill: Get Fieldlist from MYSQL(List)"] o Variable setzen [$Table_sql; Wert:Get(ScriptResult)] o Script ausfhren [" fn.Get Fieldlist from Transfer(List)"] o Variable setzen [$Table_fm; Wert:Get(ScriptResult)] o Wenn [$Table_sql = "Error" or $Table_fm = "Error"] o Aktuelles Script verlassen ["Error"] o Sonst $Result = Let( [ $list = TrText_SortLines( "-unused" ; TrText_ANDText( "-unused" ; $table_sql ; $table_fm )); $list2 = cf.LinesNotStartingWith( $list ; "x";ValueCount( $list );""); $length = Length($list2) -1]; Left( $list2 ; $length)) o Aktuelles Script verlassen [$Result] o Ende (wenn)
  • Folie 26
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Daten zum SQL-Server schicken Variable setzen [$Source; Wert:Get(LayoutTableName)] Schleife (Anfang) Variable setzen [$ID; Wert:Evaluate($Source & "::_pk_guid")] Variable setzen [$Commonfields; Wert:Let( $Fields = cf.SQLInsertCommand ( $Datafields ; "x" ; ValueCount($Datafields) );Left( $Fields; Length( $Fields )-2))] Variable setzen [$Values; Wert:Let($Prevalues = cf.SQLInsertCommandValues ( $Datafields ; "x" ; ValueCount($Datafields)) ;"" & Left( $Prevalues ; Length( $Prevalues )-2))] Variable setzen [$Result; Wert:PHPx_SQL_WriteRecordInSQL_DB ( _DGlobal::d_LLwebuser_tg; _DGlobal::d_LLwebpassword_tg; sys_Globals::s_SQLDB ; sys_Globals::s_SQLServer ; sys_Globals::s_SQLAccount ; sys_Globals::s_SQLPassword ; $$Kontext ; $ID ; $Commonfields ; $Values ; _DGlobal::d_LLwebnextsyncno_ng)] Variable setzen [$$SQL_error; Wert:PHP_GetLastError] Gehe zu Datens./Abfrage/Seite [Nchste(r); Nach letztem beenden] Schleife (Ende)
  • Folie 27
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL cf.SqlInsertCommand //Use like: SetField(Field; cf.SQLUpdateCommand ( T1; T2; ValueCount(T1) )) //Params: pT1, pSearch, NpT1 SetzeVars( [line = HoleWert(pT1; NpT1); content = Berechne( line ) ]; Falls( NpT1 > 1; cf.SQLInsertCommand(pT1; pSearch; NpT1-1)) & Falls( ZeichenLinks(line; Lnge( pSearch )) psearch UND NICHT IstLeer( content ); line & ",") ) "OrtPLZLandRegion" "Ort,PLZ,Land,Region,"
  • Folie 28 "_t" ODER ZeichenLinks(line; 10)="d_datentyp" ODER $$UTFSupport 1 ; Berechne( line ) ; cf.CSStoFMText ( LiesAlsCSS( Berechne( line )))); Str2 = Austauschen( Str1 ; "\\" ; "\\\\"); Content = "'" & Austauschen( Str2 ; ["'" ; "''"];["\"" ; "\\\""];["\" ; "\\\"];["\" ; "\\\"];["" ; "\"];["" ; "\"];["\";"\\\"]) & "'" ]; Falls( NpT1 > 1; cf.SQLInsertCommandValues(pT1; pSearch; NpT1-1)) & Falls( ZeichenLinks(line; Lnge( pSearch )) psearch UND NICHT IstLeer( Str1 ); content & ",") ) D_Titel_td_Ort_td_Schlagworte_t (Stdte mit schwierigen Namen N'Djamena) 'Stdte mit schwierigen Namen','','N''Djamena',">
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL cf.SqlInsertCommandValues //Use like: SetField(Field; cf.SQLInsertCommandValues ( T1; T2; ValueCount(T1) )) //Params: pT1, pSearch, NpT1 //cf.SQLInsertCommandValues= SetzeVars( [line=HoleWert(pT1; NpT1); Str1 = Falls( ZeichenLinks( line ;1 ) = "_" ODER ZeichenRechts(line;2) "_t" ODER ZeichenLinks(line; 10)="d_datentyp" ODER $$UTFSupport 1 ; Berechne( line ) ; cf.CSStoFMText ( LiesAlsCSS( Berechne( line )))); Str2 = Austauschen( Str1 ; "\\" ; "\\\\"); Content = "'" & Austauschen( Str2 ; ["'" ; "''"];["\"" ; "\\\""];["\" ; "\\\"];["\" ; "\\\"];["" ; "\"];["" ; "\"];["\";"\\\"]) & "'" ]; Falls( NpT1 > 1; cf.SQLInsertCommandValues(pT1; pSearch; NpT1-1)) & Falls( ZeichenLinks(line; Lnge( pSearch )) psearch UND NICHT IstLeer( Str1 ); content & ",") ) D_Titel_td_Ort_td_Schlagworte_t (Stdte mit schwierigen Namen N'Djamena) 'Stdte mit schwierigen Namen','','N''Djamena',
  • Folie 29
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL SQL_WriteRecordInSQL_DB $id ='_pk_GUID'; $noempty=false; // print out only non empty fields if(isset($dbtable) && !empty($dbtable)){ $commonfields.=",x_fk_User, s_webAenderung_t, x_web_synchid"; $content.=",'".$litdat_ID."', now(),'".$websynchid."'"; $where =" WHERE _pk_GUID='". $idsel."'"; $checkres = mysql_query("select * from ".$dbtable." ".$where ); $resdel = True; if(mysql_fetch_assoc($checkres)){ // record already exists $resdel = mysql_query( "delete from ".$dbtable."".$where); if($resdel===False) echo "Failed delete: ".$idsel." "; } $update = "insert into ".$dbtable." (".$commonfields.") VALUES (".$content.") "; if($resdel){ $updres = mysql_query($update); if( $updres === False ) { echo "Failed insert: ".$idsel." "; echo mysql_error(); }
  • Folie 30 '".$lastid."'"; if(!empty($nextid)) $sel.=" AND x_web_synchid != '".$nextid."'"; if(!empty($litdat_datesince)){ date_default_timezone_set('Europe/Berlin'); $sel.= " AND s_webAenderung_t >'".$litdat_datesince."'"; } $query ="SELECT ".$commonfields." FROM ".$dbtable." ".$sel; $res = mysql_query($query); ">
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Daten vom SQL-Server holen 1.Die Selection definieren $sel = "WHERE x_fk_User='".$litdat_ID."'"; if(!empty( $lastid)) $sel.=" AND x_web_synchid > '".$lastid."'"; if(!empty($nextid)) $sel.=" AND x_web_synchid != '".$nextid."'"; if(!empty($litdat_datesince)){ date_default_timezone_set('Europe/Berlin'); $sel.= " AND s_webAenderung_t >'".$litdat_datesince."'"; } $query ="SELECT ".$commonfields." FROM ".$dbtable." ".$sel; $res = mysql_query($query);
  • Folie 31 $value){ $value = str_replace("'","''",$value); if(!empty($fields)){ $fields.=","; $content.=",";} $fields.= "\"".$fieldname."\""; $content.="'".$value."'"; } $ID = $dbrow['_pk_GUID']; $ir++; $fields.=",x_IDzuAktualisieren"; $content.=",'".$ID."'"; $insert = "insert into \"TD_".$dbtable."\" (".$fields.") VALUES (".$content.") "; $resins = fm_sql_execute($insert); if($resins===False) {echo "Failed: ".$ID." "; echo fm_get_last_error(); echo "
    ";} } echo "export ".$dbtable.": ".$ir." records
    "; $pb = fm_close_progress_bar('web2local'); }">
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Daten vom SQL-Server holen 2.Werte lesen und in FM-Tabelle schreiben while($dbrow = mysql_fetch_assoc($res)){ // loop over all records $fields = ""; $content=""; $if=0; foreach($dbrow as $fieldname => $value){ $value = str_replace("'","''",$value); if(!empty($fields)){ $fields.=","; $content.=",";} $fields.= "\"".$fieldname."\""; $content.="'".$value."'"; } $ID = $dbrow['_pk_GUID']; $ir++; $fields.=",x_IDzuAktualisieren"; $content.=",'".$ID."'"; $insert = "insert into \"TD_".$dbtable."\" (".$fields.") VALUES (".$content.") "; $resins = fm_sql_execute($insert); if($resins===False) {echo "Failed: ".$ID." "; echo fm_get_last_error(); echo "
    ";} } echo "export ".$dbtable.": ".$ir." records
    "; $pb = fm_close_progress_bar('web2local'); }
  • Folie 32
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Konflikte lsen ID bekannt Vorhandenen Datensatz aktualisieren ID unbekannt, aber Match ber Namen: User fragen: Zuordnen zu vorhandenem Datensatz, Relationen anpassen Neuer Datensatz Verwerfen
  • Folie 33
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Daten schreiben Daten aus dem Transfermodul nach Filemaker zurckschreiben Codierungen zurckrechnen Datensatz erzeugen wenn neu Datensatz updaten
  • Folie 34
  • FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL FileMaker Konferenz2010 Vielen Dank unseren Sponsoren Danke fr das Bewerten dieses Vortrages
of 34/34
FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH Datenaustausch mit SQL Datenaustausch zwischen FileMaker und MySQL Lesen, Vergleichen, Schreiben FileMaker Konferenz2010 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com
Embed Size (px)
Recommended