PDA

Vollständige Version anzeigen : Werte übernehmen


Mike30
01.08.2005, 15:39
Ich habe ein „frm_Angebot“ mit einem „ufo_Angebot“. „frm_Angebote „ basiert auf „tab_Angebote“ (KundenNr. ; Datum; AngebotsNr; usw.). Das „ufo_Angebot“ basiert auf „tab_Angebotspos“ (AuftragsNr2; PositionsNr; Stückzahl; usw.). Das ganze wird dann in einer Abfrage zusammen gefasst. Beide Formulare sind über die „AngebotsNr“ miteinander verknüpft.
Das funkt soweit auch alles super.
Nun wollte ich aus einem Angebot gleich einen Auftrag erstellen und die entsprechenden Werte in „frm_Auftrag“ und „ufo_Autrag“ übernehmen. (Struktur von „Auftrag“ ist der selbe wie „Angebot“)
Die Werte übernehme ich wie folgt:

Private Sub Befehl232_Click()

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frm_Auftrag"

DoCmd.OpenForm stDocName, , , stLinkCriteria


DoCmd.GoToRecord acForm, "frm_Auftrag", acNewRec
Forms!frm_Auftrag!Kombinationsfeld54 = Forms!frm_Angebot!KundenNr
Forms!frm_Auftrag.ufo_Auftrag!PositionsNr = Forms!fm_Angebot.ufo_Angebot!PositionsNr
Forms!frm_Auftrag.ufo_Auftrag!ArtikelNr = Forms!frm_Angebot.ufo_Angebot!ArtikelNr
Forms!frm_Auftrag.ufo_Auftrag!Stückzahl = Forms!frm_Angebot.ufo_Angebot!Stückzahl
Forms!frm_Auftrag.ufo_Auftrag!FhzID = Forms!frm_Angebot.ufo_Angebot!FhzID
Forms!frm_Auftrag.ufo_Auftrag!Preis = Forms!frm_Angebot.ufo_Angebot!Preis

DoCmd.Close acForm, "frm_Angebot", acSaveYes

Jetzt hab ich aber festgestellt, das im „ufo_Auftrag“ nur eine Position übernommen wird. Auch wenn im Angebot mehrere Positionen stehen.
Wo ist mein Fehler? Bzw. Wie kann ich alle Positionen übernehmen?

JR²
01.08.2005, 15:45
Da solltest Du lieber mit einer SQL-Abfrage alle Datensätze des Unterformulars, die zu dem aktuellen Datensatz des Hauptformulars gehören, rüberschieben / kopieren.

Geschickter fände ich allerdings, wenn es eigentlich nur 1 Tabelle gäbe (Du sagts selber, der Aufbau ist identisch). Hinzufügen würde ich ein Ja/Nein-Feld, ob es bereits ein Auftrag ist. Nach diesem Feld filterst Du in beiden Formularen (wenn es dann noch beide gibt.
Das minimiert den Programmieraufwand erheblich ;-)

Gruß,
JR²

Mike30
01.08.2005, 16:40
Wie müßte denn die SQL- Abfrage aussehen um die Datensätze zu kopieren?

Mike30
02.08.2005, 09:02
Hat keiner einen Tipp mit der Abfrage ? Ist eine Anfügeabfrage der richtige Weg?

JR²
02.08.2005, 10:21
INSERT INTO tab_Auftragspos
SELECT tab_Angebotspos.*
FROM tab_Angebotspos
WHERE (((tab_Angebotspos.AngebotsNr)=[Formulare]![frm_Angebote]![AngebotsNr]))
WITH OWNERACCESS OPTION;


Namen müssen ggf. noch angeglichen werden.
Klar ist eine Anfügeanfrage richtig.

Gruß,
JR²

JR²
02.08.2005, 10:40
Ach ja:

Das obige kannst Du in einen String schreiben, und diesen String (z.B. SQLString) aufrufen mit:

CurrentDb.Execute SQLString

Du kannst natürlich auch eine Abfrage erstellen, die Du dann aus VBA heraus aufrufst.

Viel Erfolg,
JR²