Office: (Office 2003) Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS

Helfe beim Thema Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo! Der Code sollte nur als Prinzip-Skizze dienen. Im "Echt-Code" könnte ich mir das so vorstellen: Code: public sub ProjektEntwurfKopieren(byval... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Adversarius, 1. Februar 2014.

  1. Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS


    Hallo!

    Der Code sollte nur als Prinzip-Skizze dienen.

    Im "Echt-Code" könnte ich mir das so vorstellen:

    Code:
    Nun kannst du von dort aus, wo du das Kopieren starten willst, die Prozedur "ProjektEntwurfKopieren" nutzen.
    Falls du die neue EntwurfNr noch nicht hast, eventuell über DMax oder ähnliches ermitteln.

    mfg
    Josef
     
    Josef P., 28. Februar 2014
    #16
  2. Folgenden Code habe ich jetzt auf dem entsprechenden Formular hinterlegt:
    Code:
    Wenn ich den Button drücke, gibt er mir aus "Fehler beim Kompilieren - Argument nicht optional " und markiert ProjektEntwurfKopieren im Button Sub.

    Und hier die drei Auswahlabfragen, die ich erstellt habe:
    "qryNeuerEntwurf" - funtkioniert manuell
    PARAMETERS ZuKopierendeProjektNr Text ( 255 ), ZuKopierendeEntwurfNr Long, NeueEntwurfNr Long;
    INSERT INTO ProjektEntwürfe ( ProjektNr, EntwurfNr, Beschreibung )
    SELECT PE.[ProjektNr], [NeueEntwurfNr] AS EntwurfNrNeu, PE.[Beschreibung]
    FROM ProjektEntwürfe AS PE
    WHERE PE.ProjektNr=[ZuKopierendeProjektNr] AND PE.EntwurfNr=[ZuKopierendeEntwurfNr];

    "qryProjektPositionenKopieren"
    PARAMETERS ZuKopierendeProjektNr Text ( 255 ), ZuKopierendeEntwurfNr Long, NeueEntwurfNr Long;
    INSERT INTO ProjektPositionen ( ProjektNr, EntwurfNr, ALPosNr, PosNrKunde, BGRPos, MDSKNr, GüSi, Überschrift, Leistungsbeschreibung, Bemerkungen, Status, Änderungsstand, Änderungsdatum )
    SELECT PP.[ProjektNr], [NeueEntwurfNr] AS EntwurfNrNeu, PP.[ALPosNr], PP.[PosNrKunde], PP.[BGRPos], PP.[MDSKNr], PP.[GüSi], PP.[Überschrift], PP.[Leistungsbeschreibung], PP.[Bemerkungen], PP.[Status], PP.[Änderungsstand], PP.[Änderungsdatum]
    FROM ProjektPositionen AS PP
    WHERE PP.ProjektNr=[ZuKopierendeProjektNr] AND PP.EntwurfNr=[ZuKopierendeEntwurfNr];

    "qryProjektPositionsDetailsKopieren"
    PARAMETERS ZuKopierendeProjektNr Text ( 255 ), ZuKopierendeEntwurfNr Long, NeueEntwurfNr Long;
    INSERT INTO ProjektPositionsDetails ( ProjektNr, EntwurfNr, ALPosNr, DetailNr, KAPreis, Beschreibung, Bemerkung, UAN, Soko, LagermatSK, FFSK, TypStd, AnzStd )
    SELECT PPD.[ProjektNr], [NeueEntwurfNr] AS EntwurfNrNeu, PPD.[ALPosNr], PPD.[DetailNr], PPD.[KAPreis], PPD.[Beschreibung], PPD.[Bemerkung], PPD.[UAN], PPD.[Soko], PPD.[LagermatSK], PPD.[FFSK], PPD.[TypStd], PPD.[AnzStd]
    FROM ProjektPositionsDetails AS PPD
    WHERE PPD.ProjektNr=[ZuKopierendeProjektNr] AND PPD.EntwurfNr=[ZuKopierendeEntwurfNr];

    Im Fall der Abfragen 2 & 3:
    Beim Einzelausführen der Abfragen, tritt zuerst kein Fehler auf, ich gebe manuell Projektnummer und alte und neue Entwurfsnummer an (Dialogfenster), allerdings macht er das nicht, da eine/mehrere Schlüsselverletzung(en) aufgetreten sei(n).



    Was mache ich jetzt noch falsch?!
     
    Adversarius, 28. Februar 2014
    #17
  3. Hallo!

    .. weil die Parameterwerte für die Prozedur fehlen.
    Hast du noch nie eine VBA-Prozedur mit Parameter erstellt?

    Code:
    Anm.: Den DMax-Ausdruck könntest du auch in die ProjektEntwurfKopieren verlagern, dann könnte der 3. Parameter entfallen.
    oder du erstellst ein weiter Hilfsfunktion:
    Code:
    =>
    Code:
    Was verstehst du unter "Einzelausführen der Abfragen"?

    mfg
    Josef
     
    Josef P., 28. Februar 2014
    #18
  4. Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS

    Hallo Josef,

    Nicht oft und ich hatte die Parameter zwischenzeitlich auch definiert, habs dann aber wieder rausgenommen, weil ich von den "call" und "public" - Sachen irritiert war und dachte, die ersetzen das.(Bin wirklich noch sehr am Anfang mit diesen fortgeschrittenen Codes)

    Das Anklicken der Abfrage in der Navigationsleiste links. Allerdings klappt das jetzt. Ich kann durch anklicken und eingeben der Parameter in die Dialogfenster nun alle 3 Aktionen ausführen.

    Was meinst du damit?Die Automatisch über Dmax erstellte Nummer ändern?

    Allerdings klappt die Buttonprozedur immernoch nicht. Es kommt die Fehlermeldung, die ich im Screenshot angefügt habe und ich finde da keine Lösung, was das soll.
    Kannst du mal in die DB schauen, wo da jetzt noch der Wurm drin ist ?
     
    Adversarius, 1. März 2014
    #19
  5. ACHSO: Warum schreibst du teilweis sProjektNr ?
     
    Adversarius, 1. März 2014
    #20
  6. Weil das Datenfeld den Namen "ProjektNr" hat und ich vermeiden wollte, dass der Parameter damit verwechselt wird.

    Zum Fehler:
    Das muss "QueryDefs" und nicht "OpenQueryDef" sein.
    Code:
    Z. B. den Datensatz mit der neuen Entwurfsnummer im Formular auswählen.
    Code:
    mfg
    Josef
     
    Josef P., 1. März 2014
    #21
  7. Achso klar, macht Sinn !
     
    Adversarius, 1. März 2014
    #22
  8. Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS

    Hallo Josef,

    vielen, vielen Dank! ES KLAPPT GENAUSO WIE ES SOLL!!! OBERGEIL!!!

    Ich will auch echt nicht nerven, aber ich habe immernoch nicht 1:1 verstanden, wie genau jetzt die Querydefteile funtkionieren. Hab nun versucht das ganze für einen 2. einfacheren Bereich zu adaptieren (Ich nehme einen Entwurf und Kopiere ihn in eine andere Tabelle, der DS bekommt zusätzlich eine AuftragsNr). Allerdings heisst es hier immer Sub wäre nicht definiert, kannst du mir kurz mal erklären, wieso meine Zuweisung falsch ist? *frown.gif*

    Code:
     
    Adversarius, 2. März 2014
    #23
  9. Hallo!

    Code:
    Fällt dir etwas auf? *Smilie

    BTW: Call als Präfix für einen Prozedurnamen sieht für mich etwas eigenartig aus. Welchen Mehrwert hast du vom Wort "Call" im Prozedurnamen?

    mfg
    Josef
     
    Josef P., 2. März 2014
    #24
  10. Moin Moin Josef,

    ja stimmt hatte ich übersehen *eek.gif*

    Also jetzt nicht lachen: ich hab mit call gearbeitet, weil du mir das ja in dem vorigen Ablauf so vorgeschlagen hast und ich da noch nicht ganz durchgestiegen bin. Habe jetzt den zweiten Ablauf komplett ausgeführt und jetzt stattdessen "OpenQuery" genutzt. Allerdings kommt jetzt wieder die "Argument nicht optinal" Meldung bei Betätigung des Buttons. Habe ich jetzt wieder irgendwas nicht definiert ?

    Code:
     
    Adversarius, 6. März 2014
    #25
  11. Hallo!

    Ich glaub, jetzt ist der Punkt erreicht, dass du diesen Fehler selbst finden und beheben musst. Ich helfe dir zwar bei der Suche, zeig dir den korrigierten Code aber nicht mehr. *Smilie


    Und wenn du dann auf in der Fehlermeldung auf "Debug" klickst, wird die "Problemzeile" markiert.
    BTW: Diese Fehlermeldung würde übrigens schon kommen, wenn du die Anwendung kompilierst. Wenn du Code erstellt hast, kann ich dir nur empfehlen regelmäßig die Anwendung zu kompilieren. Dann bemerkst du Syntaxfehler gleich und nicht erst beim "Ausprobieren", ob der Code funktioniert.

    Markiert wird vermutlich:
    Code:
    Grund:
    Code:
    Wieviele Parameter erwartet diese Prozedur?
    Wieviele Parameter hast du beim Aufruf übergeben?

    => Wie kannst du den Fehler beheben?




    mfg
    Josef
     
    Josef P., 6. März 2014
    #26
  12. NeueAuftragsNr = ProjektzuAuftrag(Me!ProjektNr_F1, Me!EntwurfNr_F1,Me!AuftragsNr_F1(!?ergibt ja aber keinen Sinn, weil er diesen Wert doch ermitteln soll!?))

    Ich habe jetzt versucht, mal mein Verständnis des Aufbaus darzulegen, vielleicht, denke ich auch völlig falsch, stimmt das so?!

    Code:
     
    Adversarius, 10. März 2014
    #27
  13. Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS

    Hallo!

    Code:
    Die Prozedur ist "ProjektzuAuftrag" in der Button-Sub, richtig? Sie erwartet 2

    Bitte noch einmal zählen. *Smilie

    Du übergibst in der Button-Sub 2 Parameter. Aber wieviele Parameter werden von der Prozedur erwartet?

    So wäre dein Plan. ... Und so ist der Prozedur-Code auch erstellt - nur die Prozedur-Deklaration passt nicht. *Smilie

    mfg
    Josef
     
    Josef P., 10. März 2014
    #28
  14. Hallo Josef,

    Ich glaube ich habe die Richtung falsch verstanden. Ist es also so, dass die Button-Sub mit NeueAuftragsNr = ProjektzuAuftrag(Me!ProjektNr_F1, Me!EntwurfNr_F1) die beiden Parameter ProjektNr und Entwurf AN die Public Function ProjektzuAuftrag übergibt, welche 3 Parameter erwartet?!

    Was meinst du mit Prozedurdeklaration (also eine einzelne oder der gesamte Aufbau 1.)-4.) )?
     
    Adversarius, 10. März 2014
    #29
  15. Hallo!

    Genau!

    Der 3. Parameter in dieser Prozedur wird nach deinem Code nicht benötigt.


    Code:
    Festgelegt ist es, aber du hast die Funktion so programmiert, dass sie die neue Auftragsnummer an die aufrufende Stelle (im Code der Button-Sub) zurückgeben soll.

    mfg
    Josef
     
    Josef P., 10. März 2014
    #30
