[MS Access, VBA] Design changes onthouden

Pagina: 1
Acties:

  • BovenHond
  • Registratie: Februari 2002
  • Laatst online: 05-09 00:19
Ik heb in access een form. In dit form staat maar één label en een knop.

Na het laden staat er in het label [Oude label naam]
na het drukken op de knop
code:
1
2
3
Private Sub Knop_wijzig_label_Click()
Me.Bijschrift1.Caption = "Nieuwe caption"
End Sub


Nu staat in het label [Nieuwe caption]

Nu het probleem
Na het afsluiten en opstarten van het form. Staat er weer [Oude label naam] in het caption. Ook al druk ik op save. Het blijft gewoon staan. Ik zoek een VBA code die uitlegt dat de design changes in een form ook moeten worden opgeslagen. Ook al is het form niet in design mode geweest.

edit:


Nu heb ik dit probleem opgelost door in het form startup sub ook deze code neer te zetten maar dit maakt het laden van het form onnodig langzaam

[ Voor 26% gewijzigd door BovenHond op 30-10-2003 14:26 ]


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Ik zou er dan toch voor kiezen om de Captions dynamisch te vullen. Maak een tabel met de labelnamen en de tekst. Als een gebruiker een formulier sluit, kun je de labels uitlezen en opslaan in de tabel.
Is dit wat jij uitlegt in je edit, trouwens?
En heb je al geprobeerd om bij het afsluiten in designmode te gaan, op te slaan en het formulier te sluiten? Ik weet niet of dit werkt, maar dit zou ik zeker proberen.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • BovenHond
  • Registratie: Februari 2002
  • Laatst online: 05-09 00:19
KingRichard schreef op 30 oktober 2003 @ 14:56:
Ik zou er dan toch voor kiezen om de Captions dynamisch te vullen. Maak een tabel met de labelnamen en de tekst. Als een gebruiker een formulier sluit, kun je de labels uitlezen en opslaan in de tabel.
Is dit wat jij uitlegt in je edit, trouwens?
En heb je al geprobeerd om bij het afsluiten in designmode te gaan, op te slaan en het formulier te sluiten? Ik weet niet of dit werkt, maar dit zou ik zeker proberen.
Ik vrees dat ik het dynamisch vullen van captions nog niet helemaal beheers. Even wat achtergrond informatie
Ik heb een tabel met daarin de variabele captionnamen en een vaste ID. Daarnaa roep ik in VB een SQL query aan in een recordset (where vaste captionnaam = ...)

Daarmee vul ik de captions.

En in het duits :)
code:
1
2
3
4
5
6
Private Sub Knop_wijzig_label_Click()
 Dim rst As Recordset
 Set rst = CurrentDb.OpenRecordset("SELECT * FROM Tbl_Label_namen WHERE ID = 2;")
Me.Bijschrift1.Caption = rst!Naam

End Sub


antwoord op laatste vraag: Ja dit heb ik al geprobeerd maar dit lost het probleem niet op


[edit]
@ KingRichard het ziet er indrukwekkend uit. Ik ga het even proberen. Alvast bedankt voor de moeite..

[ Voor 21% gewijzigd door BovenHond op 30-10-2003 16:00 ]


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Je bent op weg. Een voorbeeldje:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit

Private Sub Form_Load()

' http://gathering.tweakers.net/forum/insert_message/829165//

' Vult de captions van labels met tekst uit een tabel.
' Veronderstelt dat:
'       Tabel met labelnamen en captions heet "tblCaptions"
'       Kolom met labelnamen heet "lblNaam"
'       Kolom met captions heet "Captions"
'       De namen van alle labels op het formulier beginnen met
'           "lbl", bijvoorbeeld lblNaam

Dim rstCaptions As Recordset
Dim objCtrl As Object

Set rstCaptions = CurrentDb.OpenRecordset("tblCaptions", dbOpenTable)
rstCaptions.Index = "lblNaam"

For Each objCtrl In Me.ControlBox
    
    If Left(objCtrl.Name, 3) = "lbl" Then
    
        rstCaptions.Seek "=", objCtrl.Name
        objCtrl.Caption = rstCaptions.Fields("Caption").Value
        
    End If
    
Next objCtrl

Set rstCaptions = Nothing

End Sub

Ik heb dit niet getest overigens. Ik hoop dat je wat inspiratie opdoet. Lees in de Access-Help alles over Recordsets en bekijk de voorbeelden.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • Boss
  • Registratie: September 1999
  • Laatst online: 04-09 10:35

Boss

+1 Overgewaardeerd

KingRichard: zou je niet liever andersom werken? Dus de hele tabel aflopen en dan aan de hand daarvan de labelnamen aanpassen? Vooral het iedere keer uitvoeren van rstCations.seek zal de snelheid niet ten goede komen (zeker over een netwerkverbinding).

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Boss: je hebt helemaal gelijk, maar het was ook alleen maar mijn bedoeling om een voorbeeldje te geven. 'Jouw' methode vereist een strakke, doordachte formulieropbouw en is natuurlijk sneller en robuuster. Maar ik heb het idee dat Matsu_Matsu dat vanzelf in gaat zien.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • BovenHond
  • Registratie: Februari 2002
  • Laatst online: 05-09 00:19
* BovenHond is druk lerende en zal het waarschijnlijk wel inzien inderdaad..

heren bedankt..
Pagina: 1