Daten in Tabelle per Abfrage ändern

Nachfrage zu " Support for UPDATE, DELETE, INSERT queries ",

  • ob ich das richtig verstanden habe:
    Ich habe eine Tabelle mit Buchungsdaten von der Bank, aber ohne korrekten Verwendungszweck. Den finde ich in einer csv-Tabelle von Paypal bzw. amazon und kann den auswerten lassen zu einer Kategorie.
    Die Tabellen möchte ich per Abfrage verknüpfen, (was hier nur über den Betrag geht, weil diese Finanzdienstleister den Geschäftsgegenstand nicht in der Abbuchung vom Bankkonto weitergeben!) -und möchte dann per Bedingung (ISNULL) die zu diesen Buchungen leeren Kategorie-Felder der Bank-Tabelle per UPDATE-Anweisung (pp) füllen lassen, indem sie aus der PayPal-Tabelle übernommen werden.
    In den Erläuterungen von Robert G habe ich verstanden, dass Base das nicht kann.
    Wie macht man das dann?
    (Der leidige Neid-Hinweis:In ACCESS geht das ganz einfach…)
    Danke für Erläuterungen…

CSV-Dateien kannst Du in Base nicht verknüpfen. Du wirst diese Tabelle in eine richtige Datenbank importieren müssen, hier also z.B. in HSQLDB oder Firebird als interne Datenbanken von Base.
.
Dann kannst Du auch eine Anweisung erstellen, mit der Du ein entsprechenden Update-Befehl erstellst. Der ist aber nicht über das Abfrage-Modul und die GUI ausführbar. Dafür musst Du den Code in Extras → SQL kopieren und dort ablaufen lassen.

Kannst Du uns erklären wie?

Nicht das, was Du gefragt hast, aber eine alternative Arbeitsweise:
Du kannst eine Tabellenansicht (VIEW) erstellen, die sich per IFNULL oder auch CASE WHEN die entsprechenden Daten aus der Paypal-Tabelle holt. Ich hoffe allerdings, dass Du mehr als den Betrag zur Identification hast.

Mit sogenannten “Aktionsabfragen”, also Abfragen, die mit UPDATE, DELETE oder INSERT beginnen und genauso (auch mit Parametern) gespeichert werden wie SELECT-Abfragen.

Für csv nach HSQL kann ich ein Makro anbieten. Geht aber auch ohne Makro.
Wie man das fehlende Feature “Aktionsabfragen” in Base nachbilden kann, habe ich in dem anderen Topic detailliert ausgeführt. Wenn Du was nicht verstehst, dann frage bitte konkreter.

zu Wanderer:
Als Aktionsabfrage - siehe -villeroy…

Die csv in die DB zu kopieren, ist nicht das Problem.
Ich wollte das per Abfrage erledigen, ohne ein Formular o.ä mit ‘Makro’ konstruieren zu müssen.
In Access gibt es Aktionsabfragen wie Tabellenerstellungsabfragen und man kann das Abfrageergebnis als csv exportieren u.v.m…
Hier stellte ich mir vor, die csv-Tabellen in die DB zu importieren und die Spalte ‘Kategorien’ wie beschrieben zu modifizieren, also die leeren Felder der Spalte zu füllen mit den zugeordneten Daten aus der anderen Tabelle, indem ich beide Tabellen in eine Abfrage ziehe und über die Spalte ‘Kategorien’ die SQL-Anweisung laufen lasse.
Leider muss man gut vorsortieren und auswählen, weil die PayPal und Konsorten keine verwertbaren Bezüge liefern, jedenfalls nicht im private-Bereich. Man hat als gleiche Daten praktisch nur die Beträge.
Es geht um ein paar tausend Datensätze für 4-5 Jahre…
.

Wenn Du das in Calc öffnest und dann reinkopierst ist es in der Tat ein wenig mühsam. Genau, nur rückwärts kannst Du aber auch nach csv exportieren.
csv importieren kann Access auch nicht, ohne dass jedes Detail genau vorkonfiguriert werden muss.
Hier müsstest Du auch ein paar grundlegende Dinge klarstellen, vor allem wie das zu importierende csv genau strukturiert ist.

