Gibt es die Möglichkeit, den Detailbereich klein, aber dynamisch zu
halten, also etwa so:
Der Detialbereich soll eigentlich nur xx,x klein sein, soll aber bis zu
20 Sätze aufnehmen, danach soll Scrollbalken kommen.
Werner
--
-----------------------------------------------------------
kairos: Werner Partner * Tel +49 2366 886606 * Fax: 886608
kai...@t-online.de * http://www.sonopt.de/partner
versuchs doch mal so:
bei allen Ereignissen, die die Anzahl der Datensätze
ändern (z. B. Nach Eingabe, Beim Löschen bzw. Nach
Löschbestätigung, beim Öffnen): folgenden Quelltext:
DoCmd.MoveSize , , , Me!Section(acPageHeader).Height + Me!
Section(acPageFooter).Height + (Section(acDetail).height *
DCount("*",Me!RecordSource)) + [irgendeineZahl]
Den Wert [irgendeineZahl] musst Du expermientell ermittel,
er ergibt sich z. B. aus der Höhe der Titelzeil des
Fensters, der Rahmendicke, ob das Fenster ein Menü hat usw.
Gruß
Thomas
"Werner Partner" <kai...@t-online.de> schrieb im Newsbeitrag
news:3D44EFFA...@t-online.de...
> [access 97]
> Bei mir hat der Detailbereich bei einem Endlosformular immer eine
> bestimmte Größe, so wird er recht groß gezeigt, obwohl vielleicht nur
> 2-3 Sätze vorhanden sind.
> Manchmal sind aber mehr Sätze vorhanden als in diesen Bereich rein gehen
> und der Detailbereich wird nicht vergrößert, obwohl auf dem Bildshcirm
> noch viel Platz wäre.
>
> Gibt es die Möglichkeit, den Detailbereich klein, aber dynamisch zu
> halten, also etwa so:
>
> Der Detialbereich soll eigentlich nur xx,x klein sein, soll aber bis zu
> 20 Sätze aufnehmen, danach soll Scrollbalken kommen.
>
Mache in Deinen Detailbereich für die Höhe eines Datensatzes ein
Rechteck rein. Dieses "formatierst" Du unsichtbar.
Jetzt weißt Du (und das Programm ) wie "hoch" ein Datensatz ist.
Zähle jetzt die Anzahl Deiner Datensätze.
Schaue dazu bitte selber in der OH bei Dcount nach. (Ich weiß jetzt
auch nicht auswendig die Parameter)
Dann in VBA (nur grob hingefaselt):
dim anzahl_datensätze
anzahl_datensätze = dcount(.....)
if anzahl_datensätze < 20 then
me.detailbereich.height = anzahl_datensätze * rechteck.height
else
me.detailbereich.height = 20 * rechteck.height
endif
me.repaint
Grüße
Richard Ernstberger
Vielen Dank für den Tip, aber gibt's jetzt weitere Probleme.
ich bekomme einen Fehler bei Me.Section(acPageHeader), das ist angeblich
unbekannt, obwohl ich einen Header habe. Außerdem gibt es einen Fehler
beim DCount: Er findet Me.Recordsource nicht, obwohl diese (eine
SQL-Abfrage) ganz korrekt ist.
Grüße
Werner
--
-----------------------------------------------------------
Tschuldigung, hatte einen Fehler gemacht: Statt der
Ausrufezeichen müssen Punkte stehen.
Weiterhin gilt acPageHeader und acPageFooter für
Seitenköpfe und -füße. Im Formular hat man jedoch meistens
einen Formularkopf, -fuß. Dann gilt acHeader und acFooter.
Die korrekte Zeile müsste also lauten:
DoCmd.MoveSize , , , Me.Section(acHeader).Height + Me.
Section(acFooter).Height + (Me.Section(acDetail).height *
DCount("*",Me.RecordSource)) + [irgendeineZahl]
Gruß
Thomas
Habe ich schon gemerkt, ich bin am testen :-)
Werner
--
-----------------------------------------------------------
vielleicht verwechselst Du Formularkopf und Seitenkopf - letzterer wird
normalerweise nicht benötigt.
Das DCount kannst du auch ersetzen durch Me.RecordsetClone.recordCount.
Gruss Birgit
Werner Partner schrieb:
> Thomas Pomper schrieb:
Danke, das wars, was ich gsucht habe