Daten aus Formular in Tabelle speichern
hallo,
ich habe ein formular das auf ca. 50 abfrageb beruht. die wiederum entstehen aus 6 tabellen. nun habe ich die 50 abfragen schön in einem formular dargestellt. aufgrund der grösse der DB und der komplexität dauert es ca. 2 std. bis das formular erscheint. nun möchte ich gerne dass die werte die im formular stehen für eine schnellere darstellung in einer tabelle (Report_Table)speichern, mit dem ziel, dass ich nur noch einmal im Monat die 2.std. warten muss.
ich hab mir das so überlegt: [ereignis vor aktualisierung]
sub...
dim db as database
set db=currentdb
if not isnull(me!Textfeld) then db.execute ("INSERT INTO Report_Table (meinWert) VALUES ('" & me!Textfeld & "');")
end sub
meine frage, wie baue ich das auf, dass ich einen button habe, der mir für jedes textfeld (ca. 30) den wert in die Tabelle (Report_Table) schreibt. so dass ich dann pro monat eine report_id habe mit allen werten.
wäre super wenn mir jemand helfen könnte.!!
besten dank
Antwort schreiben
Antwort 1 von RaHi vom 29.06.2021, 20:08 Options
Hallo vidija,
ich habe schon mit sehr großen Datenbeständen (> 0.5 Mio.) in Access gearbeitet, aber 2h auf ein "Formular" zu warten, ist mir noch nicht passiert. Da machst du was grundlegend falsch. Ich hoffe, deine 50 Abfragen stellst du nicht wirklich in einem Formular dar. Wenn doch, erkläre mal was du da für Abfragen hast. Welche Werte willst du in deine Reporttabelle schreiben? Benutzt du Indexwerte? Falls du ausführlich beschreibst, was du genau willst, kann die Antwort auch genauer ausfallen ;-)
Gruß
Ralf
Antwort 2 von vidija vom 30.06.2021, 16:29 Options
HALLO RALF,
naja 2 std. war ein bisschen übertrieben...aber sind so um die 1. Mio Datensätze...dauert schon ein weillchen....die daten kommen aus sap und wir müssen sei weiter bearbeiten :-(((
ich möchte gerne wenn sich ein formular [Formular1] schliesse, dass access die daten in eine temporäre tabelle [tbl_temp] schreibt. in dem formular stehen z.b.2 listenfelder.
Private Sub Form_Close()
Set db = CurrentDb
db.Execute "INSERT INTO tbl_temp (ofAccounts0001, ofAccounts0005) " & _
"VALUES ('" & Me!Liste70 & "', '" & Me!Liste71 & "');"
End Sub
Funktioniert auch soweit..nur leider schreibt er die Werte nicht in die Tabelle wenn ich das Formular schliesse. Wenn ich aber beide Listenfelder anklicke und dann das Formular schliesse funktioniert es super.
Hast du eine Idee?? wie ich das mit dem anklicken vermeiden könnte? bzw. wie er es automatisch machen kann?
vielen vielen dank
gruss
vidija
Antwort 3 von RaHi vom 30.06.2021, 18:02 Options
Hallo vidija ,
setze mal einen Breakpoint (mit F8, wenn der Cursor auf db.execute steht) , führe das Formular aus und schau dir die Werte der zwei Listen an (mit Cursor über die Variablen fahren) wenn das VBA-Fenster auf geht oder schicke im Direktfenster "? Me!Liste70" (ohne Anführungszeichen) ab.
Was kommt dabei heraus?
Dein Problem habe ich allerdings immer noch nicht verstanden. Diese zwei Listenfelder sind mit ein paar Werten gefüllt, die du auswählst. Die ausgewählten Werte willst du in diese tempöräre Tabelle speichern. Richtig?
Mit deinem SQL-Statement schreibst du genau einen Datensatz. Warum der ganze Aufstand ;-) um zwei Werte in eine Tabelle zu speichern?
Gruß
Ralf
Antwort 4 von vidija vom 30.06.2021, 18:53 Options
hy ralf,
als wenn ich deine anweisungen machen zeigt er mir im vb script an
"Me!Liste = 0" => schlecht oder? sollte nicht null sein
gruss
alex
Antwort 5 von RaHi vom 30.06.2021, 19:04 Options
Hallo Alex,
probiere mal me!liste.value bzw. me!liste.text. Ist das ein gebundenes Feld?
Gruß
Ralf