Van 2 commando knoppen de codes samenvoegen

Status
Niet open voor verdere reacties.

Rommyke

Gebruiker
Lid geworden
29 mrt 2007
Berichten
357
Hoi allemaal , ik ben er weer met al mijn vragen


Op het moment heb ik 2 commandoknoppen

Knop Opslaan

Code:
Private Sub OpslaanCmd_Click()

    Dim intRetVal As Integer
    Dim mblnNewRecord As Boolean
    Dim Lresponse As Integer
    
    If DCount("Afdelingsnaam", "Afdelingen", "[Afdelingsnaam] = '" & CStr(Forms!Afdelingen!Afdelingsnaam.Value) & "'") >= 1 Then
   
       intRetVal = MsgBox("Afdeling bestaat al" & vbCrLf & "Wilt u een nieuwe ingave doen ?", vbYesNo, "Afdelingsnaam Opslaan")
       Debug.Print "OpslaanCmd_Click : intRetVal = " & intRetVal
       If intRetVal = vbYes Then
          mblnNewRecord = True
          DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          DoCmd.GoToRecord , , acNewRec
       Else
          mblnNewRecord = False
          If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
              DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If
                  Exit Sub
       End If
     Else
          
          Refresh
          DoCmd.GoToRecord , , acNewRec
          If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
             DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If
         
       End If
   
End Sub


en knop aanpassen
Code:
Private Sub Cmd_aanpassen_Click()

  Dim intRetVal As Integer
  Dim mblnNewRecord As Boolean
  Dim Lresponse As Integer
  
 On Error GoTo Err_Cmd_aanpassen_Click
  
  If DCount("Afdelingsnaam", "Afdelingen", "[Afdelingsnaam] = '" & CStr(Forms!Afdelingen!Afdelingsnaam.Value) & "'") >= 1 Then
     intRetVal = MsgBox("Afdeling bestaat al" & vbCrLf & "Wilt u een andere afdeling ingeven ?", vbYesNo, "Afdelingsnaam Wijzigen")
       Debug.Print "Cmd_aanpassen_Click : intRetVal = " & intRetVal
       
     If intRetVal = vbYes Then
          Exit Sub
          
     Else
          If Me.Dirty Then 'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
              DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If         
          Exit Sub
     End If
  Else
   
  'update SQL
    mijnsql = "UPDATE Afdelingen SET Afdelingen.Afdelingsnaam = '" & Me.Afdelingsnaam & "' " & _
              "WHERE (((Afdelingen.AfdelingsId)=  " & gekozennummer & "))"
    DoCmd.SetWarnings False
    DoCmd.RunSQL mijnsql  'Uitvoeren van Update
    DoCmd.SetWarnings True
    
  'toon listbox met nieuwe waarde
    Me.OverzichtAfdelingen.Requery
   
     If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
     End If
   
  DoCmd.GoToRecord , , acNewRec
     If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
     End If  
  End If


Exit_Cmd_aanpassen_Click:
    Exit Sub

Err_Cmd_aanpassen_Click:
    MsgBox Err.Description
    Resume Exit_Cmd_aanpassen_Click

End Sub

Nu zou ik deze 2 codes willen samen voegen en nog maar 1 commandoknop willen gebruiken .

Dmv een vorig gebruikte knop , keuze tussen " Nieuw" of "Wijzigen" moet er door een druk op een 3de knop "Opslaan" een ekuze gemaakt worden welke code gebruik gaat worden .

Had het volgende al uitgewerkt maar dit werkt weer niet .

Code:
Option Compare Database
Option Explicit
Dim IsNewRec As Integer

Private Sub Form_Current()

If Me.NewRecord Then
   IsNewRec = 1
Else
   IsNewRec = 0
End If

End Sub


Code:
Private Sub Cmd_Opslaan_Click()

  Dim intRetVal As Integer
  Dim mblnNewRecord As Boolean
  Dim Lresponse As Integer
  
 
 If IsNewRec = 0 Then
 
  If DCount("Afdelingsnaam", "Afdelingen", "[Afdelingsnaam] = '" & CStr(Forms!Afdelingen!Afdelingsnaam.Value) & "'") >= 1 Then
     intRetVal = MsgBox("Afdeling bestaat al" & vbCrLf & "Wilt u een andere afdeling ingeven ?", vbYesNo, "Afdelingsnaam Wijzigen")
       Debug.Print "Cmd_aanpassen_Click : intRetVal = " & intRetVal
       
     If intRetVal = vbYes Then
          Exit Sub
          
     Else
          If Me.Dirty Then 'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
              DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If
          
          Exit Sub
     End If
  Else
   
  'update SQL
    mijnsql = "UPDATE Afdelingen SET Afdelingen.Afdelingsnaam = '" & Me.Afdelingsnaam & "' " & _
              "WHERE (((Afdelingen.AfdelingsId)=  " & gekozennummer & "))"
    DoCmd.SetWarnings False
    DoCmd.RunSQL mijnsql  'Uitvoeren van Update
    DoCmd.SetWarnings True
    
  'toon listbox met nieuwe waarde
    Me.OverzichtAfdelingen.Requery
   
     If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
     End If
   
  DoCmd.GoToRecord , , acNewRec
     If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
     End If  
  End If
