MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 09.11.2019, 15:15   #1
Raspberry
Neuer Benutzer
Neuer Benutzer
Standard SQL - Abfrageergebnisse lassen sich nicht bearbeiten, sobald man eine Unterabfrage einfügt

Liebe Community,

ich hänge mal wieder über einem Problem, dass ich so in der Form leider in keiner Forumhilfe oder Hilfedatei gefunden habe.

Ich habe eine Abfrage in MS Access 2010 mit einer Unterabfrage, die die Anzahl in einer zusätzlichen Spalte anzeigt.
Sobald jedoch die "Anzahl" Spalte eingefügt ist, lassen sich die Werte in der Hauptabfrage nicht bearbeiten.

Hier mal ein Beispiel-SQL Befehl:

PHP-Code:

SELECT retRetourenrretKDNRretStatus, (Select Count(*) FROM tblRetoureDetails WHERE detRetourenr=retRetourenr AND ((detErhalten=true OR detStorniert=true) AND detTEam is null)) AS Anz
FROM tblRetouren
WHERE 
((tblRetouren.retStatus)='In Bearbeitung'); 
Es kommt immer "Diese Datensatzgruppe kann nicht verändert werden"
Auch das umstellen auf "Dynaset (Inkonsistente Aktualisierungen)" hilft da nicht weiter.

Lass ich die Unterabfrage "Anz" weg, kann man ganz normal die Werte ändern.


Gibt es eine Lösung dafür? Evtl. über eine separate gespeicherte Abfrage?


Vielen Dank für eure Unterstützung schonmal im vorraus.
Raspberry ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 16:06   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Code:

SELECT r.retRetourenr, r.retKDNR, r.retStatus, d.anz 
FROM tblRetouren AS r
LEFT JOIN
 (Select  detRetourenr, Count(*) AS anz FROM tblRetoureDetails 
  WHERE (detErhalten OR detStorniert) AND detTEam is null
  GROUP BY detRetourenr) AS d
  ON d.detRetourenr = r.retRetourenr  
WHERE r.retStatus = 'In Bearbeitung';

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 16:15   #3
markusxy
MOF Meister
MOF Meister
Standard

Da wirst du wohl nur mit einer Domänenfunktion wie DCount weiter kommen.

@hcscherzer,
kann mir nicht vorstellen, dass das mit einem Subselect im From Teil besser wird, wie mit einem Subselect im Select Teil.
Mit einem Server Cursor wird das einfach nicht klappen.
Das geht höchstens mit ADO und einem Client Cursor.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 17:06   #4
hcscherzer
MOF Guru
MOF Guru
Standard

@Markus: wo Du recht hast, hast Du recht ...
Code:

SELECT r.retRetourenr, r.retKDNR, r.retStatus, 
  DCount("*", "tblRetoureDetails", "(detErhalten OR detStorniert) AND detTEam is null and detRetourenr = " & r.retRetourenr) AS anz 
FROM tblRetouren AS r
WHERE r.retStatus = 'In Bearbeitung';

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 17:36   #5
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von hcscherzer Beitrag anzeigen

wo Du recht hast, hast Du recht ...

Das ist wohl die Tautologie des Jahres

Aber gleich eine Lösung schreiben?
Da bleibt der Lerneffekt auf der Strecke.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 18:58   #6
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus,
und was war da jetzt tautologisch? (abgeleitet von ταυτολογία)
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2019, 20:48   #7
ebs17
MOF Guru
MOF Guru
Standard

Die andere Lösung wäre, sich von der "Exceltabelle" wegzudenken, sprich Anzeige mit maximalen Informationen und Editieren in verschiedene Vorgänge und dann auch verschiedene Gestaltungen zu trennen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende

