WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 24.04.2001, 10:38   #1
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Frage

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
Andy020 ist offline   Mit Zitat antworten
Alt 24.04.2001, 11:09   #2
el torro
Abonnent
 
Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68


Frage

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 !
el torro ist offline   Mit Zitat antworten
Alt 24.04.2001, 11:36   #3
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Lächeln Hallo el torro!

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
Andy020 ist offline   Mit Zitat antworten
Alt 24.04.2001, 12:15   #4
el torro
Abonnent
 
Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68


Standard

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 !
el torro ist offline   Mit Zitat antworten
Alt 24.04.2001, 14:23   #5
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Standard Hallo el torro ... :-)

Zitat:
el torro hat geschrieben:
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....
Der Datensatz der gespeichert wird, ist 100%ig der DS in der Verknüpfungstabelle, das ist auch der richtige. Einen anderen DS kann ich in dem Fall gar nicht abspeichern. Die Abteilung ist schon angelegt, es geht nur um die Zuweisung... und die Zuweisung wird eben in der Verknüpfungstabelle gespeichert. Weiters kann ich ganz sicher sagen, dass der DS nach dem Hinzufügen auch in der Tabelle gespeichert wird ... hab das kontrolliert. Um UForm2 brauch ich eigentlich nichts anderes ausser das Listenfeld aktualisieren, und selbst wenn ich andere Sachen aktualisiere macht das leider auch keinen Unterschied. Es geht eigentlich primär darum, durch einen Klick auf das neue, hinzugefügte Element zu diesem zu "springen", sodass eben das neue der aktuelle DS wird, um es dann löschen zu können. Und genau das funktioniert nicht, obwohl das Element richtig in der Tabelle steht, obwohl es richtig im Listenfeld aufscheint ...

Dank dir trotzdem für deine Mühe, weiss das zu schätzen

mfg
Andy
Andy020 ist offline   Mit Zitat antworten
Alt 25.04.2001, 11:22   #6
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Daumen hoch Problem gelöst :-)

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
Andy020 ist offline   Mit Zitat antworten
Alt 26.04.2001, 07:53   #7
el torro
Abonnent
 
Registriert seit: 23.03.2001
Alter: 57
Beiträge: 68


Standard

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 !
el torro ist offline   Mit Zitat antworten
Alt 26.04.2001, 10:51   #8
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Standard Hallo el torro ... :-)

Zitat:
el torro hat geschrieben:
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
Ich dank dir erstmal recht herzlich für deine Unterstützung!

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
Andy020 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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 hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:15 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag