Compileer Fout en verberg een Knop

Status
Niet open voor verdere reacties.

Rene71

Gebruiker
Lid geworden
2 aug 2012
Berichten
133
ik heb een probleem die ik eerder niet had wanneer ik klik op maak afleveradres in frmRelaties verschijnt de melding
Compileerfout
er wordt een door de gebruiker gedefinieerd type verwacht, geen project

het heeft gewerkt op deze manier waarom het nu niet meer werkt
wat doe ik verkeerd ?

Code:
Private Sub Copyafleveradres()
Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("tblAfleveradres", dbOpenDynaset)
    rs.AddNew
    rs!RelatieID = RelatieID
    rs!Relatie = Relatienaam
    rs![Postcode Bezoekadres] = [Postcode Bezoekadres]
    rs!Bezoekadres = Bezoekadres
    rs!Plaats = Plaats
    rs.Update
    rs.Close
    
    Me.Requery
    
Me.cmdcopy.Visible = False
DoCmd.OpenForm "frmAfleveradres"
DoCmd.GoToRecord , , acLast
End Sub
ook lukt het me niet om een knop te vergrendelen in de tab Financieel
wat ik tot nu toe probeer het lukt het me niet om de knop en of Veld te vergrendelen

Code:
Private Sub Form_Current()

If Me.NewRecord Then
    On Error Resume Next 'It should never occur, just to be sure...
    Me!RelatieID.DefaultValue = Nz(DMax("[RelatieID]", "tblRelaties"), 0) + 1
End If

If Me.Soort = K Then 'K=1 Klant of B=3 beide
        Me.Debiteurnr.Enabled = True
        Me.cmdNieuwdebiteur.Enabled = True
        Me.Crediteurnr.Enabled = False
        Me.cmdNieuwcrediteur.Enabled = False
        End If
        
If Me.Soort = L Then   'L=2 Leverancier of B=3 beide
        
         Me.Debiteurnr.Enabled = False
         Me.cmdNieuwdebiteur.Enabled = False
         Me.Crediteurnr.Enabled = True
         Me.cmdNieuwcrediteur.Enabled = True
         End If
        
If Me.Soort = B Then   'L=2 Leverancier of B=3 beide
        Me.Debiteurnr.Enabled = True
         Me.cmdNieuwdebiteur.Enabled = True
         Me.Crediteurnr.Enabled = True
         Me.cmdNieuwcrediteur.Enabled = True
         End If
         
If Me.Soort = P Then   'L=2 Leverancier of B=3 beide
         Me.Debiteurnr.Enabled = False
         Me.cmdNieuwdebiteur.Enabled = False
         Me.Crediteurnr.Enabled = False
         Me.cmdNieuwcrediteur.Enabled = False
         End If        
End Sub

kan iemand me vertellen wat ik verkeerd doe
 

Bijlagen

Laatst bewerkt:
Het is altijd beter om recordsets volledig te initialiseren, dus:
Code:
Dim db As DAO.Database
Dim rs As DAO.Recordset
i.p.v.
Code:
Dim db As Database
Dim rs As Recordset
In dit geval verdwijnt dan ook de foutmelding.
 
En je had nog een antwoord te goed op je 2e vraag. Is ook simpel:
De vergelijking
Code:
    If Me.Soort = 1 Or 3 Then 'Klant of beide
test 2 dingen: de eerste test is kijken of Me.Soort gelijk is aan 1. De 2e vergelijking kijkt naar het getal 3 (en hier stopt de vergelijking helaas...). En dat laatste is natuurlijk altijd waar: 3 blijft 3, hoe lang je er ook naar kijkt.
Wat je zou moeten doen is kijken of Me.Soort gelijk is aan 1 of dat Me.Soort gelijk is aan 3.,
Code:
    If Me.Soort = 1 Or Me.Soort = 3 Then 'Klant of beide
Beter is om voor dit soort vergelijkingen Select Case te gebruiken.
Code:
    Select Case Me.Soort
        Case 1, 3
            Me.Debiteurnr.Visible = True
            Me.cmdNieuwdebiteur.Visible = True
        Case 2, 3
            Me.Crediteurnr.Visible = True
            Me.cmdNieuwcrediteur.Visible = True
        Case Else
            Me.Debiteurnr.Visible = False
            Me.cmdNieuwdebiteur.Visible = False
            Me.Crediteurnr.Visible = False
            Me.cmdNieuwcrediteur.Visible = False
    End Select
 
Bedankt voor je oplossing op mijn eerste vraag idd de melding is er niet meer :thumb: bedankt

met jouw antwoordt op mijn tweede vraag, ik kom nog niet helemaal uit
ik blijf nu nog steeds beide knoppen en velden zien ook al verander ik de Soort 1 naar 2 (1 =Klant (K) 2=Leverancier (L) )

Bekijk bijlage RelatieDB2.rar
ik ga hier vanavond nog mee stoeien
 
Ik heb de code uit een werkende db van jou gehaald, en daar doet-ie wel wat. Dus het ligt niet zozeer aan de Select Case dat je wat anders denkt te krijgen, maar aan de tabel waar je de waarden uit ontleent.
 
Overigens zou ik het zo doen:
Code:
    Select Case Me.Soort
        Case 1 '1=Klant
            Me.Debiteurnr.Visible = True
            Me.cmdNieuwdebiteur.Visible = True
            Me.Crediteurnr.Visible = False
            Me.cmdNieuwcrediteur.Visible = False
        Case 2 '2=Leverancier L
            Me.Debiteurnr.Visible = False
            Me.cmdNieuwdebiteur.Visible = False
            Me.Crediteurnr.Visible = True
            Me.cmdNieuwcrediteur.Visible = True
        Case 3 '3=Beide B
            Me.Debiteurnr.Visible = True
            Me.cmdNieuwdebiteur.Visible = True
            Me.Crediteurnr.Visible = True
            Me.cmdNieuwcrediteur.Visible = True
        Case Else
            Me.Debiteurnr.Visible = False
            Me.cmdNieuwdebiteur.Visible = False
            Me.Crediteurnr.Visible = False
            Me.cmdNieuwcrediteur.Visible = False
    End Select
 
Opgelost het zat in idd tabel heb de waardes aangepast en nu werkt het :D
Bedankt Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan