Bezeichnungsfeld mit Schleife

  • Access

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von fke.

    Bezeichnungsfeld mit Schleife

    Hallo Gemeinde,

    nach etlichen Versuche, Recherchen und Kopfzerbrechen hoffe ich, ihr könnt mir weiterhelfen... Ich habe vor sehr sehr langer Zeit mal gelernt zu programmieren - anscheinend zu lange her - ich komme einfach nicht weiter, hoffentlich könnt ihr mir helfen :)

    Ich habe folgendes "Problem":

    Ich möchte ein Formular in Access programmieren und komme an einer Stelle nicht weiter. Das Formular "PM" enthät 24 Bezecihnungsfelder mit den Namen bit1, bit2, bit3, bit4,...bit24

    In der mit dem Formular verknüpften Tabelle "P-Modus" gibt es eine Spalte mit dem Namen "bit_NR" in dem je nach Datensatz eine Zahl zwischen 1 und 24 steht...

    Jetzt zum eigentlichen Problem:

    Ich würde gerne abhängig von der in der Zelle stehenden Zahl (z.B. 12) das Bezeichnungsfeld bit12 farblich markieren. Mehr nicht...

    Einer meiner fehlgeschlagenen Versuche sieht so aus:

    Dim i As Integer
    Dim i_bit As Integer
    Dim name_feld As String

    Dim bit As Integer

    bit = Me("Bit_NR")

    For i = 1 To 24

    If bit = i Then
    name_feld = "bit" & "i"
    Me.name_feld.FontBold = True
    Else
    End If

    Next i

    Ich bekomme es einfach nicht hin - wäre supi wenn ihr mir helfen könntet... die Variante mit 24 If-Abfragen find ich doof - das ginge sicherlich auch...

    Grüße,
    fke



    ===============================
    Edit:

    so funktioniert es auch... allerdings würde ich es gerne "schöner" lösen als mit 24 if-Abfragen:

    bit = Me("Bit_NR")

    If bit = 1 Then
    Me.bit1.FontBold = True
    Me.bit1.ForeColor = vbRed
    Else
    Me.bit1.FontBold = False
    Me.bit1.ForeColor = 8355711
    End If


    If bit = 2 Then
    Me.bit2.FontBold = True
    Me.bit2.ForeColor = vbRed
    Else
    Me.bit2.FontBold = False
    Me.bit2.ForeColor = 8355711
    End If


    If bit = 3 Then
    Me.bit3.FontBold = True
    Me.bit3.ForeColor = vbRed
    Else
    Me.bit3.FontBold = False
    Me.bit3.ForeColor = 8355711
    End If

    ......

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fke“ ()

    fke schrieb:

    For i = 1 To 24

    If bit = i Then
    name_feld = "bit" & "i"
    Me.name_feld.FontBold = True
    Else
    End If

    Next i

    Ich habe lange nichts mehr in Access gemacht, aber mein Versuch wäre:

    Visual Basic-Quellcode

    1. For i = 1 To 24
    2. Me.Controls("bit" & i).FontBold = (bit = Me("Bit_NR"))
    3. Next
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hey,

    danke für deine Antwort - sieht auf jedenfall sehr viel einfacher und übersichtlicher aus... Er macht auch was, allerdings macht er jetzt einfach alles 24 Bezeichnungsfelder fett...

    Kannst du mir erklären was es mit dem

    = (bit = Me("Bit_NR"))

    auf sich hat ? Dann schau ich selber woran es liegt...


    EDIT:

    also ich glaube ich habe verstanden warum er alles fett macht, in der Spalte Bit_NR steht z.B. eine "5" demnach soll er nur das Bezeichnungsfeld "bit5" fett machen... In deiner Lösung fehlt irgendwo einfach die if-Abfrage... Ich bastel mal ein bisschen - sieht aber schon sehr geil aus... :D Danke!


    EDIT2:

    habs...! Danke danke danke!

    i_bit = Me("Bit_NR")
    For i = 1 To 24
    If i_bit = i Then
    Me.Controls("bit" & i).FontBold = True
    Me.Controls("bit" & i).ForeColor = vbRed
    Else
    Me.Controls("bit" & i).FontBold = False
    Me.Controls("bit" & i).ForeColor = 8355711
    End If


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „fke“ ()

    Hi,

    jetzt funktioniert es nicht mehr... Grud ist, dass ich alles in ein Unterformular gepackt habe...

    Wie kann ich denn aus dem Unterformular auf die Variable in der Datenbank zugreifen?

    mit: Forms!Unterformular.Controls("bit" & i).FontBold = True

    Hauptformular = START
    Unterformular = P-Mode_Detail

    mit Forms![Start]![P-Mode_Detail]Form[bit...] gehts nicht...

    Wäre toll wenn mir nochmal jemand helfen könnte. Danke

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „fke“ ()