Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Aktualisierungsabfragen mit mehreren Kriterien

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

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo,
bin grad beim probieren ob ich eine Aktualisierungsabfrage mit mehreren Kriterien verwirklichen kann.
Habe es mal mit VBA und recordset gemacht und das funktioniert soweit aber es wird relativ unübersichtlich...
Wie kann man denn zum Beispiel in einer Aktualisierungsabfrage mehrere Kriterin in einer zusammenfassen.
z.B. Wenn Umsatztext = "Abschluss" Und Konto = "2800"(textfeld!")  dann Update Btext mit "Feld11" und Gegenkonto mit "8854"

Wenn Umsatztext = "Abschluss" Und Konto = "2810"(textfeld!")  dann Update Btext mit "Feld11" und Gegenkonto mit "8855"

Hoffe es kann jemand verstehen was ich gerne haben möchte und mir bitte einen Tipp geben?

Vielen Dank
LG
Albert

MzKlMu

Hallo,
willst Du dann für jedes Konto ein Gegenkonto über Wenn..Dann bestimmen ?
Du kannst davon ausgehen, wenn Wenn..Dann erforderlich ist, ist oftmals das Datenmodell falsch.

Hier ist nach meiner Auffassung eine weitere Tabelle notwendig die zu jedem Konto das Gegenkonto erfasst. Dann kannst Du das automatisch in einer Abfrage anzeigen. Eine Aktualisierung einer Tabelle ist dann gar nicht mehr notwendig.

Was ist BText ?
Gruß Klaus

silentwolf

Hallo Klaus,
danke für Deine Antwort!
Also der Hintergrud der ganzen Geschichte ist eine Tabelle die als CSV Datei importiert wird. Diese möchte ich nun so aktualisieren das es mir je nach Feldinhalt das Konto automatisch zuordnet und das Gegenkonto zuordnet.
Für die Konten habe ich eine Hilfstabelle erstellt die ich mit einer Update abfrage erstellt.

UPDATE tbl_Konto INNER JOIN tbl_Neu ON tbl_Konto.Quelle = tbl_Neu.IBAN SET tbl_Neu.Konto = [tbl_Konto].[Konto];
das funktioniert auch!

Nur habe ich eben verschiedene Felder mit verschiedenen Arten von Inhalten. Ich möchte mir da ich immer wieder eine CSV Datei importieren muss mir eine Art Vorlage basteln die mir dann eben diese neue CSV Datei automatisch updatet.
BText ist nur ein neues Feld wo das ich zugefügt habe das als zweites Buchungstext Feld mir Daten dort einfügen soll.

Hoffe das ist etwas verständlicher??
Die Wenn dann Abfragen sind nicht so viele also nicht für alle Konten es geht da auch um andere Felder zum Beispiel. Umsatztext..Inhalte wie Abschluss, Überweisung, Buchung, Gutschrift und dergleichen.
Bin mir einfach nicht sicher wie es am besten umgesetz werden soll. Damit es eben übersichtlich bleibt.. Denn mit VBA und Recordset das funktioniert aber es sind ewig lange Codes und deshalb unübersichtlich.

Vielen Dank!!

ebs17

ZitatBin mir einfach nicht sicher wie es am besten umgesetz werden soll.

Für einen Vorschlag solltest Du Ausgangssituation (CSV, DB mit ausgereiftem Datenmodell für die Importübernahme) zeigen, zusätzlich die gewünschte Endsituation, falls diese nicht aus den Ausgangsdaten selbsterklärend wäre.

Beste Lösungen aus halbfertigen und nicht funktionierenden Schritten abzuleiten ist mühsam und oft auch eine Sackgasse.

Zitataber es sind ewig lange Codes und deshalb unübersichtlich

Lange Codes kann man per Refactoring in mehrere kürzere und damit lesbare Prozeduren zerlegen.
Grobe Regel: Ein Schritt, der mehr als einmal gemacht wird, kann in eine eigene Prozedur ausgelagert werden. Wenn diese Prozedur dann noch einen aussagekräftigen Namen hat, erhältst Du in der Hauptprozedur eine bessere Übersichtlichkeit.

Aber selbstredend sind bei Massenimporten (und schon vorher) Abfragen gegenüber Recordsetschleifen zu bevorzugen, schon aus Performancegründen.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo Eberhart!
Danke auch Dir für Deine Nachricht.
Hier mal eine DB die so in dieser Art übernommen wird. In der tbl_Ergebnis soll zeigen wie die DB dann aussehen soll.
Es ist etwas schwierig alles zu erklären und aufzubereiten um es verständlich zu erklären aber ich hoffe jemand kann sich die Mühe machen und die DB mal ansehen und mir eine möglichen Lösungsansatz sagen.

Vielen Dank!!

LG
Albert

MzKlMu

Hallo,
ich habe keine Möglichkeit ACCDBs anzusehen. Ich habe nur Access2003 (MDB).
Gruß Klaus

silentwolf

Hallo Klaus,
anbei die geänderte Datei!

Vielen Dank für die Mühe!!


ebs17

In meinen Augen ist Tabelle2 (Ausgangstabelle) ganz einfach Schrott.

Da hat jemand eine externe Datei und dafür den schnellstgreifbaren Standardimport ausgeführt, obwohl die Ausgangsdatei sicher nicht einer Standard-CSV entspricht. Und nun glaubt jemand, er hätte etwas geschafft oder gar geleistet, weil die Daten nun in der Datenbank sind. Brauchbar sind sie aber bestenfalls teilweise. Daher dann vermutlich auch ellenlange Aufbereitungscodes ...

Ich hatte nicht ohne Grund nach der Ausgangssituation  (CSV) gefragt. Statt sich zerstückelte Informationen aus Tabellen zusammenzusuchen kann man das auch gleich in der Textdatei machen, da sind dann Zusammenhänge einfacher greifbar.

Wonach dann Kontennummern vergeben werden, erschließt sich mir auch nicht. Da sollte es doch Regeln geben, idealerweise in einer Tabelle abgelegt und durch eine Abfrage umsetzbar. Diese habe ich vergeblich gesucht.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo Eberhart,
na ja so hab ich halt diese Daten wenn ich die CSV herunterlade und in Excel speichere dann eben in Access importieren und dort wollte ich diese Daten aufbereiten.
Die Konten ergeben sich ja aus verschiedenen Konstellationen aus mehreren Feldern. Wenn im Feld IBAN Nr ATxxxxxirgendwas steht und im Buchungstext "Abschluss" dann brauche ich das Konto "XXXX" Wenn eine ander IBAN verwendet wird dann eben eine anderes Konto und so zieht es sich durch die Ganze Datei.
Doch ich dachte mir diese verschiedenen Konstellationen abzuspeichern und dann in weiterer Folge zu nutzen.

Schöne Grüße

MaggieMay

Hi,

wenn das Konvertieren der csv-Datei in eine brauchbare Tabelle sehr komplex ist, käme evtl. eine VBA-Lösung in Frage anstelle zahlreicher Abfragen.
Freundliche Grüße
MaggieMay

silentwolf

Hi Maggie,
vielen Dank für Deine Nachricht! Na ja schon aber ich weis nicht genau wo ich am besten anfangen soll habe es mit recordsets bis jetzt gelöst aber wie gesagt werden die Codes recht lang und etwas unübersichtlich.
Um es zu erledigen wären verschiedene Wenn ein Feld "xx" und eine anderes Feld "yy" .. soll man vielleicht einige functions schreiben? Und diese dann verwenden?
Hab bis jetzt nur einfache erstellt .... na werd noch mal schaun ob ich vielleicht auf diesen Wege etwas brauchbares erstellen kann.

LG
und vielen Dank!

ebs17

ZitatUm es zu erledigen wären verschiedene Wenn ein Feld "xx" und eine anderes Feld "yy" ..
Falls Abfragen in Frage kämen: Solche Fälle kann man in Tabellen festhalten. Abfragen können mit Tabellen hervorragend umgehen.

Zitataber ich weis nicht genau wo ich am besten anfangen soll
Bei der CSV unmittelbar?
Wenn ein Standardimport nichts Gescheites bringt, weil die vorhandene Struktur "anders" ist: Der Inhalt einer Textdatei ist Text. Da kann man doch mit einigen Textfunktionen interessante Daten herauspicken.

Welche Methoden da unmittelbar, schnell und einfach sind, das kann bestenfalls jemand versuchen abzuschätzen, der Ausgangs- und Zielsituation kennt.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo an Euch alle,
leider ist es mal wieder Herbst und da ist die Zeit etwas knapp deshalb erst jetzt meine Rückmeldung!
Ja jetzt ist es ja noch schlimmer jetzt werden die Daten in der CSV Datei nur noch in einer Spalte eingefügt und deshalb meine ganze Arbeit wieder umsonst.
Na ja da noch Daten herauszupicken wird schwierig werden.
Wollte mich aber bedanken für Euren input und Hilfe!

Lg
Albert

MaggieMay

Hi,

um dir helfen zu können, müsste man wissen was du gemacht hast.
Freundliche Grüße
MaggieMay

silentwolf

Hi Maggie,
danke das Du Dich gemeldet hast!
Hier ist zum Beispiel eine Zeile die aufbearbeitet werden soll.
UNIQA Österreich Versicherungen AG Creditor ID: AT10UAT00000001925 Mandatsnummer: 601394004263 Auftraggeberreferenz: Betrieb   010215-010315601394004188 REF: 31000150999-0023255-0046133
Hier würde ich gerne die Mandatsnummer:601394004263 in eine Spalte übergeben.
Das würde wahrscheinlich am besten mit einer Function gehen oder?

LG
Albert