Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage mit bezug editierbar?!

Begonnen von Datenman, November 02, 2011, 12:26:40

⏪ vorheriges - nächstes ⏩

Datenman

Hallo liebe Gemeinde,

da dies mein erster angemeldeter Besuch bei euch ist, an dieser Stelle HALLO!  :)  Als Gast war ich bereits aktiv, sehr gutes Forum!

Ich benötige im Folgenden eure Hilfe.


Wie kann ich es möglich machen, eine Abfrage, in der eine Mastertabelle mit einer weiteren Tabelle im Bezug steht, dennoch Bearbeitungsfähig/Editierbar zu machen?


Situation:
Ich habe ein Formular, welches auf eine Abfrage basiert. Diese Abfrage basiert auf einer Master-Tabelle. Zusätzlich steht die Mastertabelle mit einer 2. Tabelle im Bezug, so dass übereinstimmende Datensätze erst gar nicht im Formular angezeigt werden.
Leider kann man jedoch dann die Datensätze nicht mehr bearbeiten, sobald ich die 2. Tabelle in Bezug stelle, da Acces scheinbar nciht weiß, welche Tabelle geändert werden soll.

Habt ihr dazu eine Idee?

Gruß Dateman

DF6GL

Hallp,

verstehe Deine Situation und Dein Vorhaben nicht...

Warum muss das Form auf einer verknüpfenden Abfrage basieren (was für eine Verknüpfung ist das?)

"so dass übereinstimmende Datensätze erst gar nicht im Formular angezeigt werden."  ???


"da Acces scheinbar nciht weiß, "

nicht scheinbar, sondern tatsächlich..  ;-)

Datenman

Hi,

hab mich wohl etwas missverständlich ausgedrückt, ist aber auch nciht einfach immer zu erklären.

Der Hintergrund ist ganz einfach. In einem Mastertable landen 1.000 Datensätze, die müssen da jeden Tag eingeladen werden. Diese 1.000 Datensätze decken sich aber zum Teil mit den Daten einer zweiten, anderen Tabelle. Damit jetzt nicht alls 1.000 Daten über das Form ein zweites mal bearbeitet und ausgewertet werden, werden diese Daten über die Abfrage selektiert, so dass eben nur noch 200 Daten in dem Form sichtbar bleiben, die dann der Reihe nach bearbeitet werden können.

Sobald ich jetzt aber das Mastertable mit dem zweiten Table in der Abfrage in Verbindung setzte, und noch anklicke "zeige alle Datensätze des Mastertables und nur die Datensätze, die mit dem zweiten Table übereinstimmen", können die Datensätze nicht mehr bearbeitet werden, egal ob jetzt direkt über das Form oder einfach in der Datenansicht der Abfrage. Sobald ich die Verbindung zwischen den beiden Tables löse und nur noch das Mastertable in der ABfrage habe, sind die Datensätze auch wieder editierbar.

DF6GL

Hallo,

Es ist ein falscher Weg, Datensätze so in eine "Matertabelle" zu importieren und mit dieser Beziehung zu einer anderen Tabelle zu verknüpfen.. Es gibt keine Lösung, eine solche Abfrage aktualisierbar zu machen.

"..decken sich aber zum Teil mit den Daten einer zweiten.."

Was heißt das genau?  Müssen alle Felder übereinstimmen, oder gibt es ein Feld, das einen Datensatz GENAU definiert (Primärschlüssel)


Ein gangbarer Weg wäre, in einer einzigen Tabelle mit vorgegebener Struktur einen zusammengesetzten Index über diejenigen Felder zu erstellen, die einen Datensätz "eindeutig" identifizieren.


Beim Import werden dann nur "unbekannte" DS für das Schreiben in die Tabelle akzeptiert.

Datenman

Damit hier keine Missverständnisse aufkommen  ;) - Nein, der falsche Weg ist es definitiv nicht, die Daten in das Mastertable so zu importieren. Es handelt sich wohl gemerkt um zwei voneinander völlig unabhängige Tabellen. Die zweite Tabelle, die die Daten des Mastertabelle schlußendlich für das Form selektieren soll, ist lediglich eine Datensammlung aus einer völlig unabhängigen Quelle, bei der ich aber festgestellt habe, dass hier Datensätze stehen, die ausreichend Informationen beinhalten, so dass die Daten der Mastertabelle nicht noch einmal ausgewertet werden müssen.

