20. maj 2002 - 11:40Der 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????
intSvar = MsgBox("Ønsker du at slette holdet ??" & HoldnavnRef & "Det er ikke muligt at fortryde denne handling!", vbYesNo + vbExclamation, "Bekræft sletning af hold!")
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..... :(
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......
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.
>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 :(
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 ...... :)
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
>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.........
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.
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**********
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......
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 ;)
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.