PDA

Vollständige Version anzeigen : Ac97: Recordset an Formular übergeben


Haubi
02.08.2001, 12:00
Hallo,

In Access2000 gibt es die Eigenschaft Recordset für Formulare, mit der man in einer Prozedur einen recordset an das Formular übergeben kann.

z.B. Set Forms!Formular.Recordset = rs

Gibt es irgendetwas in dieser Art auch für Access 97. Mein Problem ist, das ich Werte ermitteln muss, was sich nicht über eine Abfrage realisieren lässt. Diese Werte lasse ich im Zuge einer Transaktion in eine Tabelle schreiben und möchte Sie dann im Formular anzeigen lassen.
Transaktion deswegen, da die Werte immmer wieder neu erstellt werden müssen und nach dem anzeigen nicht mehr benötigt werden.

Vielen Dank schon mal im voraus

Haubi

A.S.
02.08.2001, 17:24
Hallo Haubi,

hast Du diese Technik in Access97 bereits ausprobiert?

Gruß

Arno

Haubi
03.08.2001, 07:33
Hallo Arno,

Jawoll, hab ich schon gemacht. Auch in der Hilfe ist keine Beschreibung dieser Eigenschaft, und in VB wird Sie auch nicht angezeigt. Access meldet Objektdefinierter Fehler.
Laut Hilfe gibt es nur Recordsource, Recordsetclone, Recordsettyp, Recordlocks und Recordselectors.
Recordset als Eigenschaft scheint mir deswegen erst ab Access2000 verfügbar zu sein.

Haubi

Simon
03.08.2001, 07:42
Hallo,

unter Hilfethemen in Access97 findest Du sicher etwas über Recordset!!!

Ich habe ca. 20 Begriffe für Recordset....
gefunden!!


Gruss Simon

Haubi
03.08.2001, 08:24
Hallo Simon,

Es geht nicht um Recordsets ansich. Es geht darum, das ich ein Formular geöffnet habe und in einer Prozedur einen Recordset erstelle. Soweit so gut, die Daten sind im Recordset. Jetzt möchte ich den Recordset an das geöffnete Formular übergeben. Dafür gibt es in Access2000 die "Recordset-Eigenschaft" die wie oben Beschrieben funktioniert. nach dem "Set" wird das Formular neu aufgebaut und die Daten angezeigt.
In Access97 habe ich diese Eigenschaft nicht. Das einzige was ich mir noch vorstellen kann, falls jemand die Eigenschaft hat, ist, das sie mit einem Patch nachgekommen ist. Ich habe hier ein Office Professional 97 mit SR1 und SR2.

Haubi

A.S.
03.08.2001, 09:46
Hallo Haubi,

wie erstellst Du denn in Deiner Prozedur den Recordset? Als SQL-String oder als QueryDef??

IMHO kannst Du beides - den SQL-String und den Namen der QueryDef - der Eigenschaft Recordsource des Formulares zuweisen. Mit einem nachgesetzten Requery funktioniert es.

Gruß

Arno

Haubi
03.08.2001, 11:55
Hallo Arno,

Ich hab das noch mit dem Querydef probiert, funktioniert aber auch nicht. Ich hab aber noch was vergessen zu sagen im Bezug auf die Daten.
Die Daten sind Durchsnittswerte, die aber mit einer normalen Abfrage nicht zu bekommen sind, das heisst ich muss verschachteln.
Dazu habe ich eine Tabelle "temp" angelegt, in die ich die berechneten Daten über einen Recordset reinschreibe. Da ich die Daten aber nur für diesen einen Moment benötige wird "temp" sofort danach wieder gelöscht.
Weil ich, um die Daten wirklich loszuwerden (auch Dateigröße) die Datenbank komprimieren müsste hab ich mich entschieden die berechneten Werte im Zuge einer Transaktion in "temp" zu schreiben und mit dem Schliessen des Formulars einen Rollback durchzuführen.
Und genau da liegt meines Erachtens das Problem. Wenn ich die Recordsource auf "temp" stelle zeigt mir Access keine Daten an - ich nehme an, weil sie noch nicht auf Platte geschrieben sind.
Um die Daten überhaupt in die Tabelle zu schreiben, habe ich einen Recordset erstellt, der die Daten auch während der Transaktion enthält (wie gesagt in AC2000 funzts).
Das mit dem Querydef hat dann wahrscheinlich auch wegen der Transaktion nicht funktioniert, da das Ergebnis noch nicht auf Platte geschrieben ist. Access sagt er kan meine Query nicht finden.

Gruß

Haubi