Zitat geschrieben von Jabberwock
Aber an sich ist das ein Glücksspiel, oder nicht?
Wenn ich jetzt an Onlinebanking Software denke wie Wiso oder so da kann ich mir eigentlich nicht vorstellen das die das so machen...
Wenn Du es anständig machst, dann ist das keinesfalls ein Glücksspiel! Und ja, Bankingprogramme machen es genau so, denn was anderes gibt's nicht!
Von wegen anständig: Du kannst natürlich nicht Alles gegen Alles matchen, dann kommt genau das Problem heraus, das Du mit Deinen Tankbuchungen ansprichst. Der Abgleich muß folgendermaßen laufen: Sagen wir Du hast 5 Buchungen schon verarbeitet und bekommst beim nächsten Abruf 8 Buchungen. Nun gehst Du her und suchst zu der ersten alten Datenbankbuchung im Neuabruf eine identische. Wenn Du die gefunden hast, dann löschst Du sie im Neuabruf UND daktivierst sie im Altbestand für weiteren Abgleich. Dann nimmst Du die zweite Datenbankbuchung und suchst in den verbliebenen 7 Buchungen eine identische. Und so weiter. Am Ende sind alle Datenbankbuchungen abgearbeitet, und exakt dazu passende neue Buchungen gelöscht. Übrig bleibt der Rest, der zu keiner alten gepaßt hat. Die zweite Tankbuchung bleibt nun auch als NEU bestehen, denn es gab im Datenbankbestand keine zweite, mit der sie abgeglichen werden konnte. Und gegen die Erste wurde ja schon die andere abgeglichen. Damit hast Du dann exakt nur die neuen Buchungen, da ist keinerlei Glück dabei.
Außerdem empfielt es sich natürlich, die bereits vorhandenen Buchungen zu behalten und die dazu passenden neuen zu löschen, denn evtl. hat man bei den vorhandenen schon eigene Ergänzungen gemacht (Kontierung, Notizen ect.), dass bleibt dann erhalten.
Eine weitere Möglichkeit (wenn man nicht eigene Ergänzungen erhalten muß) bietet sich noch dadurch, dass man in der eigenen Datenbank immer die Buchungen rückwärts bis zu dem Zeitpunkt löscht, zu dem sich noch was ändern kann. Sprich, bis zum letzten Abruf + 1 Tag und die dann komplett durch die neuen Buchungen ersetzt. Beispiel: Ich habe vorgestern das letzte Mal abgerufen, also lösche ich alle Buchungen bis vor-vorgestern und schreibe dann den Neuabruf in die Datenbank.
Das mit dem Abgleich muß man natürlich auch nicht immer wieder für den gesamten Bestand machen, sondern nur für den "offenen" Tag, als den Tag, AN dem man das letzte Mal abgerufen hat.