Supportnet / Forum / Datenbanken
Datensätze verschieben in Formularen
Frage
Hallo, ich hoffe mir kann jemand helfen. Also ich habe mehrere Formulare; in den Formularen sind verschiedene Datensätze tabellarisch angeordnet; nun möchte ich (am liebsten mit einem Button) das ein ausgewähler Datensatz (ca. 8 Tabellenfelder) von einem Formular in das andere Formular verschieben. Ist das überhaupt möglich?
Antwort 1 von Teddy7
Hallo Desiree !
Jedes dieser Formulare hat ja eine Datenquelle - eine Tabelle oder eine Abfrage.
Wenn die Daten beider Formulare in der gleichen Tabelle stehen und nur durch ein oder mehrere Kriterien in einer Abfrage unterschieden werden, dann mußt Du nur diese(s) Kriterium ändern um die Verschiebung in das andere Formular zu bewirken.
Wenn es sich um Daten aus unterschiedlichen Tabellen handelt, dann gibt es mehrere Techniken.
Möglich wäre z.B. eine Anfügeabfrage zu machen, die den Datensatz in die andere Tabelle kopiert und eine Löschabfrage, die den Orgiginaldatensatz löscht.
Flexibler ist es, so ein Problem mit VBA-Programmierung zu lösen - also im Coding zwei tabellen zu definieren, usw.
Gruß
Teddy
Jedes dieser Formulare hat ja eine Datenquelle - eine Tabelle oder eine Abfrage.
Wenn die Daten beider Formulare in der gleichen Tabelle stehen und nur durch ein oder mehrere Kriterien in einer Abfrage unterschieden werden, dann mußt Du nur diese(s) Kriterium ändern um die Verschiebung in das andere Formular zu bewirken.
Wenn es sich um Daten aus unterschiedlichen Tabellen handelt, dann gibt es mehrere Techniken.
Möglich wäre z.B. eine Anfügeabfrage zu machen, die den Datensatz in die andere Tabelle kopiert und eine Löschabfrage, die den Orgiginaldatensatz löscht.
Flexibler ist es, so ein Problem mit VBA-Programmierung zu lösen - also im Coding zwei tabellen zu definieren, usw.
Gruß
Teddy
Antwort 2 von D.Kitzrow
Danke Teddy7!
Das was ich mache soll am Ende ein "laufbares" Programm werden. Wie soll ich denn eine Anfügeabfrage als Befehl in einen Button bekommen? Es soll nur Über Buttons laufen. Und VBA hatte ich zwar in der Schule, aber ich kann mich nicht mehr daran erinnern wie ich ihm es sagen muss das er das textfeld aus DEM formular in das andere schieben soll. z.b. if bedingung then abc.txt "[formular A]" = abc2.txt "[formular B]"?????
Das was ich mache soll am Ende ein "laufbares" Programm werden. Wie soll ich denn eine Anfügeabfrage als Befehl in einen Button bekommen? Es soll nur Über Buttons laufen. Und VBA hatte ich zwar in der Schule, aber ich kann mich nicht mehr daran erinnern wie ich ihm es sagen muss das er das textfeld aus DEM formular in das andere schieben soll. z.b. if bedingung then abc.txt "[formular A]" = abc2.txt "[formular B]"?????
Antwort 3 von Teddy7
Hi D.
Also zunächst als Hintergrundinfo:
Abfragen ausführen geht über DoCmd - näheres in der AccessHilfe.
mit VBA kann das so aussehen:
Dim ttab1 As DAO.Recordset
Dim ttab2 As DAO.Recordset
Dim ktab1 As String
' Recordset anlegen
Set ttab1 = CurrentDb.OpenRecordset("Select * from tblTabelle1", dbOpenDynaset)
Set ttab2 = CurrentDb.OpenRecordset("Select * from tblTabelle2", dbOpenDynaset)
'Selektionsbedingungen
ktab1 = "Feldname = " & txtBedingung
ttab1.FindFirst ktab1
Do Until ttab1.NoMatch = True
ttab2.findfirst ktab1
if ttab2!Schlüsselfeld = ttab1!Schlüsselfeld then
ttab2.edit
else
ttab2.addnew
endif
ttab2!Feld1 = ttab2!Feld417
ttab2!Feld2 = ttab2!Feld987
..usw...
ttab2.update
ttab1.findnext ktab1
loop
ttab1.close
set ttab1 = nothing
ttab2.close
set ttab2 = nothing
das ganzen in das klick-ereignis eines Buttons einbauen (Feldnamen natürlich anpassen)
UND einen Verweis auf Microsoft DAO setzen (im Code-Fenster Extras-Verweise anklicken)
Wenn Du hiermit nicht klar kommst kannst Du mir Deine Datenbank in A97 oder A2000 auch mal zumailen und ich bau Dir ein Beispiel ein (Beschreibung dessen, was der Button machen soll nicht vergessen !).
Das kann aber etwas dauern (evtl. Wochenende).
Gruß
Teddy
Also zunächst als Hintergrundinfo:
Abfragen ausführen geht über DoCmd - näheres in der AccessHilfe.
mit VBA kann das so aussehen:
Dim ttab1 As DAO.Recordset
Dim ttab2 As DAO.Recordset
Dim ktab1 As String
' Recordset anlegen
Set ttab1 = CurrentDb.OpenRecordset("Select * from tblTabelle1", dbOpenDynaset)
Set ttab2 = CurrentDb.OpenRecordset("Select * from tblTabelle2", dbOpenDynaset)
'Selektionsbedingungen
ktab1 = "Feldname = " & txtBedingung
ttab1.FindFirst ktab1
Do Until ttab1.NoMatch = True
ttab2.findfirst ktab1
if ttab2!Schlüsselfeld = ttab1!Schlüsselfeld then
ttab2.edit
else
ttab2.addnew
endif
ttab2!Feld1 = ttab2!Feld417
ttab2!Feld2 = ttab2!Feld987
..usw...
ttab2.update
ttab1.findnext ktab1
loop
ttab1.close
set ttab1 = nothing
ttab2.close
set ttab2 = nothing
das ganzen in das klick-ereignis eines Buttons einbauen (Feldnamen natürlich anpassen)
UND einen Verweis auf Microsoft DAO setzen (im Code-Fenster Extras-Verweise anklicken)
Wenn Du hiermit nicht klar kommst kannst Du mir Deine Datenbank in A97 oder A2000 auch mal zumailen und ich bau Dir ein Beispiel ein (Beschreibung dessen, was der Button machen soll nicht vergessen !).
Das kann aber etwas dauern (evtl. Wochenende).
Gruß
Teddy

