Supportnet / Forum / Datenbanken
Anfügeabfrage bei 1:n Beziehung
Frage
Hallo,
ich habe 2 Tabellen in einer 1:n - Beziehung.
In einem Formular zeige ich den Inhalt der ersten Tabelle im Hauptformular an, den Inhalt der 2. Tabelle in einem Unterformular (endlos).
Nun möchte ich den Datensatz kopieren... klappt net.
Ich habe 2 Anfügeabfragen erstellt, für jede Tabelle eine.
Der Datensatz der ersten Tabelle wird als neuer Datensatz eingefügt, der die Datensätze der 2. Tabelle aber immer bei dem alten Datensatz.....
Klingt kompliziert, ich weiß, deswegen habe ich eine kleine Demo-DB erstellt (180KB), die ist [url=www.ultraklug.de/bd/test.mdb]hier[/url]
danke
Antwort 1 von Koebi
Grüezi Locke
Beim Access-Guru kannst Du zum Thema eine Demo-DB herunterladen (SWCopy...zip.)
www.access-guru.de/
Damit soll es möglich sein, einen Datensatz in HF und UF zu duplizieren.
Ich habe es bisher selbst noch nicht probiert.
Vielleicht hilft es Dir weiter.
Gruss
Köbi
Beim Access-Guru kannst Du zum Thema eine Demo-DB herunterladen (SWCopy...zip.)
www.access-guru.de/
Damit soll es möglich sein, einen Datensatz in HF und UF zu duplizieren.
Ich habe es bisher selbst noch nicht probiert.
Vielleicht hilft es Dir weiter.
Gruss
Köbi
Antwort 2 von Locke
danke köbi, das würde mir helfen wenn ich die benutzerdefinierte Typen (DAO.Recordset) nachvollziehen könnte.
O.K. das funktioniert, aber leider kann ich das so nicht umsetzen :-(
O.K. das funktioniert, aber leider kann ich das so nicht umsetzen :-(
Antwort 3 von 14071
Hi Locke,
habe deine Test.mdb mal angeschaut. Aber dein Problem ist für mich immer noch nicht klar. Sollen die Artikel von der gleichen Art sein und dem Kunden zugeordnet werden, brauchst du eine n:m Verknüpfung. Die Artikel werden in einer eigenen Tabelle angelegt. Die n:m-Tabelle nimmt dann die ID´s der Kunden und Artikel auf. Zudem kannst du darin speichern, wieviel Stück der Artikel dieser Kunde bestellt hat, etc.
Falls dies nicht der Ansatz ist, den du suchst, poste nochmal.
Gruß
Jürgen
habe deine Test.mdb mal angeschaut. Aber dein Problem ist für mich immer noch nicht klar. Sollen die Artikel von der gleichen Art sein und dem Kunden zugeordnet werden, brauchst du eine n:m Verknüpfung. Die Artikel werden in einer eigenen Tabelle angelegt. Die n:m-Tabelle nimmt dann die ID´s der Kunden und Artikel auf. Zudem kannst du darin speichern, wieviel Stück der Artikel dieser Kunde bestellt hat, etc.
Falls dies nicht der Ansatz ist, den du suchst, poste nochmal.
Gruß
Jürgen
Antwort 4 von Locke
@14071
Wenn Du z.B. den ersten Datensatz betrachtest, siehst Du links den Name und rechts 2 Artikel.
Ich möchte das genau so als neuen Datensatz (neue id) ablegen. Den gleichen Namen und dazu die beiden Artikel.
Wenn ich Datensatz 2 kopiere, wären das z.B. der Name und 4 Artikel als neuer Datensatz.
Es wird ja ein neuer Datensatz mit Name angelegt, aber die Artikel werden im ursprünglichen Datensatz kopiert. Im ersten z.B. habe ich dann da 4 Artikel stehen.
Wenn Du z.B. den ersten Datensatz betrachtest, siehst Du links den Name und rechts 2 Artikel.
Ich möchte das genau so als neuen Datensatz (neue id) ablegen. Den gleichen Namen und dazu die beiden Artikel.
Wenn ich Datensatz 2 kopiere, wären das z.B. der Name und 4 Artikel als neuer Datensatz.
Es wird ja ein neuer Datensatz mit Name angelegt, aber die Artikel werden im ursprünglichen Datensatz kopiert. Im ersten z.B. habe ich dann da 4 Artikel stehen.
Antwort 5 von 14071
Hi Locke,
ich glaub ich habe das richtige für dich gefunden. Lad dir unter www.access-guru.de die freeware-mdb SWCopySub97. Damit solltest du weiterkommen.
Gruß
Jürgen
ich glaub ich habe das richtige für dich gefunden. Lad dir unter www.access-guru.de die freeware-mdb SWCopySub97. Damit solltest du weiterkommen.
Gruß
Jürgen
Antwort 6 von Locke
;-)
Danke, das nabe ich schon als Tipp von Köbi.
Stimmt genau so soll das funktionieren, nur habe ich ein Problem das auf die "echte" Datenbank zu übertragen.
Im Code wird eine Variable so deklariert:
Dim RS_old As DAO.Recordset
So lange ich nicht rausfinde wie und wo dieser benutzerdefinierte Typ gemacht ist kann ich das leider nicht nutzen.
Hast Du eine Idee wie der gemacht wird?
Falls die DB beim Access-Guru nicht gesaugt hast, hier der Direktlink.
Danke
Danke, das nabe ich schon als Tipp von Köbi.
Stimmt genau so soll das funktionieren, nur habe ich ein Problem das auf die "echte" Datenbank zu übertragen.
Im Code wird eine Variable so deklariert:
Dim RS_old As DAO.Recordset
So lange ich nicht rausfinde wie und wo dieser benutzerdefinierte Typ gemacht ist kann ich das leider nicht nutzen.
Hast Du eine Idee wie der gemacht wird?
Falls die DB beim Access-Guru nicht gesaugt hast, hier der Direktlink.
Danke
Antwort 7 von 14071
oops - Köbi´s Tipp habe ich glatt überlesen - sorry in die Schweiz.
Ganz so fit bin ich leider noch nicht in VBA. Das RS ist wohl ein Recordset. Soviel ich weiss, werden die Daten damit temporär in eben diesem RS vorgehalten.
Werde mir morgen die mdb von Access-Guru mal ansehen, vielleicht kann ich dir dann weiterhelfen.
Gruß
Jürgen
Ganz so fit bin ich leider noch nicht in VBA. Das RS ist wohl ein Recordset. Soviel ich weiss, werden die Daten damit temporär in eben diesem RS vorgehalten.
Werde mir morgen die mdb von Access-Guru mal ansehen, vielleicht kann ich dir dann weiterhelfen.
Gruß
Jürgen
Antwort 8 von Locke
Ja danke.
"RS_old" kann ich auch "Hund", "Katze" oder "Maus" nennen, das ist ja nur eine Variable.
Mir geht es um "DAO.Recordset"
Da wird irgendwo dieser benutzerdefinierte Datentyp erstellt.
"RS_old" kann ich auch "Hund", "Katze" oder "Maus" nennen, das ist ja nur eine Variable.
Mir geht es um "DAO.Recordset"
Da wird irgendwo dieser benutzerdefinierte Datentyp erstellt.
Antwort 9 von Locke
So, ich habe alles aus der "echten" Datenbank in die von Access-Guru importiert, den Code angepasst und allles was vom Access-Guru ist gelöscht. Datenbank umbenannt und es geht.
Nur würde mich interessieren was es mit dem "DAO-Recordset" auf sich hat. Dieser Typ funktioniert in einer neuen DB nicht.
Nur würde mich interessieren was es mit dem "DAO-Recordset" auf sich hat. Dieser Typ funktioniert in einer neuen DB nicht.
Antwort 10 von Koebi
Grüezi
DAO.Recordset verweist explizit auf die DAO Object Library und dient zur Unterscheidung auf einen Vereis auf die ADO-Bibliothek.
Nimm doch einfach einmal das DAO. weg, dann hast Du wie bisher RS As Recordset.
Ich habe das in der Demo-DB gemacht, und es funktioniert weiterhin. Unter Access97 auf jeden Fall.
Ist es das, was Probleme macht, oder klemmt es sonst noch irgendwo?
Im übrigen schau zu diesem Thema einmal in der Access-FAQ von donkarl, unter Punkt 7.11
www.donkarl/com
oder einen Diskussionsbeitrag in der News-Group:
http://groups.google.ch/groups?hl=de&lr=&ie=UTF-8&threadm=97eo62%24p258q%243%40ID-28695.news.dfncis.de&rnum=3&prev=/groups%3Fq%3DDAO%2Bgroup:de.comp.datenbanken.ms-access%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26selm%3D97eo62%2524p258q%25243%2540ID-28695.news.dfnc
Gruss
Köbi
DAO.Recordset verweist explizit auf die DAO Object Library und dient zur Unterscheidung auf einen Vereis auf die ADO-Bibliothek.
Nimm doch einfach einmal das DAO. weg, dann hast Du wie bisher RS As Recordset.
Ich habe das in der Demo-DB gemacht, und es funktioniert weiterhin. Unter Access97 auf jeden Fall.
Ist es das, was Probleme macht, oder klemmt es sonst noch irgendwo?
Im übrigen schau zu diesem Thema einmal in der Access-FAQ von donkarl, unter Punkt 7.11
www.donkarl/com
oder einen Diskussionsbeitrag in der News-Group:
http://groups.google.ch/groups?hl=de&lr=&ie=UTF-8&threadm=97eo62%24p258q%243%40ID-28695.news.dfncis.de&rnum=3&prev=/groups%3Fq%3DDAO%2Bgroup:de.comp.datenbanken.ms-access%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26selm%3D97eo62%2524p258q%25243%2540ID-28695.news.dfnc
Gruss
Köbi
Antwort 11 von Locke
Hi Köbi, das stimmt schon was Du sagst, man kann das "DAO" weglassen und nur "Recordset" daraus machen. Das geht auch in der DB vom Access-Guru.
Nur, lege mal eine leere Datenbank an und importiere die beiden Tabellen und Formulare, nachdem Du das "DAO" weggelassen hast. Dann geht das nicht mehr, leider.
Die Frage ist nur: Warum?
Nur, lege mal eine leere Datenbank an und importiere die beiden Tabellen und Formulare, nachdem Du das "DAO" weggelassen hast. Dann geht das nicht mehr, leider.
Die Frage ist nur: Warum?
Antwort 12 von Koebi
Hallo Locke
Das habe ich jetzt gerade gemacht. Klappt aber weiterhin wunderbar.
Fehlt es vielleicht an den Verweisen? Bei mir sind folgende gesetzt:
Visual Basic For Applications
Microsoft Access 8.0 Objects Library
Microsoft DAO 3.5 Objects Library
Gruss
Köbi
Das habe ich jetzt gerade gemacht. Klappt aber weiterhin wunderbar.
Fehlt es vielleicht an den Verweisen? Bei mir sind folgende gesetzt:
Visual Basic For Applications
Microsoft Access 8.0 Objects Library
Microsoft DAO 3.5 Objects Library
Gruss
Köbi
Antwort 13 von Locke
hmmmm...
wo finde ich das?
wo finde ich das?
Antwort 14 von Koebi
Hallo Locke
In der Datenbankansicht auf Modul gehen und irgendein Modul öffnen. Leider hat es aber in der Demo-DB keins.:-)
Also Modul / Neu und dann Menüpunkt Extras / Verweise anklicken. Nun werden die verfügbaren Referenzen angezeigt. Die drei, die ich erwähnt habe, sollten angehackt sein.
Je nach Access-Version musst Du evtl. die DAO 3.6 und nicht die DAO 3.5 nehmen. Halt mal ausprobieren.
Gruss
Köbi
In der Datenbankansicht auf Modul gehen und irgendein Modul öffnen. Leider hat es aber in der Demo-DB keins.:-)
Also Modul / Neu und dann Menüpunkt Extras / Verweise anklicken. Nun werden die verfügbaren Referenzen angezeigt. Die drei, die ich erwähnt habe, sollten angehackt sein.
Je nach Access-Version musst Du evtl. die DAO 3.6 und nicht die DAO 3.5 nehmen. Halt mal ausprobieren.
Gruss
Köbi
Antwort 15 von struppi
Hallo,
Ob das klappt hängt auch von der Reihenfolge der Verweise ab. Wenn ADO zuerst kommt wird bei (NUR) Recordset ADO.Recordset benutzt. Wenn DAO zuerst kommt dann wird bei Codes in denen nur Recordset deklariert wurde DAO.Recordset benutzt.
Die Verweise lassen sich in beliebiger Reihenfolge anordnen.
gruß struppi
Ob das klappt hängt auch von der Reihenfolge der Verweise ab. Wenn ADO zuerst kommt wird bei (NUR) Recordset ADO.Recordset benutzt. Wenn DAO zuerst kommt dann wird bei Codes in denen nur Recordset deklariert wurde DAO.Recordset benutzt.
Die Verweise lassen sich in beliebiger Reihenfolge anordnen.
gruß struppi
Antwort 16 von Locke
Ja, danke an alle.
Microsoft DAO 3.6 Objects Library
war nicht angehakt.
Mannomann was ist dem ganzen anderen Kram, wann weiß ich was ich da anhaken muß?. Da sind ja mindestens 100 Einträge die man wählen kann ?!
Microsoft DAO 3.6 Objects Library
war nicht angehakt.
Mannomann was ist dem ganzen anderen Kram, wann weiß ich was ich da anhaken muß?. Da sind ja mindestens 100 Einträge die man wählen kann ?!