PDA

Vollständige Version anzeigen : Spaltenbreiten in Datenblatt / MDE


Sascha Trowitzsch
02.01.2002, 10:56
Hallo zusammen,

da treffe ich doch tatsächlich erst nach Jahren auf folgenden Sachverhalt:

Öffnet man in einer MDB ein Form (Datenblatt) und ändert die Spaltenbreiten, so wird dies nach dem Schließen gespeichert und beim nächsten Öffnen hat man die zuletzt eingeetellten Breiten.

In einer MDE geht das nicht. Hier bleibt es bei den im Layout vorgegebenen Breiten.
Eigentlich logisch, kann doch eine Veränderung im Formular bzw. der Property ColumnWidth nicht gespeichert werden. ... Nur ist mir das bislang noch nicht aufgefallen.

Frage also:
Lässt sich das Verhalten der MDB auch in der MDE irgendwie realisieren? Habe gerade einen Blackout.

(Ich möchte ungern per Code alle Spaltenbreiten aller Unterformulare in irgendeiner Tabelle speichern und beim Laden wieder neu einstellen.)

Thanx im voraus, Sascha

Goki
02.01.2002, 13:27
Hallo Sascha,

soweit ich weiß geht das nicht. MDE-DBs haben ja alle VBA Funktionen gesperrt ... Ergo kannst auch alle anderen Einstellungen, welche in der DB abgelegt werden nicht ändern.

Höchstens eines ... Solange du noch die MDB-Version hast, stellst die Spaltenbreiten ein, speicherst alles und erstellst dann daraus eine MDE-Version.

slg
Goki <img src="graemlins/kasperl.gif" border="0" alt="[Kaslperl]" />

Sascha Trowitzsch
02.01.2002, 13:45
Naja, zur Laufzeit kann man die Eigenschaften schon ändern.

Du kannst im Datenblatt die Spaltenbreite ändern mit:

Me.Controls("Spaltenname").ColumnWidth=XY

Der Workaround, denn ich aber gerade vermeiden will, bestünde darin, beim Schließen des Formulars die ColumnWidths aller Spalten auszulesen und in eine Tabelle "Spaltenbreiten" zu speichern.
Beim Öffnen des Formulars müssten dann wieder die Werte aus dieser Tabelle gelesen werden und mit angegebenem Code die Spalten eingestellt werden.

Man Extramodul für diesen Zweck schreiben, bloß... das ist schon wieder alles so unelegant!

Geht's tatsächlich nicht anders??

Ciao, Sascha

<WAG>
02.01.2002, 14:35
Hi Sascha,
das wird Dir vielleicht auch nicht gefallen, aber es hilft.
ACC97: Column Changes Not Saved in Datasheet with Tab Control
Last reviewed: May 21, 1997
Article ID: Q166363
The information in this article applies to:
Microsoft Access 97


SYMPTOMS
Novice: Requires knowledge of the user interface on single-user computers.

When you make changes to the column width of a control in Datasheet view of a form that has a Tab control, the changes are not saved when you close the form.

CAUSE
When you place the controls that make up a datasheet on a Tab control instead of on the form itself, you will not be able to save changes made to the structure of the datasheet.

RESOLUTION
Place all controls for which you are going to modify the column width on the form instead of on the Tab control.

MORE INFORMATION


Steps to Reproduce Behavior

Open the sample database Northwind.mdb and create a new form based on the Categories table.

Place a Tab control on the form and drag a few fields from the field list to the Tab control.

Set the ViewsAllowed and DefaultView properties of the form to Datasheet. Switch the form to Datasheet view.

In Datasheet view, change the column width of a few columns, and then close and save the form.

Reopen the form. Note that the column widths of the fields that you modified have changed back to their original sizes.

REFERENCES
For more information about using the Tab control, search the Help Index for "tab controls, overview," or ask the Microsoft Access 97 Office Assistant.

Dieter

Sascha Trowitzsch
02.01.2002, 16:02
Yo, WAG, das gefällt mir deshalb nicht, weil ich sowieso kein Tab Control im Formular hab.

Aber die Anregung, wieder mal die MSKB zu durchstöbern, ist gut.

Ciao, Sascha

erwin
02.01.2002, 22:24
Hi Sascha !

Das was du da als unelegant empfindest habe ich aber (so ähnlich) als Standardfunktion (per Symb.Leiste aufrufbar) für alle Formulare in DS-View einmalig realisiert + es kommt bei den Benutzern sehr gut an (nachdem die's "geschnallt" haben ;) sich Ansichten damit individuell zurechtzubasteln):

in 2 Tab. (USR_formDef 1:N USR_FormFlds) kann jeder Benutzer seine individuellen DS-View-Einstellungen (Form: Sort/Filter, Column: Hidden, Pos.,....) abspeichern oder auch wieder löschen und somit die "Default"-Ansicht wiederherstellen. Bei jedem Öffnen eines DS-Formulars werden, soferne solche Einstellungen existieren, selbige angewandt. Zur "Sichrbarmachung" wird dem Formular-Titel ein "UserID: " vorangestellt.

so long erwin...

[ 02. Januar 2002: Beitrag editiert von: erwin ]</p>

Sascha Trowitzsch
02.01.2002, 23:23
Hi erwin,

ein gutes neues! Vergnügst du dich gut in A ?

Ja, nachdem ich jetzt MSKB und comp.databases durchwühlt hab, komm ich auch zum Schluss, dass es nicht anders geht. Aber blöd find ich's trotzdem. Da hat sich MS mal wieder nicht viel bei gedacht.
Im Prinzip hab ich das in einer anderen DB auch schon drin, dass eine individuelle Speicherung von Spaltenbreiten für ein Auswertungsunterformular implementiert ist.
Na gut, ist ja auch kein großer Akt.

Gruß, Sascha

PS: Kriegst einen * dafür :D

erwin
03.01.2002, 23:34
Hi + gutes Neues retour :)

+ THX für den * ('s wird doch hoffentlich nicht nur 1er gewesen sein ;) )

Apropos * wo sind denn die *****e hin verschwunden ? Hat Günther das Feature wieder entfernt ?

so long erwin...

Sascha Trowitzsch
04.01.2002, 00:01
Ich glaube, er bastelt gerade an einer Änderung der *****-Funktion, damit man die einmal vergebenen ***** wieder ändern kann ;)