Else

If DCount("Afdelingsnaam", "Afdelingen", "[Afdelingsnaam] = '" & CStr(Forms!Afdelingen!Afdelingsnaam.Value) & "'") >= 1 Then
   
       intRetVal = MsgBox("Afdeling bestaat al" & vbCrLf & "Wilt u een nieuwe ingave doen ?", vbYesNo, "Afdelingsnaam Opslaan")
       Debug.Print "OpslaanCmd_Click : intRetVal = " & intRetVal
       If intRetVal = vbYes Then
          mblnNewRecord = True
          DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          DoCmd.GoToRecord , , acNewRec
       Else
          mblnNewRecord = False
          If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
              DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If

          Exit Sub
       End If
     Else
          
          Refresh
          DoCmd.GoToRecord , , acNewRec
          If Me.Dirty Then  'Het toevoegen van een nieuw of gewijzigd record wordt teruggedraaid.
             DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
          End If
     End If
End If

End Sub

Hoop dat het een beetje duidelijk is , Iemand een idee ?
 
Heb een soort oplossing gevonden maar is nog niet wat ik zoek .

Als ik op de knop "Nieuw " druk zorg ik ervoor dat deze knop niet meer enabled is .
code bij knop Cmd_Nieuw

Code:
Me.Cmd_Nieuw.Enabled = False

Onderstaande code zet ik nu bij , bij commandoknop Cmd_Opslaan

Code:
If Me.Cmd_Nieuw.Enabled = False Then

Dit valt nu wel op als 1 knop enabled is en de rest niet of andersom ,

Is hiervoor dan geen andere oplossing ? bv een knop verbergen die niemand ziet
 
Laatst bewerkt:
voeg een voorbeeldje toe, dat antwoord makkelijker. Zeker als je zoveel tekst hebt.
 
voeg een voorbeeldje toe, dat antwoord makkelijker. Zeker als je zoveel tekst hebt.

Hoi Guus ,

Ik heb een voorbeeldje toegevoegd.

Als voorlopige oplossing maak ik nu gebruik van de enable functie van mijn keuzelijst zonder invoervak om te bepalen welke code gebruikt gaat worden door de knop Opslaan.

Bij een druk op de knop ' nieuw' wordt de keuzelijst enabled , bij een druk op de knop ' wijzigen' niet .
 

Bijlagen

Laatst bewerkt:
Mooi form

Je form werkt geweldig en is duidelijk. De knoppen reageren op de juiste manier en de overige controls worden op tijd en op een logische manier gedis/enabled.
Ik snap niet wat je wilt veranderen en waarom?

Enjoy!
 
Ik snap niet wat je wilt veranderen en waarom?

Hoi Guus,

Ik dacht dat het niet zogoed overkwam als je uw keuzelijst met een druk op nieuw enabled en bij een druk op wijzigen niet .

Heb een andere oplossing gevonden ondertussen

bij explicit heb ik onderstaande regel toevoegd

Code:
Option Compare Database
Option Explicit

Dim IsNewRec As Integer

bij mijn commandoknop Cmd_Wijzigen heb ik

IsNewRec = 0 toegevoegd

Bij mijn commandoknop Cmd_Nieuw heb ik

IsNewRec = 1 toegevoegd

en bij commandoknop Cmd_Opslaan heb ik

If IsNewRec = 1 Then toegevoegd

Dus als ik op wijzigen druk krijgt IsNewRec de waarde 0.
Als ik nu op 'opslaan' druk kijkt hij welke waarde IsNewRec heeft een selecteerd zo de code die hij gaat gebruiken. :D
 
Guus, nog een klein vraagje


Als je op een record in uw keuzelijst drukt , krijg je een zwarte balk van wat je geselecteerd hebt .
Met welke commando krijg je deze terug weg ?

Bedankt
 
Zet je listbox Multi Select op Simple en gebruik de volgende code om die balk te laten "verdwijnen"
Code:
Private Sub ResetListbox()
    Dim ctlSource As Control
    Dim intCurrentRow As Integer
    
    Set ctlSource = Me.OverzichtAfdelingen
    
    For intCurrentRow = 0 To ctlSource.ListCount - 1
        If ctlSource.Selected(intCurrentRow) Then
            ctlSource.Selected(intCurrentRow) = False
        End If
    Next intCurrentRow
End Sub
Enjoy!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan