Dataset veldnaam met spatie geoorloofd?

Status
Niet open voor verdere reacties.

gcjvanbeek

Gebruiker
Lid geworden
27 nov 2006
Berichten
164
Hallo,
In en form "conflicten" heb ik velden uit een query staan. Deze query haalt NAW gegevens uit twee tabellen. De velden in de tabellen hebben dezelfde naam.
Tabel Conficten heeft de velden Achternaam, Voornaam, adres enz.
Tabel "Tabrel nieuw" heeft ook de velden Achternaam, Voornaam, adres enz.
deze tabellen worden naast elkaar op de form weergegeven. De procedure die ik schrijf moet die velden(naast elkaar) een kleur geven als ze niet gelijk zijn.

In de query krijgen de velden de namen : Conflicten_Achternaam resp Tabrel nieuw_Achternaam. Waarschijnlijk gaat de spatie problemen geven.
Hieronder de code :
Code:
Private Sub Form_Open(Cancel As Integer)
Dim Cntl As Control
Set Gewijzigd_master = CurrentDb.OpenRecordset("UpdateRel", dbOpenDynaset)    'gewijzigd 25-4-2016

For Each Cntl In Me.Controls
    Select Case Cntl.ControlType
   Case acTextBox
   Cntl.BackColor = RGB(255, 255, 255)
For I = 2 To 20
'MsgBox Gewijzigd_master.Fields(I).Name & "control naam" & Cntl.Name
        If "Conflicten_" & Gewijzigd_master.Fields(I).Name = Cntl.Name Then
'MsgBox Nz(Gewijzigd_master.Fields(I).Value)
If Gewijzigd_master.Fields(I).Value = "c" Then
Veld = Cntl.Name

MsgBox Cntl.Name & " " & " " & Cntl.Value & "conflict"
Controls("[" & Veld & "]").BackColor = RGB(255, 0, 0)
Veld = "TabRel nieuw_" & Right(Veld, (Len(Veld)) - 11)

MsgBox Veld
Controls("[" & Veld & "]").BackColor = RGB(225, 0, 255) 'dit werkt niet waarschijnlijk door de spatie in veldnaam

End If
End If
Next I
'Bestaat record al in UpdateRel?
End Select
Next Cntl


End Sub

Is de tabel "TabRel nieuw" met spatie te gebruiken? Of ziet iemand een andere oplossing. Tab rel nieuw zit in zeer veel querys en forms verweven. ( al bijna 8 jaar.
Hoop dat iemand een oplossing weet.
 
Waarom met VBA? Kan perfect met Voorwaardelijke Opmaak op je formulier. Niet gaan programmeren als het niet nodig is :).
 
Voorwaardelijk velden in form kleuren.

Ik heb voor VB gekozen, omdat de naast elkaar liggende velden niet alleen ongelijk moeten zijn, maar ook afhankelijk zijn van de dataset Gewijzigd_master De velden moeten allen een kleur krijgen als ze voldoen aan het onderstaande.:
If Gewijzigd_master.Fields(I).Value = "c" Then.

Geeft dit meer licht op de zaak?

mvg g.v.b.
 
Dat kan nog steeds met VO. Ik heb wel je code aangepast maar daar kan ik nu even niet bij. Daar zaten m.i. wel een paar foutjes in. Maar probeer het eerst maar eens met VO want dat is toch echt veel makkelijker.
 
Puur op basis van jouw code, waarbij ik dus geen idee heb of het gaat werken, zou ik het zo aanpassen:
Code:
Private Sub Form_Open(Cancel As Integer)
Dim cntl As Control
Dim i As Integer, Veld As String
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("UpdateRel", dbOpenDynaset)    'gewijzigd 25-4-2016
    For Each cntl In Me.Controls
        Select Case cntl.ControlType
            Case acTextBox
                cntl.BackColor = RGB(255, 255, 255)
                For i = 2 To 20
                    If Me("Conflicten_" & rst.Fields(i)).Name = cntl.Name And rst.Fields(i).Value = "c" Then
                        Veld = "TabRel nieuw_" & Right(cntl.Name, (Len(cntl.Name)) - 11)
                        Me("[" & cntl.Name & "]").BackColor = RGB(255, 0, 0)
                        Me(Veld).BackColor = RGB(225, 0, 255)
                    End If
                Next i
        End Select
    Next cntl
End Sub
 
net even iets anders opgelost

Hallo Octafish,
Ik had het probleem al opgelost, door het net even iets anders te benaderen. Hieronder de code, in ieder geval bedankt.
Code:
Public Sub Form_Open(Cancel As Integer)
Dim Cntl As Control, Cntl2 As Control
Set Gewijzigd_master = CurrentDb.OpenRecordset("UpdateRel", dbOpenDynaset)    'gewijzigd 25-4-2016

For Each Cntl In Me.Controls
    Select Case Cntl.ControlType
   Case acTextBox
   Cntl.BackColor = RGB(255, 255, 255)
For I = 2 To 20
        If "Conflicten_" & Gewijzigd_master.Fields(I).Name = Cntl.Name Then
         If Gewijzigd_master.Fields(I).Value = "c" Then
         veld = Cntl.Name
         MsgBox Cntl & Cntl.Name & " " & " " & Cntl.Value & "conflict"
         Controls("[" & veld & "]").BackColor = RGB(255, 0, 0)
        End If
        End If
      If "TabRel nieuw_" & Gewijzigd_master.Fields(I).Name = Cntl.Name Then
       If Gewijzigd_master.Fields(I).Value = "c" Then
       veld = Cntl.Name
       MsgBox Cntl & Cntl.Name & " " & " " & Cntl.Value & "conflict"
        Controls("[" & veld & "]").BackColor = RGB(0, 255, 0)
       End If
       End If
Next I
End Select
Next Cntl

MsgBox "eind:"
End Sub

Dit werkt gelukkig.
 
Ik blijf het een onhandige code vinden. Ik zou toch dit gebruiken:
Code:
    For Each Cntl In Me.Controls
        Select Case Cntl.ControlType
            Case acTextBox
                Cntl.BackColor = RGB(255, 255, 255)
                For i = 2 To 20
                    If "Conflicten_" & Gewijzigd_master.Fields(i).Name = Cntl.Name And Gewijzigd_master.Fields(i).Value = "c" Then
                        Me(Cntl.Name).BackColor = RGB(255, 0, 0)
                    End If
                    If "TabRel nieuw_" & Gewijzigd_master.Fields(i).Name = Cntl.Name And Gewijzigd_master.Fields(i).Value = "c" Then
                        Me(Cntl.Name).BackColor = RGB(0, 255, 0)
                    End If
                Next i
        End Select
    Next Cntl

Korter en beter.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan