Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 11:40 Der er 19 kommentarer og
1 løsning

MsgBox detalje ved sletning

Har et irriterende problem som jeg gerne vil have løst.

På form klikkes på knap der sletter record på underformular. Bruger promtes og record slettes.

_______________________________________________
Private Sub cmdSletHold_Click()
    Dim intSvar As Integer
           
  intSvar = MsgBox("Ønsker du at slette holdet ??" + vbLf + "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")
     
    If intSvar = vbYes Then
     
    'Sæt fokus på underformularen
    frmInstruktoerU.SetFocus
   
    DoCmd.RunCommand acCmdDeleteRecord
     
    End If
   
    Me.Requery
         
End Sub
_________________________________________

Det jeg gerne vil have er at navnet på det hold bruger vil slette står i msgboxen

har prøvet med

intSvar = MsgBox("Ønsker du at slette" + vbLf + Me.frmInstruktoerU.HoldnavnRef + vbLf + "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")

men det dutter ikke idet vba IKKE kender feltet HoldnavnRef som indeholder navnet på det hold som jeg vil slette. Grunden er jo selvfølgelig at feltet befinder sig på underformularen (frmInstruktoerU), så hvordan pokker koder jeg mig ud af det????
Avatar billede mugs Novice
20. maj 2002 - 11:44 #1
intSvar = MsgBox("Ønsker du at slette holdet ??" & HoldnavnRef & "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 11:55 #2
>mugs
desværre no can do, skriver jeg

intSvar = MsgBox("Ønsker du at slette holdet" & HoldnavnRef & "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")

får jeg en compileerror variabel ikke defineret..... :(
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 11:56 #3
har garanteret noget at gøre med at man i koden skal definere at der er tale om et felt på en underformular, men pokker heller om jeg kan greje hvordan......
Avatar billede mugs Novice
20. maj 2002 - 12:06 #4
Du har helt sikkert ret i, at fejlen ligger i at feltet er i underformularen. Jeg er ligeledes sikker på, at du er på rette vej. Jeg har flg. forslag:

Har du prøvet at flytte MsgBox til underformularen efter at du sætter focus på denne?

Er det muligt at definere variablen i hovedformularen selvom feltet ligger i underformularen? 

Har du oprøvet ar definere variable i kodevinduets generelle erklæringer:
Option Compare Database
Dim Holdnavnref As String
Option Explicit
Jeg vil vove det ene øje, at den type erklæringer gælder for hele applikationen.
Avatar billede jkrons Professor
20. maj 2002 - 12:07 #5
Har du prøvet med Me!frmInstruktoerU!Navnpåunderformularfeltihovedformular!HoldnavnRef ?
Avatar billede jkrons Professor
20. maj 2002 - 12:08 #6
Jeg vrøvler:

Me!Navnpåunderformularfeltihovedformular alktså referer til underformularfeltets navn, ikke til underformularens navn.
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 13:22 #7
>mugs
nej har ikke prøvet at dim HoldnavnRef som string, heller ikke flytte msgbox til underformularen - prøver lige at flytte den og placerer den under egenskaben [Ved sletning].......

>jkrons
ja jeg har prøvet at referere til feltet på underformularen i.e

intSvar = MsgBox("Ønsker du at slette holdet" + Me.HoldnavnRef + ' mere kode mere kode

duer ikke => compileerror Method or datamember not found - dvs kender ikke HoldnavnRef som er nanvnet på feltet :(
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 13:36 #8
ok mugs du har ret msgboxen skal placeres på underformularen. her koden på denne....
___________________________________________________
Private Sub Form_Delete(Cancel As Integer)
Dim intSvar As Integer

    DoCmd.SetWarnings False
   
    intSvar = MsgBox("Ønsker du at slette holdet" + vbLf + Me.HoldnavnRef + vbLf + "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")

    If intSvar = vbYes Then
       
    DoCmd.RunCommand acCmdDeleteRecord

End Sub
______________________________________________________

men hvordan laver jeg så koblingen til min anden kode ...... :)
Avatar billede mugs Novice
20. maj 2002 - 14:10 #9
Følgende kode er indsat i en testdb, og den fungerer. Bemærk at posten bliver slettet i 2 omgange: først i underformularen, som derefter lukkes og derefter i hovedformularen:

Dim intSvar As Integer
intSvar = MsgBox("Ønsker du at slette holdet ?? " & vbNewLine & felt1 & vbNewLine & "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")
If intSvar = vbYes Then
DoCmd.OpenForm "Underf", acNormal, "", "[Forms]![form1]![felt1]=[underf]![feltunderf]", acEdit, acNormal
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.Close
DoCmd.RunCommand acCmdDeleteRecord
End If
Me.Requery
Avatar billede mugs Novice
20. maj 2002 - 14:12 #10
Vil du have testdb tilsendt, så læg din e-mail
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 14:48 #11
:) gerne

send den til susbbl@hotmail.com

:)
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 18:27 #12
>mugs
er ellers en god ide, men jeg kan desværre ikke bruge den :(

ok her er hvad jeg har gjort indtil nu

på formular hvor jeg har knappen er placeret

__________________________________________________
Private Sub cmdSletHold_Click()

On Error GoTo ErrHandler

  frmInstruktoerU.SetFocus
 
  DoCmd.RunCommand acCmdDeleteRecord

ErrHandler:
  Exit Sub
   
End Sub
_______________________________________________________

på underformularens egenskab [Før sletning]

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Dim intSvar As Integer

    intSvar = MsgBox("Ønsker du at slette holdet" + vbLf + Me.HoldnavnRef + vbLf + "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")

    If intSvar = vbYes Then
       
    DoCmd.RunCommand acCmdDeleteRecord
             
    End If
   
End Sub
_______________________________________________________

det fungerer egentlig også fint BORTSET fra at den pgl record også slettes når jeg vælger NEJ - - argh....

har prøvet med at skrive
if intSvar = vbNo Then doCmd.CancelEvent
og
if intSvar = vbNo Then Exit Sub

men det duer ikke - - hvordan pokker sørger jeg for at den pgl record IKKE slettes når jeg vælger nej.........
Avatar billede nih Novice
20. maj 2002 - 18:28 #13
Du burde nu kunne tilgå data på underformularen.

Me.UFrmNavnIegenskab.form!feltNavn

Niels
Avatar billede nih Novice
20. maj 2002 - 18:31 #14
PS.
Brug '.' ved objekter på formen, så kommer Access hjælpeliste frem når du skriver.
Brug '!' som genvej i VBA - I eks anvendes ! til at referere til et felt i underformens bagved liggende foresp.

Niels
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 18:34 #15
det undrer mig en hel del at recorden slettes når jeg vælger NEJ - har jeg s... ikke været ude for før. Et NEJ er da normalt = fortryd, selv i VBA G**********
Avatar billede nih Novice
20. maj 2002 - 18:43 #16
Du SKAL have din msgBox i den event der sletter posten - hvis det foregår fra hovedformen skal du cansle herfra

Niels
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 19:08 #17
>Niels
right Y are

ok nu har jeg den næsten :)
________________________________________________________________

Private Sub cmdSletHold_Click()
Dim intSvar As Integer

On Error GoTo Errhandler
   
    intSvar = MsgBox("Ønsker du at slette holdet" + vbLf + frmInstruktoerU!HoldnavnRef + vbLf + "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")
     
    If intSvar = vbYes Then
     
    frmInstruktoerU.SetFocus
   
    DoCmd.RunCommand acCmdDeleteRecord
   
    End If
 
    Me.Requery
     
Errhandler:

    Exit Sub
   
End Sub
______________________________________________________

det der nu er problemet :) er når jeg har mere end en record på underformularen og ex vælger at slette den første, promtes jeg for om jeg også vil slette den næste......
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 19:19 #18
okey dokey :)

skyldtes at jeg ikke havde fået slettet koden på underformularen - lol

nu virker det sgi skidtet :)

så det vil sige at der skal bruges frmInstruktoer!HoldnavnRef som jeg skrev ovenfor og kun kode placeret på knappen samt lidt kode på underformularen for at undertrykke access standard medd
______________________________________________________

Private Sub Form_Delete(Cancel As Integer)

    DoCmd.SetWarnings False

End Sub
____________________________________________________________

mhh har indtil dd ikke været udsat for at skulle bruge "!" i VBA i Access......

ja ja nemt er det ikke, er der selvfølgelig heller ingen der har lovet ;)
Avatar billede susanne_larsen Nybegynder
20. maj 2002 - 20:21 #19
>mugs
takker fordi du fik mig guidet ind på den rette vej :)
Avatar billede mugs Novice
20. maj 2002 - 21:03 #20
En fornøjelse - tak for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester