littleyoda / hibiscus.depotviewer

Depotviewer Plugin für Hibiscus
30 stars 15 forks source link

Fehler beim Aktualisieren von Wertpapier-Kursen #100

Open Stullemon opened 2 years ago

Stullemon commented 2 years ago

Hi, ich habe Probleme bei der Aktualisierung von Wertpapierkursen. Hintergrund ist, dass ich eine Aktie einfügen wollte, die nicht über die Liste der Xetra verfügbar ist. Also habe ich (wie irgendwo gelesen) eine beliebige andere Aktie eingefügt und dann so verändert, dass alles mit den "offiziellen" Daten (WKN, ISIN, Name) übereinstimmt. Anschließend habe ich nach einigem Probieren einige Kursdaten einlesen können. Versuche ich diese über eine Download-URL zu aktualisieren, so gibt es zwar keine Fehlermeldung, das letzte Kurs-Datum bleibt aber dort stehen, wo es war.

Um das Problem zu lösen, habe ich jameica aus einem Backup wiederhergestellt und dann wie oben beschrieben das Wertpapier von null auf hinzugefügt (anderes hinzugefügt und angepasst). Anschließend habe ich direkt über eine Ariva-URL versucht die Kursdaten zu aktualisieren. Sobald dies (ohne Fehler) abgeschlossen ist, werden gar keine Wertpapiere mehr angezeigt und im Log kommt folgender Fehler im Log:

Fehler bei der SQL Anweisung: SELECT * , (SELECT kurs   FROM depotviewer_kurse k    INNER JOIN      (SELECT wpid, max( kursdatum ) as MaxDatum      FROM depotviewer_kurse      GROUP BY wpid       ) AS groupeddatum   ON k.wpid = groupeddatum.wpid AND k.wpid = depotviewer_wertpapier.id    AND k.kursdatum = groupeddatum.MaxDatum) AS Kurs,(SELECT max( kursdatum ) FROM depotviewer_kurse WHERE wpid = depotviewer_wertpapier.id ) AS Kursdatum FROM depotviewer_wertpapier
org.h2.jdbc.JdbcSQLDataException: Skalar-Unterabfrage enthält mehr als eine Zeile
Scalar subquery contains more than one row; SQL statement:
SELECT * , (SELECT kurs     FROM depotviewer_kurse k    INNER JOIN      (SELECT wpid, max( kursdatum ) as MaxDatum      FROM depotviewer_kurse      GROUP BY wpid       ) AS groupeddatum   ON k.wpid = groupeddatum.wpid AND k.wpid = depotviewer_wertpapier.id    AND k.kursdatum = groupeddatum.MaxDatum) AS Kurs,(SELECT max( kursdatum ) FROM depotviewer_kurse WHERE wpid = depotviewer_wertpapier.id ) AS Kursdatum FROM depotviewer_wertpapier [90053-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:587)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:205)
    at org.h2.message.DbException.get(DbException.java:181)
    at org.h2.message.DbException.get(DbException.java:170)
    at org.h2.expression.Subquery.getValue(Subquery.java:49)
    at org.h2.expression.Alias.getValue(Alias.java:37)
    at org.h2.command.dml.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1890)
    at org.h2.result.LazyResult.hasNext(LazyResult.java:101)
    at org.h2.result.LazyResult.next(LazyResult.java:60)
    at org.h2.command.dml.Select.queryFlat(Select.java:742)
    at org.h2.command.dml.Select.queryWithoutCache(Select.java:884)
    at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:151)
    at org.h2.command.dml.Query.query(Query.java:435)
    at org.h2.command.dml.Query.query(Query.java:397)
    at org.h2.command.CommandContainer.query(CommandContainer.java:145)
    at org.h2.command.Command.executeQuery(Command.java:202)
    at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:85)
    at de.open4me.depot.sql.SQLUtils.getResultSet(SQLUtils.java:86)
    at de.open4me.depot.sql.SQLQueries.getWertpapiereMitKursdatum(SQLQueries.java:8)
    at de.open4me.depot.gui.control.WertpapiereTableControl.getTable(WertpapiereTableControl.java:38)
    at de.open4me.depot.gui.control.WertpapiereTableControl.getWepierControl(WertpapiereTableControl.java:88)
    at de.open4me.depot.gui.view.WertpapierView.bind(WertpapierView.java:38)
    at de.willuhn.jameica.gui.GUI$5.run(GUI.java:714)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
    at de.willuhn.jameica.gui.GUI$6.run(GUI.java:911)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:4725)
    at de.willuhn.jameica.gui.GUI.startSync(GUI.java:907)
    at de.willuhn.jameica.gui.GUI.startView(GUI.java:597)
    at de.willuhn.jameica.gui.GUI.startView(GUI.java:532)
    at de.willuhn.jameica.gui.GUI.startView(GUI.java:569)
    at de.open4me.depot.gui.action.WertpapierAction.handleAction(WertpapierAction.java:13)
    at de.willuhn.jameica.gui.Navigation.start(Navigation.java:371)
    at de.willuhn.jameica.gui.Navigation.access$500(Navigation.java:47)
    at de.willuhn.jameica.gui.Navigation$MyActionListener.handleEvent(Navigation.java:466)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4195)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1037)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4012)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3612)
    at de.willuhn.jameica.gui.GUI.loop(GUI.java:928)
    at de.willuhn.jameica.gui.GUI.init(GUI.java:331)
    at de.willuhn.jameica.system.Application.init(Application.java:145)
    at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
    at de.willuhn.jameica.Main.main(Main.java:75)

Ich bin etwas ratlos, wie ich das Problem beheben kann...

Stullemon commented 2 years ago

Auf Hinweis unter #98 habe ich dann wieder die ariva.js aktualisiert und nun brauche ich die CSV nicht mehr. Aber das Problem beim Aktualisieren aus heruntergeladener CSV bzw. aus CSV via URL sah sehr änlich aus, wie der Fehler unter #96 .

Stullemon commented 1 year ago

Das Problem scheint zurück zu sein. Es kommt immer "404 Not Found for https://www.ariva.de/fonds/amundi_luxemb-123/historische_ereignisse?clean_split=0" (mit jeweiligem ETF...). Wenn ich richtig verstanden habe, was passiert, dann muss folgende Stelle ausgetauscht werden: eventUrl = url + "/historische_ereignisse?clean_split=0"; durch: eventUrl = url + "/dividende-split?clean_split=0";

Stullemon commented 1 year ago

Der "offizielle" Patch hat es nochmal etwas weiter vereinfacht. Ist im repository von faiteanu