collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 51
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13929
  • stats Beiträge insgesamt: 66081
  • stats Themen insgesamt: 8913
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Datensätze kopieren und Fremdschlüssel vergeben  (Gelesen 484 mal)

Offline AlexC75

  • Newbie
  • Beiträge: 2
Datensätze kopieren und Fremdschlüssel vergeben
« am: Februar 24, 2018, 15:24:17 »
Hallo liebe Access und VBA Gemeinde,

ich bin leider ein völliger Neuling in Access und kam auf die fixe Idee meinem Vorgesetzten einen Vorschlag zur Aufgabenabverfolgung zu unterbreiten. Damit habe ich natürlich dieses Projekt gewonnen und soll die Idee in Access umzusetzen.  :o

Es geht im Detail um ein Aufgabenverwaltungsprogramm das die Kollegen dabei unterstützen soll vordefinierte Qualitätsaufgaben auf standardisiert Weise abzuverfolgen. Das Programm soll dabei den Fortschritt der Aufgabe unter Berücksichtigung des Zieltermins berücksichtigen. In jedem übergeordneten Projekt müssen ca. 50 Aufgaben abverfolgt werden.
Die tlbAufgaben beinhaltet folgende Splatenüberschriften:
- Aufgaben_ID => Primärschlüssel => verknüpft mit tblAufgabendetails (Spalte: Status und HeutigesDatum)
- Aufgaben_IDFS => Zahl => Fremdschlüssel zum Primärschlüssel tblProjektübersicht (beinhaltet alle übergeordneten projektrelevanten Daten)
- Aufgaben_Nr => Kurzer Text
- Aufgaben_Beschreibung => Kurzer Text
- Zieldatum => Datumsfeld
- Projekt Phase 0 bis 6 => insg 14 Kombinationsfelder => Benutzer gibt hier den aktuellen Aufgabenstatus in der jeweiligen Phase an (rot, gelb, grün, N/A).

Wenn ich nun in die leere Tabelle Daten eintrage, werden diesen auch ohne Probleme ein Fremdschlüssel zugeordnet und ich habe die Möglichkeit mittel Formular eine hübsche anwenderfreundliche Oberfläche anzulegen.

Nun möchte ich natürlich nicht immer diese 50 Datensätze für jedes Projekt von Hand neu eintragen. Dies soll automatisiert erfolgen z.B. einmalig mittel Knopfdruck oder beim erstmaligen öffnen des Formulars.
Nun habe ich mir gedacht, dass eine Referenztabelle (tblAufgabenRef) mit den vollständigen Datensätzen einfach in die aktuelle Tabelle hineinkopiert werden könnte. Aber anscheinend falsch gedacht.

Habe hier schon mittel VBA "INSERT INTO"-Befehl versucht zu arbeiten aber bin immer wieder auf Probleme gestoßen, unter anderem, dass der Fremdschlüssel nicht vergeben wurde oder dass die Tabelle nicht angefügt sondern überschrieben wurde.
Zu meiner Schande muss ich gestehen, dass ich auch leider keine Ahnung von VBA Programmierung habe.

Bin jetzt mittlerweile seit Wochen nach auf der Suche nach einer Lösung aber leider finde ich keine.
Ich hoffe Ihr könnt mir helfen und den richtigen Weg weisen.
Vielen Dank im Voraus.

Besten Gruß
Alex
 
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1750
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #1 am: Februar 24, 2018, 16:11:42 »
Hallo Alex,
Du brauchst hier vier Tabellen, - Projekte, Aufgaben, AufgabenInProjekten, Phasen

Projekte:
Projekt_ID, PK (Autowert = Long)
ProjektName, Text
...
Aufgaben:
Aufgabe_ID, PK (Autowert = Long)
Aufgabe_Nr, Text
AufgabeBeschreibung, Text
...
Phasen:
Phase_ID, PK (Autowert = Long)
PhaseText, Text
...
AufgabenInProjekten:
AInP_ID, PK (Autowert = Long)
Projekt_IDF, FK (Long)
Aufgabe_IDF, FK (Long)
Phase_IDF, FK (Long)
ZielDatum, Datum
...
Ob das mit den Phasen so stimmt bin ich mir nicht sicher, da muss wahrscheinlich noch dran geschraubt werden.

So wie oben dargestellt würde das Anfügen aller Aufgaben zu einem Projekt etwa so aussehen:
erstelle eine Anfüge-Abfrage "AufgabenZuProjekt" (Objektnamen anpassen)
INSERT INTO AufgabenInProjekten As AP
          AP.Projekt_IDF,
          AP.Aufgabe_IDF,
          AP.Phase_IDF,
          AP.ZielDatum