Thema:

Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS

Die Seite wird geladen...
  1. Kopieren mehrerer Datensätze mit deren in Beziehung stehenden DS - Similar Threads - Kopieren mehrerer Datensätze

  2. Werte aus mehreren Spalten kopieren und darunter einfügen

    in Microsoft Excel Hilfe
    Werte aus mehreren Spalten kopieren und darunter einfügen: Hallo zusammen, leider konnte ich im Internet und auch in diesem Forum keine passende Antwort finden. Ich habe eine .csv Datei, bei der ich mehrere Spalten habe. Es handelt sich hierbei um...
  3. Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben

    in Microsoft Excel Hilfe
    Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben: Hallo zusammen, ich arbeite gerade an einer Vereinfachung für Bestellungen. Ich habe es hingekriegt, dass Kontrollkästchen an zu wählen sind und dann bestimmte Informationen kopiert werden. Jetzt...
  4. Daten aus mehreren Blättern kopieren

    in Microsoft Excel Hilfe
    Daten aus mehreren Blättern kopieren: Hallo zusammen, ich würde gerne in der Spalte B den Namen aus einem anderen Blatt kopieren. Händisch müsste ich so in die passenden Zeilen die Formel ='1'!$B$3; ='2'!$B$3, ='3'!$B$3 eintragen....
  5. Tastaturbefehle Ctrl + C, Ctrl + V, Ctrl + X funktionieren in Word nicht mehr

    in Microsoft Word Hilfe
    Tastaturbefehle Ctrl + C, Ctrl + V, Ctrl + X funktionieren in Word nicht mehr: Hallo zusammen Seit kurzem funktionieren in Word die Tastauturbefehle für Kopieren, Einfügen, Ausschneiden nicht mehr. Das Problem tritt nur in Word auf – überall sonst funktionieren die Kürzel....
  6. Mehrere Zellen aus geschlossener Datei kopieren

    in Microsoft Excel Hilfe
    Mehrere Zellen aus geschlossener Datei kopieren: Hallo, ich versuche aus einer geschlossene .xls Datei 7 Zellen zu aktive Mappe zu kopieren. Das Klappt aber nicht mit folgenden Code. Sub aa() Dim Rechnung As String Dim Datum As String Dim...
  7. Mehrere Datensätze markieren, kopieren und mit aktuellem Datum einfügen

    in Microsoft Access Hilfe
    Mehrere Datensätze markieren, kopieren und mit aktuellem Datum einfügen: Hallo zusammen, ich habe ein Problem, bei dem ich gerade leider nicht weiter komme. Ich habe eine Access-Datenbank erstellt, in der u.a. täglich mehrere Datensätze kontrollierter Bauteile...
  8. Makro VBA: Kopieren aus Quelldatei nach Zieldatei über mehrere Tabellen

    in Microsoft Excel Hilfe
    Makro VBA: Kopieren aus Quelldatei nach Zieldatei über mehrere Tabellen: Hallo, leider kann ich maximal Makros aufzeichnen. Damit komme ich bei meinem jetzigen Problem allerdings nicht weiter. Problem: Monatlich soll ein Auszug von Daten aus einer Quelldatei die ich...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden