Just nu i M3-nätverket
Gå till innehåll

Val i meddelanderuta Access


Martassen

Rekommendera Poster

Har gjort ett makro instruktionerna
Meddelanderuta med text "Formulär kommer nu öppnas".
Öppna formulär

 

 

Hur fixar man i meddelanderutan så man kan välja Ok och Avbryt? Alternativt Ja/nej?
Trycker man ja så ska formuläret öppnas. Trycker man nej öppnas inget och det avbryts så att säga.

 

Länk till kommentar
Dela på andra webbplatser

Function ja(fraga$) As Integer
ja = MsgBox(fraga, vbYesNo, "Fråga") = vbYes
End Function

Function ok(fraga$) As Integer
ok = MsgBox(fraga, vbOKCancel, "Fråga") = vbOK
End Function


Sub Testa()
If ok("Öppna formulär?") Then
DoCmd.OpenForm "Formulär1"
End If
End Function
Det går att göra motsvarande som ett makro.
Länk till kommentar
Dela på andra webbplatser

Ok!
Hur ser makrot ut om man ska göra detta?

 

Jag håller på försöker:

Instruktionen "Om".
Skriver Meddelanderuta("Öppna formuläret?;"1)=2
Därefter instruktionen Avbryt händelse
Därefter instruktionen Öppna formulär

 

Tack på förhand för hjälp!

Länk till kommentar
Dela på andra webbplatser

Kan hända jag fått det funka!?

 

Se bild.

 

ser det ok ut? Behövs Avbryt händelse?

 

Vad betyder första raden?. Hade tidigare en 2:a istället vilket inte funka men ändrade det till nedan:
Testade men ej säker på logiken i denna rad:

Meddelanderuta("Öppna formuläret?";1)=1

 

Trycker jag Avbryt öppnas ej formuläret. Trycker jag Ok öppnas det. Verkar det som iallafall.
 

 

Länk till kommentar
Dela på andra webbplatser

Har själv bara använt makron till väldigt enkla saker så där kommer jag inte ge några råd.

 

Tycker att VBA är så mycket mer flexibelt och kraftfullare.

Länk till kommentar
Dela på andra webbplatser

Ok gjordet om det till VBA. Vad betyder det nedan och vad står siffrorna för?
(MsgBox("Öppna formuläret?", 1) = 1) Then
DoCmd.CancelEvent
DoCmd.OpenForm "frmProdukt", acNormal, "", "", acAdd, acNormal
End If


 

Function makro()If (MsgBox("Öppna formuläret?", 1) = 1) Then
        DoCmd.CancelEvent
        DoCmd.OpenForm "frmProdukt", acNormal, "", "", acAdd, acNormal
    End If
On Error GoTo makro_Err

    


mcrmakro_Exit:
    Exit Function

mcrmakro_Err:
    MsgBox Error$
    Resume mcrmakro_Exit

End Function
Länk till kommentar
Dela på andra webbplatser

och gällande din kod:
Vad menas med (fraga$)?

 

och hur får man formuläret att öppnas i Läggtill läge med koden nedan? Overkill lägga in?:
acNormal, "", "", acAdd, acNormal. Se nedan:
 

Function ja(fraga$) As Integer
    ja = MsgBox(fraga, vbYesNo, "Fråga") = vbYes
End Function

Function ok(fraga$) As Integer
    ok = MsgBox(fraga, vbOKCancel, "Fråga") = vbOK
End Function


Sub Testa()
     If ok("Öppna formulär?") Then
        DoCmd.OpenForm "frmProdukt", acNormal, "", "", acAdd, acNormal
    End If
End Function

 

Länk till kommentar
Dela på andra webbplatser

Jag får inte till följande kod:

Jag har ritat upp en knapp. Vilken av rutinerna nedan ska jag lägga under "on click" eventet?. Jag vill dessutom att frmProdukt öppnas i läggtilläge.

