Avatar billede mhq Nybegynder
14. november 2002 - 18:50 Der er 4 kommentarer og
1 løsning

Titel: "ENTER" skal ikke hoppe til ny record, men lukke formen

I forbindelse med en NotInList funktion har jeg flg kode:
DoCmd.OpenForm "F_L_DokType_Add", , , , acFormAdd, acDialog, NewData
        If DLookup("DokTypeIDnr", "T_L_DokType", "DokType = '" & NewData & "'") Then
            Response = acDataErrAdded
        End If
    End If
Formen "F_L_DokType_Add" har en knap, med flg kode:
  DoCmd.Close

Problem: Når jeg trykker på "ENTER" tasten, hoppes til en ny tom record i tabellen, og der vises følgelig en tom form. (Der er ingen combo boks, og derfor kan jeg ikke bruge "OnClick" funktionen)

Jeg har behov for, at når der trykkes på "ENTER", modsvarer det trykket på OK knappen.
Avatar billede hekla Nybegynder
14. november 2002 - 23:49 #1
Hvor og hvornår er det, at du trykker på ENTER og ryger til en ny post?

Almindeligvis kan man benytte egenskaben "VedUdgang" for feltet
og indsætte kommandoen
docmd.gotocontrol cmd_OK
hvor cmd_OK er din OK-knap.
På OK-knappen kan du sætte en docmd.close ind i egenskaben VedIndgang
Avatar billede terry Ekspert
15. november 2002 - 08:31 #2
This is an example aon how to use the NotInList.
NOTE: I set the Response to acDataErrContinue. This IS NECESSARY to tell Access that the data wa NOT added and that you still need to select one form those which exist.

When you open the form for adding the new data (NewData) which is in the OpenArgs parameter  you can use this in the forms On Load event, as I do here. This can be used for automatically filling out one of the fields on the from with what you entered in the combo.


Private Sub YourCombo_NotInList(NewData As String, Response As Integer)
Dim prompt As String
   
    Response = acDataErrContinue
   
    prompt = "Item not found in list, do you want to create a new?"
    If msgBox(prompt, vbYesNo, "Item not found!") = vbYes Then
   
        DoCmd.OpenForm "F_L_DokType_Add", , , , acFormAdd, acDialog, NewData
       
        If DLookup("DokTypeIDnr", "T_L_DokType", "DokType = '" & NewData & "'") Then
       
            Response = acDataErrAdded
           
        End If
   
    End If

End Sub


'Here you need to change FieldOnForm to the field which is to contain the data you enetered in the 'combo.

Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then Me.FieldOnForm = Me.OpenArgs

End Sub
Avatar billede mhq Nybegynder
15. november 2002 - 08:42 #3
Når min "F_L_DokType_Add" åbner er der 2 felter. Et det viser OpenArgs (låst) og et åbent tekst felt. Det åbne felt skal udfyldes med et tal (antal cifre kan variere).

Efter at have udfyldt dette tekstfelt med tallet, vil det være normal handling for bruger at trykke ENTER. Og det er ved denne handling at der hoppes til ny record. Men det skal der ikke. F_L_DokType_Add skal lukke.

Hvad der skal gøres efter at have indtastet tallet er at tage musen og trykke på OK knappen. Det kan man jo blot instruere i. Men jeg ved at bruger vil trykke ENTER, og jeg skal så bruge en masse tid på at forklare etc.

Hjalp min uddybende forklaring?
Avatar billede terry Ekspert
15. november 2002 - 09:48 #4
Place docmd.close in th eforms AFTER INSERT event
Avatar billede terry Ekspert
15. november 2002 - 10:53 #5
thanks :o)
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