3.5k Aufrufe
Gefragt in Datenbanken von
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

5 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Alex,

probiere mal me!liste.value bzw. me!liste.text. Ist das ein gebundenes Feld?

Gruß
Ralf
...