Hallo!
Eine unbekannte Anzahl Datensaetze soll in einem Popup-Fenster angezeigt werden.
Die Daten kommen per Stored Procedure vom Sql Server und werden mit 'Me.Set .Recordset =...' zugewiesen.
Die Daten sollen nicht bearbeitet werden.
Die Formulare werden grundsaetzlich als Tab angezeigt (Projekteinstellung).
Das neue Formular soll als Endlosformular als Popup angezeigt werden.
Es sollen alle Datensaetze angezeigt werden.
Das Formular hat aber nur die Hoehe 1 Datensatzes.
Ein Versuch mit einem Report ist gescheitert, weil ein Feature nur in ADP verfuegbar ist.
Ich vermute, es betrifft die Zuweisung der Daten.
Wie kann die Aufgabe geloest werden?
Gruss Stele
Hallo,
ja, das Feature, ein ADO-Recordset einem Formular zuzuweisen, kommt durchaus noch von ADP, aber grundsätzlich kann in einem Formular jedes DAO- oder ADO-Recordset dem Formular-Recordset zugewiesen werden.
Allerdings nicht so:
Me.Set .Recordset
sondern so:
Set Me.Recordset = DeinADORecordset
Beachte dabei, daß ein Recordset, das über eine SP befüllt wurde, u.U. nicht mit F5 aktualisierbar ist (i.d.R., wenn Parameter im Spiel sind). In dem Fall mußt Du die F5-Taste per VBA abfangen und das Recordset neu holen/zuweisen.
Gruß
Christian
Zitat von: Stele4 am Heute um 10:56:17Wie kann die Aufgabe geloest werden?
Bitte beschreibe nochmal genau, was eigentlich dein Problem ist.
Das Recordset eines Reports kann in einer ACCDB-Datei nicht gesetzt werden. Wenn du die Daten in einem Bericht darstellen willst, musst du auf eine Pass-Through-Abfrage zurückgreifen.
Was dein Problem mit dem Formular ist, verstehe ich bisher nicht.
Die Set-Anweisung ist bei mir schon korrekt. Ich habe es nur falsch uebermittelt. Verzeihung bitte.
Ein Endlosformular wird als Popup geoeffnet (WindowMode:=acDialog). Es ist nur 1 von 16 Datensaetzen sichtbar. Zu den anderen Datensaetzen muss gescrollt werden. Das ist nicht schoen.
Gruss Stele
Hallo,
ja, aber wenn das Formular nur einen Datensatz hoch ist - was erwartest Du dann?.. :)
Mach's größer und gut is'.
Access merkt sich die Größe, wenn Du bei geöffnetem Popup-Formular "Save" durchführst.
Besser ist aber "DoCmd.MoveSize" für genaue Größe. Die ist allerdings in Twips. Kannst Du aber aus WindowWidth und WindowHeight auslesen (wenn ich die Namen richtig in Erinnerung habe), wenn das Formular geöffnet und auf die richtige Größe eingestellt ist.
Oder einfach ausprobieren.
MoveSize sollte dann keine X/Y-Parameter mitbekommen (Top/Left). Denn das gibt Probleme bei modernen Multi-Bildschirm-Layouts. Der Standardbildschirm ist der mit Koordinaten 0/0, ein Bildschirm links davon hat negative Koordinaten, rechts davon positive. Ganzz zu schweigen von darüber oder darunter, unterschiedliche Bildschirmgrößen und Auflösungen... usw.
Besser nicht die Position vorgeben.
Gruß
Christian