SELECT
          Forms.frmProjekte.FeldMitProjektID,
          A.Aufgabe_ID,
          1,
          Forms.frmProjekte.FeldMitZieldatum
FROM
          Aufgaben As A

Dein Button bekommt diese Ereignisprozedur
Private Sub DeinButton_Click()
    CurrentDb.Execute "AufgabenZuProjekt", dbFailOnError
End Sub

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline AlexC75

  • Newbie
  • Beiträge: 2
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #2 am: Februar 25, 2018, 16:37:09 »
Hallo Ekkehard,

erstmal vielen Dank, dass Du Dich so schnell gemeldet hast.
Mit der Tabelle "Phasen" hast Du recht. Daran muss ich später mal arbeiten, sobald ich die Programmierung im wesentlichen verstanden habe.  :-\
Daher habe ich diese Tabelle erstmal außen vor gelassen.

Trotz dessen ist leider ein Fehler aufgetaucht.
Bei Erstellung der Abfrage und Eingabe des SQL Codes kam die Fehlermeldung "Syntaxfehler in INSERT INTO-Anweisung".
Es scheint als ob die Codezeile -> INSERT INTO AufgabenInProjekten As AP diesen Fehler verursacht. "AP" kann anscheinend nicht zugewiesen werden.

Habe darauf die Zielfelder in Klammern geschrieben und entsprechend angepasst.
Code neu:

INSERT INTO AufgabenInProjekten ( Projekt_IDF, Aufgabe_IDF, ZielDatum )
SELECT Forms.frmProjekte.Projekt_ID, A.Aufgabe_ID, Forms.frmProjekte.Zieldatum
FROM Aufgaben AS A;


Allerdings war das auch nicht erfolgreich, da
-> Fehler: "2 Parameter wurden erwartet, aber es wurde zu wenig Parameter übergeben"
Wenn ich das richtig verstehe sind dafür folgende Bezüge verantwortlich:
-> Formulare.frmProjekte.Projekt_ID
-> Formulare.frmProjekte.ZielDatum

Habe die Testdatei mal an die Mail angefügt.

Wäre super wenn Du nochmal helfen könntest.
Schonmal Danke im Voraus.

Gruß
Alex
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1205
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #3 am: Februar 25, 2018, 17:03:14 »
Hier sollte die FAQ 6.4 helfen - oder Du lädst die Abfrage als QueryDef-Objekt, weist ihm die Parameter per Code zu und führst dessen Execute-Methode aus.

PS: Absolute Formularparameter werden mit Forms!Formname!Steuerelementname adressiert, wobei dann noch durch das grafische Abfragewerkzeug unnötige []-Paare, die aber nicht weh tun, gesetzt werden, was sich nur verhindern lässt, wenn man den Abfragetext mittels VBA-Code erstellt (macht vermutlich kein Mensch).
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1750
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #4 am: Februar 25, 2018, 17:40:12 »
Hallo Alex,
Die Klammerung ist korrekt, - hatte ich unterschlagen.  >:(
Der "fehlende" Parameter ist das Datumsfeld, das muss formatiert
übergeben werden.
.
Format$(Forms.frmProjekte.FeldMitZieldatum, "\#yyyy\-mm\-dd\#")
.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1205
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #5 am: Februar 25, 2018, 18:28:50 »
@Ekkehard,

sorry, aber Du unterbreitest hier Kokolores.
« Letzte Änderung: Februar 25, 2018, 18:57:17 von Lachtaube »
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1750
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #6 am: Februar 26, 2018, 11:58:01 »
@Lachtaube
Sorry, habe ich leider "hingeschlurt".
Ansonsten, interessante Technik Parameter- und Feldnamen zu
"synchronisieren". Kannte ich so noch nicht.
Zitat
wenn man den Abfragetext mittels VBA-Code erstellt (macht vermutlich kein Mensch).
Doch ich, - leider immer noch zu häufig.  :(

@Alex
Folge Lachtaubes Beispiel.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1205
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #7 am: Februar 26, 2018, 12:10:40 »
@Ekkehard,

ich meinte den Abfragetext einer gespeicherten Abfrage mittels CreateQueryDef zu erstellen. Denn sonst hat Access gar keine Chance, eigene []-Paare zu setzen :)
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1750
Re: Datensätze kopieren und Fremdschlüssel vergeben
« Antwort #8 am: Februar 26, 2018, 12:33:52 »
@Lachtaube
O.K., das mache ich allerdings auch nicht gewohnheitsmässig, und die
[] habe ich noch nie gebraucht.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.