Von der Datenstruktur ist also alles tatsächlich in Ordnung, damit wir nicht von ganz vorne beginnen.  :)



database

Hallo,

ZitatVon der Datenstruktur ist also alles tatsächlich in Ordnung, damit wir nicht von ganz vorne beginnen

Sobald in 2 unterschiedlichen Tabellen idente Informationen stehen wird die Tabellenstruktur wohl nicht ganz in Ordnung sein.
Ganz von vorne zu beginnen würde bedeuten dich auf die Einhaltung der Normalisierungsregeln hinzuweisen ...  ;)

Aber egal - wenn DU mit dieser Struktur glücklich bist soll das OK sein.

Du könntest versuchen unter Anwendung des folgenden Tipps http://www.donkarl.com?FAQ3.16
die benötigten Datensätze in in ein Recordset zu fassen und diese dann deinem Formular (ungebunden) als Dateherkunft zuzuweisen.

z.B.: Set Forms("DeinFormular").Recordset = rst

Mit einer geeigneten Methode welche in einem passenden Ereignis zur Ausführung gelangt schreibst du dann allfällige Änderungen per UPDATE-Statement in die Herkunftstabelle(n) zurück
und befüllst die Datenherkunft des Formulars danach neu um die geänderten Daten auch nach einem Datensatzwechsel zur Verfügung zu haben.

Damit du dann wiederum den bearbeiteten Datensatz angezeigt bekommst kannst du mit
http://www.donkarl.com?FAQ4.5
auf diesen zurückspringen.

Dass sich die Abfrage, die hinter der Selektion steht nicht aktualisieren läßt hat Franz ja schon erwähnt - das ist auch nicht zu ändern

Datenman

"Sobald in 2 unterschiedlichen Tabellen idente Informationen stehen wird die Tabellenstruktur wohl nicht ganz in Ordnung sein."

Das wäre so korrekt, aber das Prinzip ist nicht verstanden. In einer anderen Tabelle (nicht das Mastertable) hole ich mir Daten von einem anderen Server rein, die durch andere Inputs auf völlig andere Weise entstehen und absolut wenig mit den Daten der Mastertabelle zu tun haben. Was jedoch nun einfach optimiert wird ist, dass dort Datensätze stehen, die bereits informationen bereithalten, die es nicht mehr notwendig macht, dass die Daten der mastertabelle noch einmal angefasst und ausgewertet werden. Beispiel EANs von Büchern. (Zeige mir die EANs der Mastertabelle, matche sie mit den EANs der anderen Tabelle und stelle vorhandenen Informationen gegenüber  ;)  ;). Wo nun Informationen fehlen, werden diese nachanalysiert bzw. ausgewertet.

ABER:
Ich habe die Lösung jetzt einfach so praktiziert, dass ich beim einladen der Daten in die Mastertabelle, was ja üblicherweise über eine Anfügeabfrage läuft, bereits dieses matching vornehme und in der Mastertabelle eine neue Spalte eingepflegt habe, die sozusagen die Datensätze flagt, die sich mit den Daten der 2. Tabelle matchen und es einfach unnötig ist, noch einmal auszuwerten.

In dem Formular, welches sich ja eine Abfrage bezieht, filtere ich dann nur noch die Daten ein, die den Flag nicht haben, feddich  ;D

ebs17

ZitatSobald ich jetzt aber das Mastertable mit dem zweiten Table in der Abfrage in Verbindung setzte ... können die Datensätze nicht mehr bearbeitet werden
Das kann sein, muss aber nicht sein.

Es ist so, dass Datensätze in Tabellen gespeichert werden. Daher kann man generell das Abfragedesign so gestalten, dass nur jeweils die Felder einer Tabelle im SELECT-Teil stehen. Somit kann man auch trotz Verknüpfung diese Felder immer aktualisieren, wenn nun nicht gerade Beziehungen mit eingestellter referentieller Integrität dem entgegen stehen.
Man muss dann nur noch zusätzlich realisieren, dass es mehr Möglichkeiten zu Bezug/Verknüpfung gibt als einen JOIN.

MfGA
ebs