März 03, 2021, 06:39:27

Neuigkeiten:

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


Aktualisierungsabfrage mit "Is Not Null" spinnt

Begonnen von BikeArno, Februar 04, 2021, 13:34:32

⏪ vorheriges - nächstes ⏩

BikeArno

Hallo Forum,

ich möchte aus zwei Tabellen eine Aktualisierungsabfrage eines Feldes umsetzen - aber ich bekomme es nur zur Hälfte hin. Im Anhang habe ich ein Beispiel dafür.

In der einen Haupttabelle stehen Originaleinträge für das Feld. Diese sollen nur dann mit den entsprechenden Feldeinträgen aus der Update-Tabelle überschrieben werden, wenn es dort Einträge gibt. Die meisten Zellen sind dort jedoch leer.

Mit der im Beispiel vorhandenen Abfrage mit den separaten funktioniert es auch. ABER nicht mehr in der Datenbank, in der diese Tabellen (neben anderen Tabellen und Abfragen) ebenfalls vorkommen. Dort werden mir immer alle Original-Einträge inkl. Leerzellen aus dem Update überschrieben. Als ob die Leerzellen als nicht leer gewertet würden.

Und hier komme ich nicht weiter. Wieso funktioniert das innerhalb der DB nicht, obwohl es doch separat geht? Was kann Ursache sein, was kann ich probieren. Bitte helft mir. Danke :-)


ebs17

Zitatwas kann ich probieren
Prüfen, ob leer auch anderes als NULL enthalten könnte:
SELECT
   COUNT(*) AS alle,
   COUNT(Bundesland_K) AS BL,
   COUNT(Len(Bundesland_K) > 0) AS Inhalt,
   SUM(Bundesland_K IS NULL) * - 1 AS NL,
   SUM(Bundesland_K IS NOT NULL) * - 1 AS NNL
FROM
   2tbl_update
Mit freundlichem Glück Auf!

Eberhard

BikeArno


Danke, habe damit eine SQL-Abfrage ausgeführt. Ergebnis:
alle: 9558
BL: 9558
Inhalt: 9558
NL: 0
NNL: 9558

Was bedeutet das?

ebs17

Zusammengefasst: Jeder Datensatz hat einen Inhalt. Eine Prüfung auf NOT NULL würde also kein abweichendes Ergebnis bringen.
Mit freundlichem Glück Auf!

Eberhard

BikeArno

Februar 04, 2021, 16:10:44 #4 Letzte Bearbeitung: Februar 04, 2021, 16:15:04 von BikeArno
Zitat von: ebs17 am Februar 04, 2021, 16:04:41Zusammengefasst: Jeder Datensatz hat einen Inhalt. Eine Prüfung auf NOT NULL würde also kein abweichendes Ergebnis bringen.

Tja, was heisst denn das für das o.g. Problem und wie löse ich das? Hat das vielleicht was damit zu tun, dass ich diese Tabelle mit einer Anfüge/Aktualisierungsabfrage befülle (auch die Leerzellen)?

ebs17

Zitatdas o.g. Problem
... stellt sich bisher nur so dar, dass etwas anderes passiert als Du erwartest.

Also sollte man zum einen seine Erwartungen an die Realität anpassen und zum anderen die Realität an sich zu erkennen, also schauen, was man wirklich vor sich hat (Feldinhalte, zugehörige Felddefinitionen).

Wie auch: Du könntest Dich mit Arnostoner zusammenschalten: Felder in einer Tabelle überschreiben
Der hat zufällig gleichnamige Tabellen.
Mit freundlichem Glück Auf!

Eberhard

BikeArno

Update: Nach zwei Tagen Fehlersuche eines Laien - ein Zwischenstand, der vielleicht bei der gemeinsamen Fehlersuche weiterhilft:

Die Tabelle mit den Korrektureinträgen wird über eine Lösch/Anfüge/Aktualisierungsanfrage aktuell gehalten (Excel-Verknüpfung). Ich habe die Tabelle mit den Korrektureinträgen (also mit dem Feld, welches das Feld der Haupttabelle bei "0" überschrieben werden soll) einmal komplett gelöscht und reimportiert. Ergebnis: Es funktionierte die Abfrage, leere Zellen werden als solche erkannt! Aber nach der nächsten Lösch/Anfüge/Aktualisierung der Korrekturtabelle haatte ich das gleiche Ergebnis wie oben. Geht nicht ... Offenbar werden mit der Aktualisierung also alle leeren Felder irgendwie mit "leeren" Feldern überschrieben, die nicht als "Null" gewertet werden.

Wie gehe ich jetzt damit um? Wie kann ich diese Abfrage gestalten, dass sie das erwünschte Ergebnis bringt, auch nach der beschriebenen Tabellenaktualisierung???

ebs17

Februar 04, 2021, 18:21:39 #7 Letzte Bearbeitung: Februar 04, 2021, 18:58:45 von ebs17
ZitatExcel-Verknüpfung
Exceltabelle zum Lesen oder zum Schreiben?
In beiden Fällen gibt es Sonderzustände, abweichend von normalen Datenbanktabellen.

Zitatbei der gemeinsamen Fehlersuche
Naja,  bei Bröckcheninformationen würde ich eine Vokabel wie Gemeinsamkeit sehr im Hintergrund halten.
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Februar 04, 2021, 18:50:47 #8 Letzte Bearbeitung: Februar 04, 2021, 18:55:49 von MzKlMu
Hallo,

siehe auch:
http://www.office-loesung.de/p/viewtopic.php?f=167&t=858200

und noch viele weitere Themen zum (fast) gleichen Sachverhalt.

Gemäß Forenregeln ist das zu unterlassen.
Gruß
Klaus

BikeArno

Zitat von: MzKlMu am Februar 04, 2021, 18:50:47Gemäß Forenregeln ist das zu unterlassen.

Danke für den Hinweis. Was schlagt ihr mir denn vor. Darf man also nur Fragen stellen, wenn man nicht zu blöd ist? Hat nicht jeder mal mit Access angefangen und dabei Probleme gehabt, an denen er verzweifelt ist? Gut, ich akzeptiere die Regel, aber sind denn in allen Foren nur die gleichen Meschen unterwegs? Warum gibt es dann verschiedene?

Der Link zu Office-Lösungen hilft mir leider nicht, da konkret dieses Problem dort nicht aktuell gelöst werden konnte. Und nur deshalb habe ich mich hier her gewandt. Ich weiß auch nicht, wen ich sonst fragen soll.

Ich würde dieses Thema dann hier belassen und hoffe ihr verstoßt mich nicht, sondern gebt mir eine Chance, das Problem zu lösen. ICh weiß, dass ihr das alles in eurer knappen Zeit macht und ich bin euch SEHR dankbar dafür.

Gruß Arno 

MzKlMu

Hallo,
Zitataber sind denn in allen Foren nur die gleichen Meschen unterwegs?
Ja, im wesentlichen.
Gruß
Klaus

BikeArno

Zitat von: ebs17 am Februar 04, 2021, 18:21:39Exceltabelle zum Lesen oder zum Schreiben?

Die Tabelle ist an eine Excel-Tabelle angebunden, die durch eine PowerQuery-Abfrage aus vier Excel-Tabellen geladen wird. Ich kann leider nichts zum Lesen oder Schreiben sagen - prüfe das aber gerne, wenn ich wüsste wie.

BikeArno

Habe inzwischen selbst eine mögliche Lösung des Problems gefunden. Falls andere User ähnliche Schwierigkeiten haben:

Das Feld mit den Korrekturen enthält, wie oben beschrieben, sehr viele Leerfelder. Diese Tabelle wurde mit PowerQuery generiert und in Access über eine Verknüpfung eingebunden. Danach wurden die Leerfelder nicht mehr als "leer" bzw. auch nicht als "NUll" (beides nicht) erkannt. Geholfen hat am Ende, direkt in PowerQuery die Leerzellen des Feldes mit einem alternativen Symbol oder Zeichen (z.B. 999) umzubenennen. Ins Kriterium der Access-Abfrage dann <>"999". Nun klappt es auch mit der Abfrage.

Danke für die obige Unterstützung. Gruß Arno