View Single Post
  #3  
Old 2007-11-23, 19:10
hp_taferner hp_taferner is offline
Junior Member
 
Join Date: 2007-11
Posts: 3
Default Re: Concatenated field with separator

Hallo luz,

erstmal Danke. SyncML-Server schreibt jetzt das Feld korrekt in die DB.

Leider ist die Modifikation des xml-Files doch komplizierter als es scheint.

Ich schaffe nun, dass beim Sync die Daten des Handys in die DB geschrieben werden, aber die Daten der DB nicht ins Handy.
Ein Update eines Kontakts im Handy wird auch in die DB übertragen aber ein Update eines Kontakts in der DB löscht den Kontakt im Handy.

Ich denke mir, dass das damit zusammenhängt, dass "modified" in der eGroupWare-DB als UNIX_TIMESTAMP (in sec) und im SyncML-Server als ISO-Timestamp (2007-11-23 ...) behandelt wird.

Ich habe nun zwei Möglichkeiten:

1. ich erzeuge eine neue Tabelle mit contact_id => INT NOT NULL und contact_modified_time => datetime sowie einen Trigger für INSERT, UPDATE und DELETE, der bei jeder Änderung in der Kontakt-Tabelle der DB automatisch die Änderungszeit (als ISO) in die neue Tabelle schreibt.

Dann

<selectidandmodifiedsql>SELECT contact_id, from_unixtime(contact_modified) FROM egw_addressbook WHERE contact_owner=%u %AF</selectidandmodifiedsql>

und ändere <selectdatasql> so ab, dass dabei die Daten von der Kontakt-Tabelle und gleichzeitig die Änderungszeit von dieser zusätzlichen Tabelle eingelesen werden.

-- oder --

2. das xml-Skript liest über
<map name="contact_modified" references="REV" type="timestamp" mode="r" size="0"/>
die Änderungszeit als UNIX_TIMESTAMP ein und ein <afterreadscript> ändert den Wert in ISO um.
Gibt es im Skript Funktionen, die diese Umwandlung unterstützen?

Welche Lösung wäre sinnvoller (und einfacher zu implementieren)?

Vielen Dank im Voraus

Hans Peter
Reply With Quote