![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Master
![]() Registriert seit: 22.03.2000
Beiträge: 506
|
![]() Hallo Experten!
Ich hoffe, dass ich das Problem verständlich beschreiben kann. Es gibt ein Hauptformular (Abteilungen), in dem HF sind zwei Unterformulare. Im einen Unterformular werden Stammdaten angezeigt (Firmen). Aus dieser Firmenliste kann man sich eine Firma aussuchen und sie dann im zweiten UF hinzufügen. In diesem zweiten Unterformular werden also alle Firmen angezeigt die mit einer Abteilung in Verbindung stehen. Die Verknüpfung läuft über eine m:n Beziehung, also mit einer Verknüpfungstabelle. Das ist alles auch kein Problem. Jetzt ist es aber so, dass ich im zweiten UF (also jenes wo die Firmen stehen, die mit der Tabelle in Verbindung stehen) eingefügte Firmen auch wieder löschen möchte, falls der Anwender z.B. irrtümlich der Abteilung eine falsche Firma zugewiesen hat. Wenn ich im ersten UF jetzt eine Firma aussuche und die Zuweisung bestätige wird im zweiten UF auch die Liste mit den Zuweisungen richtig aktualisiert, d.h. in der Liste vom zweiten UF stehen alle zugewiesenen Firmen absolut korrekt drinnen. Jetzt kommt der Haken an der Sache. Im zweiten UF, also die Liste mit den bereits zugewiesenen Firmen, kann man auf ein Element klicken und es wird gesucht, sodass bei jedem Klick auf ein Element auch zu diesem Element hingesprungen wird. (Zwecks löschen) Allerdings das Element das ich zuvor zugewiesen habe, welches auch richtig angezeigt wird in der Liste UND auch in der Tabelle richtig abgespeichert wurde(!), kann mit einem Klick auf das Listenelement nicht angesprungen werden. Der Index ist ein AutoWert, d.h. er is absolut eindeutig, trotzdem findet er das hinzugefügte Element nicht. Ich hab versucht das Formular zu aktualisieren, das Listenfeld ebenfalls, die Datensätze nochmal zu speichern ... nichts hilft. Die einzige Lösung für das Problem ist schliessen und nochmal öffnen, DANN kann ich es löschen, vorher aber nicht. Kann mir da wer helfen? Weiss wer einen Tip oder kann mir die Ursache für das Problem nennen? Falls irgendetwas von mir unverständlich erklärt worden ist, kein Problem, einfach fragen, ich versuchs dann deutlicher zu machen. Hoffe, dass mir da wer helfen kann. mfg Andy |
![]() |
![]() |
![]() |
#2 |
Abonnent
![]() Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68
|
![]() habe zwar deine beschreibung nicht so wirklich verstanden, aber das ist wohl immer schwer jemanden zu erklären der das ding nicht sehen kann.
mich würde jetzt nur interessieren wie du die aktualisierung bzw. das speichern gelöst hast. gehe davon aus das du in vb-code programmierst, also welche befehle wendest du dort an? gruss
____________________________________
Sunshine foreveryone ! |
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 22.03.2000
Beiträge: 506
|
![]() Ich werde versuchen das ganze nochmal zu erklären. Muss dir recht geben, ist nicht leicht für jemanden zu verstehen, der nicht direkt mit dem Problem konfrontiert ist.
Also... Grundlegendes: Es soll möglich sein, Firmen und Abteilungen per m:n Beziehung zu verknüpfen. D.h. es sollen beliebig viele Firmen zu einer Abteilung, und beliebig viele Abteilungen zu einer Firma zugeordnet werden können. Dafür ist im Normalfall eine Verknüpfungstabelle notwendig. Allerdings vergessen wir mal dieses komplexe Element. Sehen wir das ganze als eine 1:n Beziehung. D.h. es gibt ein Stammformular, in diesem Form können Abteilungen erfasst werden. Diese Abteilungen werden in einer ganz simplen Tabelle Abteilungen gespeichert ... nichts besonderes also. Jetzt gibt es eine Tabelle, eben diese Verknüpfungstabelle. Die hat 2 Felder. -> Firmen_Nr und Abteilungs_Nr Wenn jetzt die Abteilung einer Firma unterstellt ist, wird in dieser Tabelle ein Datensatz eingefügt. Vorgang: -------- Z.b. ich legen die Abteilung 4 an, in der Tabelle Abteilungen. 4 ist in dem Fall der Autowert, also Primärschlüssel. Jetzt gibt es eine zweite normale Tabelle -> Firmen, dort stehen z.B. schon 20 Firmen drinnen mit dem Primärschlüssel 1 - 20. Jetzt will ich sagen, dass die Abteilung 4 folgenden Firmen unterstellt ist .... 1,5,8,11 und 15 z.B. Die Verknüpfungstabelle sieht dann folgendermassen aus ... Abteilungs_Nr Firmen_Nr 4 1 4 5 4 8 4 11 4 15 Soweit so gut, das is alles kein Problem. Zurück zum eigentlichen Problem .... Also, wir befinden uns immer noch im Stammformular Abteilungen, welches die normale Tabelle Abteilungen als Basis hat. In diesem Form gibt es jetzt 2 Unterformulare. Eines, das die Firmen aus der Tabelle Firmen anzeigt (in einem Listenfeld), allerdings die Verknüpfungstabelle als Basis hat, denn die Auswahl aus dem Listenfeld soll ja in die Tabelle geschrieben werden. Wenn ich jetzt z.B. eine Firma hinzufügen möchte, klicke ich in dem Listenfeld im UForm1 auf eine Firma. Der Datensatz, genauer gesagt nur die Firmen_Nr, wird dann gesucht und in das Feld der Verknüpfungstabelle (Firmen_Nr) eingefügt. Die Abteilungsnummer wird immer mit der eingetragen bei der ich mich gerade im Hauptformular befinde. Soweit so gut, alles kein Problem. Jetzt sind wir mal dort, wo es möglich ist, per Klick auf das Listenfeld im UForm1 eine Firma in die Verknüfpungstabelle mit der aktuellen Abteilung einzufügen. Jetzt kommt das UForm2 ins Spiel. Dort werden alle Firmen angezeigt, denen die aktuelle Abteilung unterstellt ist. D.h. dieses UForm 2 hat als Basis die Verknüpfungstabelle mit den 2 Felder, eben eines für die Abteilungs_Nr und eines für die Firmen_Nr. Dort gibt es wieder ein Listenfeld, welches alle Firmen anzeigt die zu der aktuellen Abteilung gehören. Wenn ich jetzt im UForm1 eine Firma anwähle und sie eben zu der Verknüpfungstabelle hinzufüge, dann passiert folgendes ... Private Sub Befehl12_Click() DoCmd.RunCommand acCmdSaveRecord 'Zuordnung speichern Die Zuweisung wird also in der Verknüpfungstabelle gespeichert, somit sind die Datensätze in der Tabelle abgespeichert. DoCmd.GoToRecord , , acNewRec 'Zu neuem DS springen Er spring zu einem neuen DS, falls noch mehr Firmen eingefügt werden wollen. Forms![Abteilungen]![Abteilungen_Firmen_zugeordnet_UForm].Form![Firmen_zugeordnet].Requery 'Liste mit zugewiesenen Firmen wird akt. End Sub DAS ist der interessante Teil ... hier wird die Liste im UForm2, eben jene in der alle Firmen angezeigt werden, der die Abteilung unterstellt ist, aktualisiert. Das funktioniert auch alles soweit. Jetzt kommt das eigentliche Problem. Füge ich jetzt eine Firma hinzu, wird sie richtig in der Verknüpfungstabelle abgespeichert, sie wird auch richtig im Listenfeld im UForm2 angezeigt. Will ich diese Firma jetzt aber aus der Verknüpfungstabelle wieder löschen, müsste ich im UForm2 auf das neu eingefügte Element klicken (sodass zu diesem DS gesprungen wird) und den aktuellen DS dann einfach normal löschen. Der HAKEN an der Sache ist aber, dass ich nicht zu dem DS springen kann ... er findet diesen DS einfach nicht. Obwohl er in dem Listenfeld richtig erscheint, obwohl der DS in der Tabelle richtig abgespeichert ist. Das einzige, das hilft ist ein schliessen und öffnen des UForm2, dann könnte ich den DS löschen. Ich hoffe, dass das jetzt etwas klarer war. ![]() ![]() Bin dir für deine Hilfe wirklich sehr dankbar!! mfg Andy |
![]() |
![]() |
![]() |
#4 |
Abonnent
![]() Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68
|
![]() danke einmal vorweg für dein wirklich langes statement und der eindeutigen beschreibung. bin leider ein sehr visueller mensch und muss alles (im whrsten sinne) "begreifen". aber so wie es für mich aussieht, speicherst du zwar den ds ab, was ja korrekt ist. fragt sich nur welchen ds? den in der stammtabelle oder den in der verknüpfungstabelle.
bin zwar noch nicht ins access 200 vorgedrungen, behaupte aber mich in der 95er version ein bisschen auszukennen. wenn die aktualisierung korrekt erfolgt durch schliessen und wieder öffen könnte das problem einfach am zurückschreiben der ganzen ds liegen. das requery gefällt mir ganz gut, nur vielleicht solltest du auch andere form/controls durch requery aktualisieren versuchen. so wie es aussieht frägst du ja nur das uform2 ab.versuchst du das mal? hoffe ein bisschen geholfen zu haben....
____________________________________
Sunshine foreveryone ! |
![]() |
![]() |
![]() |
#5 | |
Master
![]() Registriert seit: 22.03.2000
Beiträge: 506
|
![]() Zitat:
![]() Dank dir trotzdem für deine Mühe, weiss das zu schätzen ![]() mfg Andy |
|
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 22.03.2000
Beiträge: 506
|
![]() Wenn man im Listenfeld der hinzugefügten Firmen einfach bei einem Klick (also bei der Suche nach dem DS) ein Requery macht (wichtig ist eben, dass das Requery VOR der Suche gemacht wird), wird die Tabelle aktualisiert und es können alle DS angesprungen werden, auch die neu eingefügten.
![]() ![]() mfg Andy |
![]() |
![]() |
![]() |
#7 |
Abonnent
![]() Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68
|
![]() hallo andy020,
da hab ich mich wohl falsch ausgedrückt, sorry dafür...aber genau das meinte ich als ich dir die neue feldabfrage vorgeschlagen habe. ist halt immer ein problem in access das die daten ja im speicher gehalten werden und anscheinend erst verwendbar sind wenn der speicher neubefüllt wurde. auf alle fälle super das du es lösen konntest..... schönen tag noch el torro
____________________________________
Sunshine foreveryone ! |
![]() |
![]() |
![]() |
#8 | |
Master
![]() Registriert seit: 22.03.2000
Beiträge: 506
|
![]() Zitat:
Allerdings waren die Daten zu dem Zeitpunkt nicht mehr im Speicher, sondern komischerweise schon in der Tabelle abgespeichert. Trotzdem konnte ich nicht darauf zugreifen, erst nach einem Requery des Forms ist es dann gelungen ... obwohl der DS schon im Listnfeld aufgescheint war. (?) Naja, Sachen gibts, die gibts gar nicht. ![]() Dir auch noch einen schönen Tag ![]() mfg Andy |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|