Du kennst HSQL text tables?
https://www.hsqldb.org/doc/1.8/guide/ch06.html

Das importieren ist wirklich nicht das Problem. Es geht nur darum, das Abfragefeld ‘Kategorien’ zu modifizieren, also die leeren Felder zu füllen mit den Kategorien aus der PayPal-Tabelle und so abzuspeichern. Wenn das fehlerfrei gelingt, kann ich das in der banking-Tabelle machen (Hibiscus, hatten wir neulich als Thema).
Das ist zwar 'ne h2 DB, von Robert nicht geliebt, ist aber nunmal vorgegeben - und die funzt dort fehlerfrei - und schnell.
Vorab kann ich das in base erledigen und als csv exportieren und entweder in die banking-h2-db einlesen oder als getrennte csv-Tabelle in DATEV einlesen, das können meine Datev-Leute.
Ich weiß nicht, wie ich deine Lösung aus den Referenz-Artikel in base ans laufen kriege… Mache zuwenig in Base, auch weil der Reportdesigner immer als fast tot beschrieben wird…
Außerdem sind die Handbücher nicht ganz meine Sprache…

H2 ist super, und jetzt verstehe ich überhaupt nicht, wo Dein Problem liegt. Was hindert Dich daran, eine Ansicht zu erstellen, die zu jedem Eintrag in A die passende Kategorie aus B wählt. Daraus ist dann ein simples UPDATE statement zu erstellen, das in einer Befehlsschaltfläche hinterlegt werden kann. Fertig ist die Aktionsabfrage.

Das von Robert geschriebene Handbuch ist in deutscher Sprache verfasst.

P.S. ein Abgleich der nur auf einer Spalte mit Zahlungsbeträgen beruht ist natürlich hahnebüchen. Ein Datum wird doch wohl noch mit dabei sein, oder?

Ein Formular ist insofern sehr nützlich, weil es Dir erlaubt, vor dem Import nochmal einen Blick auf die Daten zu werfen und z.B. Duplikate, nicht zugeordnete oder mehrdeutige Datensätze herauszustellen.
Das Makro habe ich ja auch schon fertig geschrieben. Es sind wirklich nur ein paar wenige Zeilen, aber mit sehr vielen Parametern

Die Bank hat den Zahlungsausgang an Paypal, von denen habe ich nur den Zahlungsausgang an den Lieferanten. Die Abbuchung von PayPal von der Bank hat nicht das gleiche Datum. Gleiche Referenzbezeichnungen pro Vorgang gibt es nicht, nur den Betrag.
Das genügt auch, denn wenige genaue Beträge gibt es doppelt.
“Ansicht”: Man muss erstmal lernen, dass eine Abfrage das nicht kann.
Die Tabellen haben nur 4-5 Spalten, ganz unkompliziert. Das kann doch nur eine ganz simple SQL-Anweisung sein.
Schicke dir morgen mal 'n Muster…, schon in Base-HSQL eingelesen…
Danke

Ich weiß schon, warum ich von Faschisten keine Dienstleistungen annehme.

Du spricht mir sowas von aus der Seele…! -ist nicht für mich, die Sache.
Überhaupt… mag ich Deinen Stil. Bleib so!

Danke für eure Mühe und Interesse, es klappt nicht so wie ich dachte. Muss die fehlenden Kategorien über das Listenfeld in hibiscus einzeln zuwählen. Ein Versuch einer Automatik ist mir in den Echtdaten der Banking-Tabelle zu riskant.
Von der Einschaltung solcher Finanzdienstleister kann man aus buchhalterischer Sicht nur abraten. Mit den Angaben, die man bei denen herunterladen kann, kann man die Buchungen nicht per Verknüpfung Buchhaltungskonten zuordnen, weil man den Bezug zum Erwerbsgeschäft inhaltlich nur raten kann.
Trotzdem sollte eine gewünschte Aktionsabfrage möglich sein.
Andreas - kannst du nicht mal eine odb-Datei mit den Funktionalitäten entwerfen, so dass man sieht, wie man das machen muß?
Meine Tabellen könnte ich nur per PM schicken.
Danke nochmals…