Geändert von ebs17 (09.11.2019 um 22:03 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2019, 00:20   #8
hcscherzer
MOF Guru
MOF Guru
Standard

OT:

Zitat: von Markus

Tautologie

Mit Verlaub: das ist nun wirklich etwas völlig anderes.

Zitat: von Markus

gleich eine Lösung schreiben?

Wenn ich in #2 doch eine falsche Lösung präsentiert hatte ... sehe ich mich schon in der Pflicht ...

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.

Geändert von hcscherzer (10.11.2019 um 00:22 Uhr).
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2019, 22:54   #9
Raspberry
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von hcscherzer Beitrag anzeigen

@Markus: wo Du recht hast, hast Du recht ...

Code:

SELECT r.retRetourenr, r.retKDNR, r.retStatus, 
  DCount("*", "tblRetoureDetails", "(detErhalten OR detStorniert) AND detTEam is null and detRetourenr = " & r.retRetourenr) AS anz 
FROM tblRetouren AS r
WHERE r.retStatus = 'In Bearbeitung';

Ich hätte nicht gedacht, dass das wirklich die Lösung ist, zumal ich immer dachte Sub SELECT wäre die elegantere Variante. Vielleicht ist das auch nur ein Access typisches "Problem".

Da DCount nicht die schnellste Variante ist, hab ich das in eine Funktion ausgelagert (KLICK) und die Abfrage geht gleich um einiges schneller.
Interessant daran ist, obwohl es eigentlich nur eine ausgelagerte Unter-SELECT Anweisung ist, kann man dennoch die Haupt-SELECT weiterhin bearbeiten. Merkwürdige Logik.


Zitat: von marcusxy Beitrag anzeigen

Aber gleich eine Lösung schreiben?
Da bleibt der Lerneffekt auf der Strecke.

Der Lerneffekt ist dennoch eingetreten. Ich versteh nur nach wie vor nicht, warum eine Subselect (speziell Count(*)) das editieren der Abfrageergebnisse verhindert und wie ich dank deinem Lösungshinweis und hcscherzer fertigen SQL Befehl herausgefunden habe, eine in eine Funktion ausgelagerte Subselect das editieren dennoch ermöglicht?!


Ich danke euch jedenfalls wiedermal für eure schnelle und zielführende Hilfe
Raspberry ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2019, 23:03   #10
hcscherzer
MOF Guru
MOF Guru
Standard

Zitat:

Ich versteh nur nach wie vor nicht

Wirklich erklären können das vielleicht nur die Programmierer der JET Engine.
Da gibt es ja auch die Seltsamkeit mit den Direktiven SELECT DISTINCT und SELECT DISTINCTROW ...

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.11.2019, 07:25   #11
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von hcscherzer Beitrag anzeigen

OT:

Mit Verlaub: das ist nun wirklich etwas völlig anderes.

OT:
Hier ein kleiner Hinweis zum Thema Tautologie.

Zitat:

Eine Tautologie, auch Verum genannt, ist in der Logik eine allgemein gültige Aussage, das heißt eine Aussage, die aus logischen Gründen immer wahr ist. Beispiele für Tautologien sind Aussagen wie „Wenn es regnet, dann regnet es“ oder „Das Wetter ändert sich oder es bleibt, wie es ist.“ Wikipedia

Ich kenne das Thema im Kontext mit der Aussagenlogik, da gibt es dann auch noch andere Bereiche.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.11.2019, 07:37   #12
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von Raspberry Beitrag anzeigen

eine in eine Funktion ausgelagerte Subselect das editieren dennoch ermöglicht?!

Bei den Gründen kann man nur raten.
Jedenfalls, werden die Daten in einem Fall durch die Jet ermittelt im anderen Fall durch die Funktion - davon bekommt die Jet ja nichts mit.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.11.2019, 17:51   #13
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus markusxy,
OT:
Wikipedia zitiert hier nur teilweise richtig.
Tautologie wiederholt (also doppelt) mit derselben Wortart.
Daher ist der Satz mit dem Wetter ein Pleonasmus.
Pleonasmus wiederholt (keine Doppelung) dasselbe mittels eines anderen Ausdrucks. So lernt man das an bayrischen Gymnasien seit je her.
Du behälst aber recht mit dem Satz des Jahres als Tautologie.
Ich hatte das falsch verstanden und in dem SQL Code etwas tautologisches gesucht.
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.