Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Datenblattansicht - Festlegung der Spaltenbreiten

2,405 views
Skip to first unread message

Ortwin Taube

unread,
Sep 22, 2011, 5:59:12 AM9/22/11
to
kann man eigentlich die Spaltenbreite in der Datenblattansicht eines
Formulars dauerhaft speichern?

Gruß
Ortwin

Peter Doering

unread,
Sep 22, 2011, 10:05:56 AM9/22/11
to
Hallo,

Ortwin Taube wrote:

> kann man eigentlich die Spaltenbreite in der Datenblattansicht eines
> Formulars dauerhaft speichern?

Dauerhaft nicht. Der Benutzer kann die Spaltenbreite aendern. Du kannst
aber ein Endlosformular anlegen, das wie die Datenblattansicht aussieht.

Gruss - Peter

--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Raimo Becker

unread,
Sep 22, 2011, 5:29:51 PM9/22/11
to
Hallo Ortwin,hallo Peter,

mit Recordset-Gefrickel geht das schon.

Nehme mal folgendes Listing
---------
Sub getSubFormColumns(strFrmUpper As String, strFrmSub As
String) 'Ober und Unterformular angeben
Dim i As Integer
Dim frm As Form
Set frm = Forms(strFrmUpper).Form(strFrmSub).Form
With frm
For i = 0 To frm.Controls.Count - 1
'Gib mir die Spaltenbreite in TWIPS
If frm.Controls(i).ControlType = 109 Then ' 109 ist
acText also das Feld in der Datenblattansicht

'Diese Werte könntest du in eine Tabelle reinschreiben

Debug.Print "Spaltenname: " & frm.Controls(i).Name & "
-- Breite in TWIPS: " & frm.Controls(i).ColumnWidth

'Hier kannst du die Breite einstellen oder aus der
Tabelle wieder auslesen:
frm.Controls(i).ColumnWidth = 2500 'oder aus
recorset auslesen
' Z.B. "SELECT FROM tblSpalten WHERE
User='Anmeldemame' AND MainForm ='" & strFrmUpper &"' AND Unterform
='" & strFrmSub & "'"
frm.Controls(i).ColumnWidth = -2 '-2 ist
AutoFit
End If
Next i
End With
End Sub
--------------
und dann BSP:
getSubFormColumns "DeineOberForm", "DeineSubForm"
--------------

Jetzt brauchst du "nur" eine Tabelle mit zb
"Username","Hauptformular","Unterformular","Spaltenbreite"[,"SpalteSichtbarJ/
N"],
meine User können dann die bevorzugte Einstellung laden (Beim
FormOpen) oder übereinen Klick auf einen ganz kleinen Button
speichern. Das ganze Listing habe ich nicht hier, dat liegt beim
Kunden, da komme ich aber erst in 2 Wochen wieder hin.

Ich denke aber, du weißt wohin der Weg geht.

Besten Gruß
Raimo

Ortwin Taube

unread,
Sep 23, 2011, 6:28:16 AM9/23/11
to


Hallo Raimo,

Danke für den Tipp.
Da ich die Spaltenbreite lediglich in der Entwicklungsphase festlegen
will
und nicht Änderungswünsche der Nutzer habe ich folgende Lösung gewählt
(in Anlehnung an Deine Lösung):

Function SpaltenbreiteSetzen()

Dim i As Integer

On Error Resume Next

For i = 0 To Me.Controls.Count - 1
Me.Controls(i).ColumnWidth = Me.Controls(i).Width
Next i

End Function

Die Spaltenbreite kann ich dann elegant in der Entwurfsansicht
festlegen.


Gruß
Ortwin

Tibbi1990

unread,
Jan 20, 2021, 4:18:46 AM1/20/21
to
Guten Tag zusammen,
der Thread ist zwar doch schon etwas älter, jedoch versuch ich dennoch mein Glück. Ich bräuchte für unsere Datenbank des Landwirtschaftsvereines genau die Funkionalität, wie sie Herr Raimo Becker beschreibt.
Besteht die Möglichkeit dieses Programmschnipsel zu sehen?

Angelegte Benutzer können sich an der Datenbank anmelden und sollen sich die Position sowie Breite von Spalten im Hauptformular (inkl. Ufrm) selbst einstellen können.

Ich scheitere an der Umsetzung.
Welche Tabellen sind mit welchen Daten anzulegen und wie sieht das VBA Programm hierzu aus?

Vielen Dank.

Ulrich Möller

unread,
Jan 21, 2021, 8:40:35 AM1/21/21
to
Am 20.01.2021 um 10:18 schrieb Tibbi1990:
> Besteht die Möglichkeit dieses Programmschnipsel zu sehen?

Ja. Hier ist der ganze Thread:
https://groups.google.com/g/microsoft.public.de.access/c/p7TFJM14RKk
<https://groups.google.com/g/microsoft.public.de.access/c/p7TFJM14RKk>

Ulrich

Tibbi1990

unread,
Jan 23, 2021, 7:14:04 AM1/23/21
to
Hallo Hr. Möller,
vielen Dank für die Antwort, jedoch habe ich genau aus dem Thread heraus meine Frage formuliert. ich benötige den Code drumherum.
- Wie speichern die User ihre definierten Spaltenpositionen/breiten
- Wie sieht der Code beim Laden der Formulare aus
- Gibt es ein "Verwaltungsformular", oder wird direkt aus dem sortierten Formular heraus agiert

Vielen Dank.

Andreas

Ulrich Möller

unread,
Jan 23, 2021, 6:03:24 PM1/23/21
to
Hallo Andreas,

Am 23.01.2021 um 13:14 schrieb Tibbi1990:
> Ulrich Möller schrieb am Donnerstag, 21. Januar 2021 um 14:40:35 UTC+1:
>> Am 20.01.2021 um 10:18 schrieb Tibbi1990:
>>> Besteht die Möglichkeit dieses Programmschnipsel zu sehen?
>> Ja. Hier ist der ganze Thread:
>> https://groups.google.com/g/microsoft.public.de.access/c/p7TFJM14RKk
> vielen Dank für die Antwort, jedoch habe ich genau aus dem Thread heraus meine Frage formuliert.
im Usenet sind solche alten Thread-Beiträge nicht unbedingt sichtbar.
Deshalb kann es durchaus sinnvoll sein, wichtige Passagen zu zitieren.

> ich benötige den Code drumherum.
> - Wie speichern die User ihre definierten Spaltenpositionen/breiten
Das Speichern sollte nicht den Usern überlassen bleiben, sondern
vielleicht automatisch im Form_Close Event erfolgen. Wie Raimo das
bereits beschrieben hat, kann so etwas userbezogen in einer lokalen
Tabelle erfolgen.
> - Wie sieht der Code beim Laden der Formulare aus
Im Form_Open oder Form_Load Event, eventuell auch im Form_Resize Event
kann diese Tabelle wieder ausgelesen und die Spaltenbreiten wieder
zugewiesen werden.
> - Gibt es ein "Verwaltungsformular", oder wird direkt aus dem sortierten Formular heraus agiert
>
Ein fertiges Tool gibt es dafür nicht und ist auch nicht Bestandteil von
Access. So etwas muss bei Bedarf selbst erstellt werden. Wird das
häufiger verwendet, würde sich eine klassengestütze Lösung anbieten, die
dann in jedem Formular verwendet werden könnte.

Ulrich
0 new messages