Nein, das geht auch öffentlich. Man braucht wirklich nur eine oder zwei Zeien aus dem csv, wo der Text ausgeixt ist. Wichtig sind nur Trennzeichen, Dezimalformate, Datumsformate und welche Spalte an welcher Position welche Bedeutung hat. Hier eine Zeile aus einem recht Kruden csv-Format der Deutschen Apotheker- und Ärztebank:
10.01.2022;10.01.2022;"Dauerauftrag Überweisung";"Stadtwerke xxxxxxx";"VKto 2135004 Stadtwerke xxxxxxxx Info: VKto 2135004";EUR;;579;"759,78"
Wichtig wären vielleicht noch die zu erwartende maximalen Längen jeder Textpalte, damit man beim Import keine Texte abschneidet. Datentypen sollten immer so klein wie möglich und so groß wie nötig gewählt werden.

Schicke ich morgen vom Bürorechner.
Das Format kenne ich gut. Habe viele Jahre die Banking-Daten in Access eingelesen und die Importspezifikationen dazu gespeichert, so daß man für die nächste USt-Voranmeldung sie nicht neu einrichten muß. - Das habe ich in base übrigens noch nicht gefunden, -die Möglichkeit, die Importeinstellungen zu speichern.
Der Import von csv in base ist ja sehr einfach, man kommt nur nicht sofort drauf: die csv in calc aufrufen, den gesamten Inhalt markieren und speichern und dann in base in die Tabellenliste ein Rechtsclick - Einfügen - und es öffnet sich der Importdialog, der ansonsten genauso funktioniert wie in Access. Auf denn…

Wissen wir denn mittlerweile wenigstens, von welcher Software wir hier reden? In diesem Thread ist bisher keine einzige konkrete Angabe über Dein Betriebssystem, die LibreOffice-Version oder die verwendete Datenbank-Engine zu finden. Wir faseln die ganze Zeit über MS Access und vollkommen unklare Datenstrukturen. Damit würdest Du in keinem Access-Forum durchkommen.

Linux mint 21.3, die LO-Version aus dem repository,also LO 7.3.7.2, hibiscus hat die h2 db, aus der habe ich als csv exportiert, meine Abfrageversuch in die Standard-HSQL-odb.
Die h2DB kann ich in LO öffnen und bearbeiten, sogar gleichzeitig zu hibiscus. -Kann ich auch eine neue h2db anlegen in dem normalen Datenbank-Dialog?
Würde lieber damit arbeiten, wenn ich lese, welche Restriktionen zum einen die HSQLdb und zum anderen auch die Firebird haben.

HSQL hat keinerlei Restriktionen wenn man es wie H2 als externe Datenbank benutzt. Mit dem eingebetteten kommt man aber auch sehr weit (wenn man will und kann).
Firebird kann kein csv.

Welche Datenbanken Base erstellen kann:

  1. eingebettetes HSQL1 wenn Java erlaubt ist. Das lässt sich recht einfach in eine richtige HSQLDB2 umwandeln.
  2. eingebettetes Firebird3 wenn Java und “experimentelle Features” erlaubt sind.
  3. Firebird3 als externe Datenbank
  4. dBase als externe Datenbank in einem dBase-Verzeichnis

Mehr weiß ich nicht. Es wäre durchaus möglich, dass man eine Verbindung zu einer noch nicht existierenden H2-DB erstellen kann, die dann aus dem Nichts erzeugt wird, so wie bei dBase und FB3.

Wir brauchen irgendeine HSQLDB für den csv-Import und ein externes Formular, das ausgewählte Buchungen aus der H2-Datenbank den zu importierenden csv-Daten zuordnen kann. Dann noch ein externes Formula, das importierte csv-Daten mit den zugeordneten Buchungen der H2-Datenbank anzeigen kann.