fisheye Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 Hallo ihr lieben, ich habe da ein kleines Problem in Access. Ich beziehe in einem Formular über SQL Code Daten aus einer Tabelle mit Personendaten (ungebunden). Der Anwender soll nun die Möglichkeit haben, die Felder zu editieren. Beim Drücken auf den Speichern Button sollen die alten Einträge (in der Tabelle) durch die neuen Einträge in den Steuerelemeten im Formular ersetzt werden. Damit der zu ersetzende Wert in der Tabelle gefunden wird, wird die ID aus der Tabelle mit der ID im Formular verglichen (ID im Formular ist an die Tabelle gebunden). Wie könnte ich das ganze nun realisieren? Über Vorschläge würde ich mich freuen Ciao fishy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 hi, wenn du die id hast, kannst du ja ein update-statement absetzen, in dem du die geaenderten werte ueberschreibst. um die geaenderten werte zu identifizieren, solltest du die aus der db ausgelesenen werte in variablen zwischenspeichern. hoffe, es hilft... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisheye Geschrieben 11. März 2003 Autor Teilen Geschrieben 11. März 2003 Darüber hatte ich auch schon nachgedacht, aber ich wußte nicht, wie ich es in Access realisieren sollte. Wie muss das denn so im groben aussehen? Wirds im VB Code Fenster gemacht? Variablen die Werte zuweisen, sollte ich glaube ich noch draufhaben... *schäm* Dim db As Database Dim rst As Recordset Set db = CurrentDb Set rst = db.OpenRecordset("tblPersonendaten", dbOpenDynaset) rst.update ... ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 hi, ich kenne mich mit access im speziellen nicht aus, evtl gibt es fuer diese anforderung auch board-mittel von access... ein formular hat in access ein 'code-fenster' in dem du den vba-code schreiben kannst. in diesem machst du am besten die sql-abfrage und fuellst die controls (textfelder?) mit werten. zu jedem wert, der geaendert werden kann, speichertst du den wert in einer zwischenvariablen. beim klick auf den speichern-knopf (im ereignis button_click) vergleichst du dann die werte aus den controls mit den zwischengespeicherten. hoffe, es hilft... bei weiteren fragen einfach posten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 Meine Vorgehensweise war: Es spielt ja keine Rolle, welche Werte du eingelesen hast. Was du benötigst, ist einfach die ID. Ich habe in Access (und es funzt ganz ordentlich) immer ein zweites (gebundenes) Formular mit allen möglichen zu ändernden Feldern(gleichen Namen wie im ersten Formular) erstellt, welches bei dem Speichern - Button nichtsichtbar aufgerufen wird. Beim Öffnen (- Ereignis) springt es zu dem angegebenen Datensatz. Dann durchläuftst du dort alle Felder und überschreibst den Wert mit den Werten deines ersten Formulars und schliesst dieses zweite Formular einfach wieder. (Dieses kann man entsprechend bei Abhängigkeiten [Firma - Ansprechpartner in der Firma etc.] auch mit mehr Formularen machen). Oder anders : Baue mit deinem Sichtbaren Formularen eine Scheinwelt, die nichts anrichten kann und Steuere über nichtsichtbare Formulare deine Datenmanipulation. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisheye Geschrieben 11. März 2003 Autor Teilen Geschrieben 11. März 2003 Hmm,ich habs nun mal mit nem RecordSet Update versucht (jedenfalls nen bissel Ahnung von), aber mit der Formulierung des Codes habsch so meine Probleme (s.o. Thread). Laut Access soll es damit aber möglich sein, direkt Werte in Feldern in der Tabelle mit den neuen Werten zu überschreiben. Weiß da wer was? Aber danke erstmal für die tipps Edit: Ja danke Der Kleine, die Idee ist doch perfekt. Hättest du was dagegen, mir den Code für den Felddurchlauf mitzuteilen? Es wäre jedenfalls sehr nett. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 Na mal schauen : Private Sub Form_Load() Dim ctl As Control Dim ctl1 As Control For Each ctl In Me.Controls Select Case ctl.name Case "firmen_id": ctl = Forms![formular_firmendaten].firmen_id Case "letzte_aktualisierung": ctl = Now Case Else: For Each ctl1 In Forms![neuer_ansprechpartner].Controls If ctl1.name = ctl.name Then ctl = ctl1 End If Next End Select Next DoCmd.Close acForm, Me.name Forms![formular_firmendaten].[unterformular_ap].Requery End Sub Das Formular heißt : [formular_ansprechpartner_uebergabe] entnimmt alle Felder aus dem Formular : [neuer_ansprechparter] und ordnet die Firmen - Id zum Feld "firmen_id" und das Änderungsdatum zum Feld "letzte_aktualisierung" Zum Schluß wird das Unterformular [unterformular_ap] im Formular [formular_firmendaten] aktualisiert, damit alle Neuen Werte für den Ansprechpartner entsprechend im Ausgangsformular angezeigt werden. PS : Das gleiche funktioniert mit neuen Datensätzen, nur das ich beim Öffnen zu einem neuen Datensatz springe (hier : acFormAdd), nicht auf den bereits vorhandenen: Private Sub schliessen_Click() DoCmd.OpenForm "neuer_ansprechpartner_uebergabe", , , , acFormAdd, acHidden end sub Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 11. März 2003 Teilen Geschrieben 11. März 2003 Moin ! Du kannst wie von Dir oben schon angedacht das ganze über Recordset direkt in die Tabelle schreiben, falls es Dich noch interessiert, das funzt so: Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = db.OpenRecordset("Tabelle", dbOpenDynaset) 'zum ersten Datensatz mit der ID springen rst.FindFirst "ID = " & txt_ID.Value 'Datensatz zum Ändern öffnen rst.Edit 'neue Werte zuweisen rst!Feld1 = txt_Feld1.Value rst!Feld2 = txt_Feld2.Value ... 'Änderungen speichern rst.Update Hoffe das hilft Dir weiter ! gruß Christian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fisheye Geschrieben 12. März 2003 Autor Teilen Geschrieben 12. März 2003 Ja vielen Dank Ich werde es mal mit dem RecordSet ausprobieren. Wenn es nicht des wahre is, denn nehm ich die Alternative. Hoffe mal das klappt irgendwie *g* Thankx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.