Function ja(fraga$) As Integer
    ja = MsgBox(fraga, vbYesNo, "Fråga") = vbYes
End Function

Function ok(fraga$) As Integer
    ok = MsgBox(fraga, vbOKCancel, "Fråga") = vbOK
End Function


Sub Testa()
    If ok("Öppna formulär?") Then
        DoCmd.OpenForm "frmProdukt"
    End If
End Function
Länk till kommentar
Dela på andra webbplatser

Har nu ritat en knapp i ett formulär och vid "klickning" la jag in och den verkar göra så frmprodukt öppnas i läggtill-läge.
 

Private Sub Kommandoknapp102_Click()
If ok("Öppna formulär?") Then
        DoCmd.OpenForm "frmProdukt", acNormal, "", "", accAdd, acNormal
    End If
End Sub

Är denna raden för mycket om få formuläret i läggtill-läge?

DoCmd.OpenForm "frmProdukt", acNormal, "", "", accAdd, acNormal
Länk till kommentar
Dela på andra webbplatser

Räcker det inte med följande och skippa de två functions?

Private Sub Kommandoknapp20_Click()
If MsgBox("Öppna frmprodukt", vbOKCancel) = vbOK Then
DoCmd.OpenForm "frmprodukt", acNormal, "", "", acFormAdd
End If
End Sub
Länk till kommentar
Dela på andra webbplatser

Är denna raden för mycket om få formuläret i läggtill-läge?

DoCmd.OpenForm "frmProdukt", acNormal, "", "", accAdd, acNormal

 

Bara acAdd behövs. Övriga parametrar kan lämnas blanka då angivna värden är defaultvärdena.

 

Detta räcker alltså:

DoCmd.OpenForm "frmProdukt", , , , acAdd
OBS du har stavat acAdd med två cc (accAdd)

 

PS Övriga frågor verkar du ha hittat svaren på själv :) DS

Länk till kommentar
Dela på andra webbplatser

(fraga$)

är en kortvariant av

(fraga AS String)

 

D.v.s en deklaration som säger att funktionen ska ha en parameter av typen sträng.

Länk till kommentar
Dela på andra webbplatser

Kanon Micke!

Ok sista funderingarna:
Och vad fasen betyder själva kommatecknen? Är det att man kan lägga till 4 varianter till? :-)

 

DoCmd.OpenForm "frmProdukt", , , , acAdd

och vad betyder detta?

If (MsgBox("Öppna formuläret?", 1) = 1) Then
If (MsgBox("Öppna formuläret?", 1) = 2) Then


 

Länk till kommentar
Dela på andra webbplatser

Kanon Micke!

Ok sista funderingarna:

Och vad fasen betyder själva kommatecknen? Är det att man kan lägga till 4 varianter till? :-)

 

 

DoCmd.OpenForm "frmProdukt", , , , acAdd

 

Nej det är bara plats för andra typer av värden som kan skickas till funktionen Msgbox

När man utelämnar värden mellan kommatecknen så betyder det att default värdena kommer användas.

I det här fallet har två av parametrarna skickats med:

Den första som är formulärnamnet "frmProdukt".

Den femte som betyder att formuläret ska öppnas i inmatningsläge.

Parametrar 2, 3 och 4 har utelämnats. Tidigare så var det ändå bara defaultvärden du skickade med där.

 

Koden blir mycket enklare att läsa men fungerar ändå på precis samma sätt.

Länk till kommentar
Dela på andra webbplatser

och vad betyder detta?

If (MsgBox("Öppna formuläret?", 1) = 1) Then
If (MsgBox("Öppna formuläret?", 1) = 2) Then

 

Det är samma som

If (MsgBox("Öppna formuläret?", vbOKCancel) = vbOK) Then
If (MsgBox("Öppna formuläret?", vbOKCancel) = vbCancel) Then
vbOkCancel är bara en konstant som har värdet 1

Även vbOk är en konstant som har värdet 1

och vbCancel=2.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...