Anfängerfrage zur Übergabe von Werten

Hi,
ich möchte einen Wert, den ich mithilfe einer Auswahlabfrage aus einer Tabelle errechnet habe in eine andere Tabelle in eine bestimmte Spalte, abhängig vom Primärschlüssel, schreiben.
In C++ wärs recht einfach, aber in Access habe ich leider keine Ahnung wie das funktioniert, denn mit einer Aktualisierungsabfrage und mit einer Anfügeabfrage gings nicht, wie ichs haben wollte.
Bei der Anfügeabfrage fügt der immer eine neue Zeile hinzu und bei der Aktualisierung bekomme ich nur die Fehlermeldung, ich solle eine Abfrage nehmen, die aktualisierbar ist.

Vielen Dank für die Hilfe im Voraus.

MFG Michael

Hallo.

ich möchte einen Wert, den ich mithilfe einer Auswahlabfrage
aus einer Tabelle errechnet habe in eine andere Tabelle in
eine bestimmte Spalte, abhängig vom Primärschlüssel,
schreiben.

Sagen wir, Du hast tbl_Humba und tbl_Täterä, Du willst das Feld txt_Humba_Bumm in das Feld txt_Täterä_Peng schreiben, der Primärschlüssel pky_Humba soll gleich pky_Täterä sein. Das Ganze passiert aus einem Formular (mit tbl_Humba als Grundlage) folgendermaßen (auf einer Schaltfläche btn_Humba_Täterä) :

 Private Sub btn\_Humba\_Täterä\_Click()
Dim lng\_HumbaKey As Long
Dim rst\_Täterä As DAO.Recordset
lng\_HumbaKey=pky\_Humba
Set rst\_Täterä=CurrentDb.OpenRecordset("SELECT \* FROM tbl\_Täterä WHERE tbl\_Täterä.pky\_Täterä="+\_
 STR$(lng\_HumbaKey),dbOpenDynaset)
With rst\_Täterä
 If .RecordCount=0 Then
 .AddNew
 !pky\_Täterä=lng\_HumbaKey
 Else
 .Edit
 End If
 !txt\_Täterä\_Peng=txt\_Humba\_Bumm
 .Update
 .Close
End With
Set rst\_Täterä=Nothing
End Sub

Während Du im VB zugange bist, musst Du noch einen Verweis auf die Microsoft DAO 3.6- Library setzen („Extras/Verweise“). Das sollte dann eigentlich tun.

Zur Erklärung : Die Prozedur öffnet die tbl_Täterä und fügt, wenn der korrespondierende Primärschlüssel (aus tbl_Humba) noch nicht da ist, den Datensatz hinzu. Ist er schon da, wird txt_Täterä aktualisiert.

Nicht unbedingt Anfängerstoff, aber hat den Vorteil, dass es funktioniert (Tippfehler möglich; habe im Forum keinen Debugger). Trompeten wird es eher nicht …

Viel Erfolg wünscht
kw

Hi Michael,

bei der Aktualisierung bekomme ich nur die Fehlermeldung, ich
solle eine Abfrage nehmen, die aktualisierbar ist.

Du hast möglicherweise ein komplexe Abfrage zu Grunde gelegt, die keine beschreibbaren Daten liefert (zB wegen einer Gruppierung etc.).

Versuche einmal folgendes:

  • Speichere die Abfrage die den Wert liefern soll als eigenes Objekt ab.
  • Erstelle eine neue Abfrage als Aktualisierungsabfrage in der Du
  • die Tabelle die geändert werden soll einfügst und
  • die zuvor gespeicherte Abfrage einfügst
  • Joine die beiden Objekte über den Primärschlüssel
  • Trage dann in die „Ändern zu“ Zeile der betroffenen Spalte (nur die brauchst Du hier) den Feldnamen des zu übernehmenden Wertes aus der zuvor gespeicherten Abfrage ein. z.B: [Name Abfrage]![Name Feld]

Eine Hilfe kann der Ausdrucksgenerator (rechte Maustaste Befehl „Aufbauen…“) sein.

Gruß Alexander

Tausend Dank für die Hilfe. Das Probier ich gleich mal aus.

Ich hab die beiden Varianten jetzt ausprobiert und habe leider immer noch Probleme, denn bei den Abfragen, die mir die Werte liefern, muss ich die Funktion Gruppierung benutzen, ansonsten wird der errechnete Wert nicht dem richtigen Primary Key zugeordnet. Die Fehlermeldung tritt also immer noch auf.

Bei dem Quelltext gibt es leider auch ein Problem. Ich erhalte die Fehlermeldung: Sub oder Function nicht definiert, wobei das WHERE blau markiert und der Kopf der Funktion: Private Sub … mit nem grünen Pfeil und gelb markiert ist.
Fehlt dem noch irgendeine Library außer der DAO 3.6?

MFG Michael

Hallo,

vielleicht könntest Du die Abfrage (SQL) und den Quelltext Deiner Prozedur posten?

ujk

Teilnehmergeld : Auswahlabfrage

SELECT [Gemeldete Personen].[Teilnehmer_Nr], Sum([Gemeldete Personen].[Kosten]) AS [Ausstehende Kosten]
FROM [Gemeldete Personen]
GROUP BY [Gemeldete Personen].[Teilnehmer_Nr];

Das Ergebnis soll in Verbindung der „Teilnehmer_Nr“, der Abfrage und der „Teilnehmer_Nr“(PKY), der Tabelle „Teilnehmer“ in das Feld „Ausstehende Kosten“, der Tabelle „Teilnehmer“ schreiben.

Sry, dass ich hier so nerve, aber ich verzweifel echt daran. Hab mittlerweile ca 10 Stunden versucht das hinzukriegen, wehe die Lösung ist jetzt einfach :wink:
MFG Michael

Hallo Michael,

so leid es mir tut, aber die Lösung ist tatsächlich ganz einfach:

Mach aus deiner ersten Abfrage eine Tabellenerstellungsabfrage, die eine Zwischentabelle erzeugt. Mit der Aktualisierungsabfrage greifst du jetz statt auf die Abfrage 1 (was Access irgendwie nicht schafft) auf diese Zwischenatbelle zu und schon funktioniert’s (dauert keine 5 Minuten, hab’s eben probiert)

Gruß

Steffen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

NEEEEEEEEEEEEEEEEEEEEEEEEEEEEIN. Ich heul gleich :stuck_out_tongue_winking_eye: Vielen Dank. Da wär ich niemals draufgekommen(auch nach weiteren 10 stunden net).
Thx a lot für die Hilfe!!!
MFG Michael