Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Aktualisierungsabfragen mit mehreren Kriterien

Begonnen von silentwolf, Oktober 23, 2015, 11:46:22

⏪ vorheriges - nächstes ⏩

MaggieMay

Wo sind denn die Spaltentrennzeichen geblieben, ich dachte es geht hier um eine csv-Datei?
Das ist jetzt aber etwas völlig anderes als zuvor beschrieben, oder sehe ich das falsch?
Freundliche Grüße
MaggieMay

silentwolf

Hi Maggie,
ja das meinte ich ja mit meine Frage das jetzt die CSV Datei geändert wurde :( jetzt ist alles in einer Spalte und das war halt ein Auschnitt davon wie es nun leider von der Bank zur Verfügung gestellt wird.
Jetzt hab ich schon lange mit der vorherigen Version Code und Abfragen erstellt und jetzt ist alles wieder umsonst.
Es ist zum verrückt werden.

LG

MaggieMay

Ok, wenn du das so geliefert bekommst, wirst du wohl damit leben müssen, das war mir nicht klar.

Also bleibt dir nichts anderes übrig, als das Datenfeld nach den festen Einträgen zu durchsuchen und mit relativ festen Positionen die Daten auszulesen. Hilfreich hierbei sind die String-Funktionen Left, Mid, Right und Instr.

Wenn du dabei Hilfe brauchst, gib bitte noch an, was genau in welches Feld der Zieltabelle gebracht werden soll.

PS:
Bist du ganz sicher, dass du die Daten nicht auch in einem anderen Format bekommen könntest?
Freundliche Grüße
MaggieMay

silentwolf

Hallo Maggie,
danke das Du mir geschrieben hast! Na ja ich bekomme dies Datei wenn ich diese als CSV exportiere. Geht natürlich auch ausdrucken aber als CSV ist das die einzige Option die ich habe.
Ja ich kenn die funktionen left right mid und instr. nur damit das in einem aufwaschen geht müsste oder müssten diese vielleicht zusammengefasst in einer function sein oder?

Na ja werde mal versuchen hier eine einigermaßen vernüfntige Lösung zu erstellen.
Es ist schwierig hier eine konkrete Frage zu dem Problem zu stellen da so viele Informationen in einer Spalte enthalten sind die unterschiedlich ausgewertet werden müssen.

LG
Albert

MaggieMay

Hi,
Zitatda so viele Informationen in einer Spalte enthalten sind die unterschiedlich ausgewertet werden müssen
das müsstest du halt mal genauer spezifizieren, damit man dir dabei helfen kann.
Freundliche Grüße
MaggieMay

silentwolf

Hallo Maggie,
Creditor ID: AT25AEV00000004433 Mandatsnummer: 00110000000000000000000000000291767 Auftraggeberreferenz: AEV15265-E00551744 REF: 1200015092208443677526739580
Also in dieser Zeile hab ich schon einiges per Hand rausgenommen... aber wie würde ich nun z.B. Creditor ID:AT25AEV00000004433 in eine seperate Spalte anlegenkönnen und das selbe mit der Mandatsnummer:,,,,, usw.
diese Nummern können aber unterschiedlich lang sein.
Lg
Und danke
Albert

MaggieMay

ZitatAlso in dieser Zeile hab ich schon einiges per Hand rausgenommen...
Damit solltest du gar nicht erst anfangen! Schreibe eine Funktion, welche dir gezielt die Werte aus der Datei ausliest. Dafür solltest du aber die Originaldatei als Grundlage nehmen, sonst hört die Bastelei ja nie auf.

Ich stelle mir die Abfrage dann folgendermaßen vor:
Insert Into zieltabelle (feld1, feld2, feld3)
Select getValue(feld, 1), getValue(feld, 2), getValue(feld, 3)
From csvTabelle

oder du gibst direkt den zu suchenden Ausdruck mit:
Insert Into zieltabelle (feld1, feld2, feld3)
Select getValue(feld, "Creditor ID"), getValue(feld, "Mandatsnummer:"), getValue(feld, "Auftraggeberreferenz:")
From csvTabelle

Die Funktion liefert dann den dazu extrahierten Wert zurück.
Freundliche Grüße
MaggieMay

silentwolf

Hallo Maggie,
vielen Dank für Deine mail!
Ja es ist eine ständige Bastellei da hast recht!
Dein erster Code soll das ein Array sein oder wie?
Ja nicht so ganz einfach mit einer function erstellen...soll man die Daten in einer Abfrage filtern und dann die functionen verwenden?
Ich weis schon das es schwierig ist es nachzuvollziehen aber einmal ist in der Spalte ein Beistrich dann wieder ein doppelpunkt oder einfach nur leerzeichen die auch nicht gerade so Optimal sind da z.B. "Hans Huber GmbH Adresse 5 Auftraggeberreferenz: Re 1777   525,35 Ref:366662255224" so geschrieben ist und ich gerne Hans Huber GmbH in einer Spalte haben möchte und Re 1777 in einer anderen. Aber wie gesagt jede Zeile sieht einfach anders aus und ist anders aufgebaut je nachdem wie oder in welcher Zeile der Auftraggeber eben die Info bei einer Überweisung eingetragen hat.
Am Ende wäre ja vom Vorteil das ich eine Funktion oder eine Reihe von Funktionen immer wieder verwenden kann.

Lg
Albert

MaggieMay

ZitatIch weis schon das es schwierig ist es nachzuvollziehen
Nein, es ist nicht schwierig nachzuvollziehen, weil es nichts nachzuvollziehen gibt, solange der Dateiaufbau nicht einmal ganz konkret beschrieben wird. Die Mühe wirst du dir so oder so machen müssen, da kommst du nicht drum herum.

Bislang bin ich davon ausgegangen, dass das Format zumindest standardisiert ist, wenn aber beliebige Kundeneingaben darin enthalten sein können (der eine schreibt "RE-NR:", der andere "Rechnungsnummer" etc.) und du sollst anhand dieser Eingaben die Daten finden, wird es natürlich noch schwieriger - wenn nicht gar unmöglich.

Wie sieht das nun tatsächlich aus und wie willst du da vorgehen?
Freundliche Grüße
MaggieMay

silentwolf

ZitatWie sieht das nun tatsächlich aus und wie willst du da vorgehen?
Ja eben hier habe ich einfach überhaupt keinen Plan wie das am besten gehen soll und wo ich ansetzen soll oder könnte!
Sollte man vielleicht zuerst daten in einer Abfrage suchen bzw. filtern?
Aber dann geht das ja auch wieder mehr oder weniger zu Fuss oder nicht?
Habe ja eine function die mir den letztenSlash in einer Zeichenkette ausgibt der mir aber auch nicht mehr alles nützt da auch Daten gibt die z.B. Josef Huber Lohn 5/2015 stehten hat und diesen Lohn 5/2015 in einer anderen Spalte haben möchte damit ich weis wofür der Betrag bezahlt wurde.
Also am Ende sollten zwei Spalten so aussehen Spalte Umsatztext mit Josef Huber Verwendungszweck Lohn 5/2015
oder Firma Huber GmbH Verwendungszweck Gerätereperatur
In den Fällen wo eine Versicherung abbuchungen vornimmt zum Beispiel Zurick Versicherungs-Aktiengesellschaft Adresse 15 1015 Wien Creditor ID:AT000112020 Mandatsnummer:V-1020-5241112 Auftragsgeberreferenz da brauche ich dann die Mandatsnummer um festzustellen wofür die Versicherung bezahlt wurde.
Wie man sehen kann gibt es hier zig verschiedene Möglichkeiten wie die Daten in einer Spalte enthalten sind und die hier alle aufzuzählen würde wohl ziehmlich lange.
Soll man es zuerst filtern? Mit einer Abfrag um die Daten zu minimieren und dann eine funktion anwenden oder geht das mit einem Code um alles etwas vereinfacht und eben nachher noch weiter verwenden zu können.
Dachte mal auch an ein Array aber das geht ja auch nur wenn man es bis zur Leerzeile verwendet oder? Hier bin ich ganz unsicher wie man mit Arrays arbeiten kann.
Vielleicht bringt das ein wenig Licht ins Dunkle??

Lg



Beaker s.a.

Hallo silentwolf,
Hast Du Mal überprüft, ob es sich bei der "csv"-Datei vielleicht um eine Textdatei mit festen Feldlängen handelt? Das fehlende Feldtrennzeichen deutet darauf hin. Wenn das so sein sollte, dann kannst Du die Datei mit einem Type aufteilen und importieren.
Versuche doch Mal vom "Hersteller" der Datei eine Beschreibung (Feldlängen, Datentypen) zu bekommen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

@Silentwolf:
Ich kann mich da nur wiederholen: Stelle konkrete Beispiele des Inhalts der Datei vor und beschreibe WAS daraus WIE verwendet werden soll. Es geht hier doch zunächst darum, was überhaupt gemacht werden soll. Über das WIE KANN MAN DAS LÖSEN können wir uns dann gern gemeinsam Gedanken machen. Ohne die von dir zu liefernden Informationen geht das aber nicht. Und bitte, gib uns die Definitionen nicht als Romanvorlage, sondern in übersichtlicher, bspw. tabellarischer Form.
Freundliche Grüße
MaggieMay

silentwolf

Hallo Eckhard,
danke für die Nachricht! Na werde mal nachfragen bezüglich der Datei.
@Maggie...
ja ich hab doch schon ein Paar Beispiele angegeben wie die Spalte aussieht und was ich daraus brauchen würde.
Würde Gerne den Kunden bzw. Firma in eine seperate Spalte ausgeben den Verwendungszweck sozusagen in eine seperate Spalte.
Das Problem ist aber das die Firma einfach Allianz Elementar Versicherungs-Aktiengesellschaft Hietzinger Kai 101-105 1130 Wien Creditor ID: AT25kkkdk und und und Daten enthalten hat.
Bei Versicherungen zum Beispiel wäre oder bräuchte ich die Mandatsnummer oder manchmal die Creditor Nummer damit ich weis für welche Versicherung diese Buchung vorgenommen wurde.
Aber wie gesagt es sind ja wie man sieht einige Leerzeichen allein schon in der Versicherung... wenn ich nun diese in Spalte in Text aufteile in Excel dann hab ich weis nicht 15 Neue Spalten.... Also dieser Ansatz ist nicht grad optimal.
Auch muss mann wissen einmal ist der Firmenname am Schluss der Spalte mit Slash getrennt einmal dann wieder Herr Gruber/Lohn/5/2015 dann funktioniert wieder meine funktion lastSlash nicht der die letzten Strings nach dem Slash ausgibt.
Das Problem nocheinmal ist das zig verschiedene Daten also Daten Konstellationen in dieser Spalte vorkommen und ich nicht weis ich dann am besten beginnen soll damit ich diese Daten irgendwie filtern bzw. in seperaten Spalten einfügen kann.
Hab ja schon mal gefragt ob ich die Daten zuerst filtern soll nach sagen wir mal Allianz und dann meine funktion anwenden soll die diesbezüglich vielleicht passend sein könnte??
Kann ja nicht die ganze Spalte beschreiben ist ja in jeder Spalte etwas anderes vorhanden das unterschiedlich bearbeitet werden mussoder soll...
Es gibt Daten die zum Beispiel so aussehen.
Überweisung Internett Am 2015-10-15 AT88556458554/Gerhard Huber Lohn 9/2015 REF:4315521412412
hier würde alles weg gehören das bis zum ersten Slash steht. Dann den Namen "Gerhard Huber" in dieser Spalte stehen lassen und den "Lohn 9/2015" in einer neuen Spalte einfügen... die Ref: kann auch komplet weg.
Das sind aber natülrich nur ein paar Daten in meiner Spalte.
:-\

MaggieMay

#28
Ich habe den Eindruck, dass du etwas konfus an die Sache heran gehst. Es bleibt dir doch gar nichts anderes übrig, als sämtliche Fallbeispiele aufzulisten und anzugeben was daraus nach welchen Regeln wohin extrahiert werden soll. Das musst du nicht unbedingt veröffentlichen, kannst du auch für dich selbst machen, aber es geht kein Weg daran vorbei.

Zitatob ich die Daten zuerst filtern soll nach sagen wir mal Allianz und dann meine funktion anwenden soll die diesbezüglich vielleicht passend sein könnte??

Was nützt dir das Filtern? Du musst doch alle Datensätze irgendwie verarbeiten, oder fallen einige völlig raus?
Und natürlich brauchst du eine Funktion für alle Fälle und nicht zig verschiedene. Einen ersten Ansatz dazu hatte ich dir bereits genannt.

Zitat von: silentwolf am November 12, 2015, 15:31:24Dein erster Code soll das ein Array sein oder wie?
Was ich da gezeigt hatte ist der SQL-Code einer Anfügeabfrage, in den Klammern steht die Feldliste.
Freundliche Grüße
MaggieMay

silentwolf

Hi Maggie,
danke wieder für Deine Antwort!
Also in einer Abfrage hätte ich es zuerst gefiltert damit ich nur diese Fallbeispiele die zu einer funktion relevant sind verwenden kann.
z.B. ÜBERWEISUNG INTERNET AM 2015-03-20 AT121212352222/Gemeinde XXX 63525222
hier würde ich nur die Gemeinde XXX benötigen und die Referenznummer.
dann gibt es z.B. ÜBERWEISUNG INTERNET AM 2015-03-20: 728558 Bau Teilzahlung Heizung AT121212352222/Firma Huber REF: 63525222
Also wo der Doppelpunkt hinter der Überweisung steht da benötige ich den Verwendungszweck "Bau Teilzahlung" und die Firma jeweils in einer anderen Spalte.
Es soll am Ende also in einer Spalte "Buchungstext" Firma Huber und in Spalte "Verwendungszweck" Bau Teilzahlung stehen der rest weg.
In einigen anderen Beispielen beginnt die Spalte mit der Firma usw.
Eine funktion die über die gesamte Spalte funktioniert wäre natürlich super aber das ist für mich im Moment noch sehr schwierig zu verwirklichen.. eben wegen den verschiedenen Möglichkeiten und was aus der Spalte benötigt wird :(
Habe ein paar Funktionen gebastelt wo ich ab den ersten Slash die Daten ausgebe oder vom letzten Slash. Aber wie ich das alles zusammenfassen kann??
Ja und manche Daten können komplett aus der Spalte verschwienden.

LG