PDA

Vollständige Version anzeigen : Speichern einer Vorauswahl in eine Tabelle


Martin H
07.05.2001, 11:58
Hallo Profis,
Ich kämpfe seit einigen Tagen.... Kann mir jemand weiterhelfen??

Ich habe basierend auf einer Abfrage ein Formular erstellt. Es enthält Personen welche bestimmten Kriterien entsprechen. Über ein Makro können nun zu jeder Person (über ein weiteres Formular) Detailinformationen eingegeben werden. Wie kann ich diesen Details nun den den Namen der betreffenden Person zuordnen. Also wie kann ich den Namen (ausgewählt im vorherigen Formular) in die Tabelle der Details speichern?

Im voraus vielen Dank für die Unterstützung.
Mit freundlichen Grüßen,
Martin

Ulf Petersen
07.05.2001, 12:52
Hi Martin,

Verständnisfrage:
Speicherst Du die Detaildaten zu den Personen in einer separaten Tabelle? Wenn ja, warum?
Ohne eine solche Aufteilung hättest Du eine eindeutige Zuordnung und könntest mit abhängigen Formularen arbeiten.

Ulf

Martin H
07.05.2001, 13:16
Hi Ulf,
danke für Deine Nachfrage, ich komme ins grübeln, aber es ist gar nicht so einfach zu erklären...
Hier nochmal ein Versuch: Ich benötige die Detaildaten in einer neuen Tabelle. Dummerweise gibt es zu jeder Person mehrere Detaildatensätze.

Ziel ist es, später eine Tabelle mit den Detaildatensätzen zu haben, in welcher dann jedoch der Bezug zur Person vorhanden ist.

Irgendwo habe ich einen Knopf im Kopf. Es muß doch möglich sein, beim Drücken eines Buttons einen Text in eine Tabelle zu schreiben!

Danke für Hilfe und Tips!
Gruß,
Martin

Ulf Petersen
08.05.2001, 13:50
Dann versuch's doch mal folgendermaßen:

Private Sub DeinKnopf_Click() 'Ereignisprozedur zu Deiner Befehlsschaltfläche im Formular
Dim db As Database
Dim rs As Recordset

Set db = Application.CurrentDb
Set rs = db.OpenRecordset("DeineDetailtabelle", dbOpenDynaset)

With rs
.Movelast
.Edit
!DeinNamensfeldInDerDetailtabelle = Me.DeinNamensfeldImFormular.Value
.Update
End With

End Sub

Das setzt allerdings voraus, daß der aktuelle Datensatz in Deiner Detailtabelle bereits existiert und der letzte ist (.Movelast). Wenn nicht, müßte der fragliche Datensatz erstmal gefunden werden. Das kannst Du aber in der Hilfe unter "FindFirst, FindNext..." etc. nachschlagen.

Viel Glück!

Ulf

WalterS
08.05.2001, 20:58
Hallo !!

Makros sind sch........!

Mittels VBA-Code kannst du den Namen dem Formular, dass du öffnest als OpenArg übergeben und im neuen Datensatz das entsprechende Feld damit füllen.

Ich würde aber nicht den Namen sondern eine eindeutige ID(Autowert) für den Bezug zwischen den Tabellen wählen, da irgendwann einmal zwei gleiche Namen auftreten können.

Martin H
09.05.2001, 12:48
Hallo!
Leider habe ich mit VBA nur sehr wenig Erfahrung. Hat jemand evtl. ein Beispiel, wie man eine ID als OpenArg übergeben und im neuen Datensatz das entsprechende Feld damit füllen kann?
Danke im voraus.

Gruß,
Martin

Alexander Jan Peters
16.05.2001, 10:09
<font color="#000000" size="2" face="Tahoma">Hallo,

das geht etwa so:</font>

<font color="#000000" size="2" face="Courier New">
Private Sub cmdDetail_Click ()
'Click-Ereignis des Buttons im Hauptformular
Dim lngID As Long

On Error Resume Next
lngID = Me.txtID
If Not err.Number = 94 Then
DoCmd.OpenForm "frmDetails", OpenArgs:= lngID
End If
End Sub

Private Sub Form_Open ()
'Ereignis Beim Öffnen des Detailformulars
Me.txtParentID = Me.OpenArgs
End Sub</font>

<font color="#000000" size="2" face="Tahoma">Der Button heißt in diesem Beispiel cmdDetail, das Feld in das der Wert im Detailformulars eingefügt wird txtParentID,
der Wert selbst ist vom Typ Long Integer. Ich hoffe das hilft Dir weiter.

Gruß

A.J. Peters

Empfehlenswerte Links:
<a href="http://www.donkarl.com">Access FAQ von Karl Donaubauer</a>
<a href="http://www.access-paradies.de/Links.htm">Access-Paradies Links</a></font>