Avatar billede 11er Nybegynder
22. januar 2004 - 18:51 Der er 17 kommentarer og
2 løsninger

Vil ikke åbne i dataark men åbner som formular.

Jer har lavet et oversigts vindue i access XP. Der har jeg nogle formularer ned af (i alt 8 punkter). Som det er nu åbner alle som formular.

Jeg kunne godt tænke mig at den første skal åbne som formular og de andre 7 vil jeg gerne have til at åbne som dataark.

Kan det lade sig gøre og hvordan ?
Avatar billede mugs Novice
22. januar 2004 - 18:56 #1
Du kan åbne en formular i dataarkvisning med denne:

DoCmd.OpenForm "form1", acFormDS, "", "", , acNormal
Avatar billede 11er Nybegynder
22. januar 2004 - 18:59 #2
Det har jeg prøvet , men kan ikke få det til at virke.
Avatar billede mugs Novice
22. januar 2004 - 19:02 #3
Prøv at se på formularens egenskaber i fane formater, om Tilladdformularvisning / tilladdataarkvisning er sat til Nej
Avatar billede 11er Nybegynder
22. januar 2004 - 19:07 #4
De er sat til JA.
Avatar billede mugs Novice
22. januar 2004 - 19:08 #5
Kan du evt. sende db til.

mugs@mail.dk
Avatar billede 11er Nybegynder
22. januar 2004 - 19:12 #6
Er send til
Avatar billede 11er Nybegynder
22. januar 2004 - 19:13 #7
Undskyld ! Er sendt til dig.
Avatar billede 11er Nybegynder
22. januar 2004 - 20:00 #8
Når jeg sender noget til dig mugs. kommer der besked tilbage at du ikke kan modtage mails. Hvad gør vi så ?
Avatar billede terry Ekspert
22. januar 2004 - 20:07 #9
send to NOSPAMeksperten@santhell.dkNOSPAM

remove NOSPAM
Avatar billede mugs Novice
22. januar 2004 - 20:18 #10
Jeg ved ikke hvad der er i vejen - Men jeg har modtaget din db op til mange gange. Formatet kan ikke genkendes, så jeg kan ikke åbne den.
Avatar billede terry Ekspert
22. januar 2004 - 20:24 #11
11er>Is this an Access 2003?
Avatar billede 11er Nybegynder
22. januar 2004 - 20:25 #12
Her koden til oversigten.

Option Compare Database

Private Sub Form_Open(Cancel As Integer)
' Minimize the database window and initialize the form.

    ' Move to the switchboard page that is marked as the default.
    Me.filter = "[ItemNumber] = 0 AND [Argument] = 'Standard' "
    Me.FilterOn = True
   
End Sub

Private Sub Form_Current()
' Update the caption and fill in the list of options.

    Me.Caption = Nz(Me![ItemText], "")
    FillOptions
   
End Sub

Private Sub FillOptions()
' Fill in the options for this switchboard page.

    ' The number of buttons on the form.
    Const conNumButtons = 8
   
    Dim con As Object
    Dim rs As Object
    Dim stSql As String
    Dim intOption As Integer
   
    ' Set the focus to the first button on the form,
    ' and then hide all of the buttons on the form
    ' but the first.  You can't hide the field with the focus.
    Me![Option1].SetFocus
    For intOption = 2 To conNumButtons
        Me("Option" & intOption).Visible = False
        Me("OptionLabel" & intOption).Visible = False
    Next intOption
   
    ' Open the table of Switchboard Items, and find
    ' the first item for this Switchboard Page.
    Set con = Application.CurrentProject.Connection
    stSql = "SELECT * FROM [Switchboard Items]"
    stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
    stSql = stSql & " ORDER BY [ItemNumber];"
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open stSql, con, 1  ' 1 = adOpenKeyset
   
    ' If there are no options for this Switchboard Page,
    ' display a message.  Otherwise, fill the page with the items.
    If (rs.EOF) Then
        Me![OptionLabel1].Caption = "Der er ingen elementer til denne oversigtsside"
    Else
        While (Not (rs.EOF))
            Me("Option" & rs![ItemNumber]).Visible = True
            Me("OptionLabel" & rs![ItemNumber]).Visible = True
            Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText]
            rs.MoveNext
        Wend
    End If

    ' Close the recordset and the database.
    rs.Close
    Set rs = Nothing
    Set con = Nothing

End Sub

Private Function HandleButtonClick(intBtn As Integer)
' This function is called when a button is clicked.
' intBtn indicates which button was clicked.

    ' Constants for the commands that can be executed.
    Const conCmdGotoSwitchboard = 1
    Const conCmdOpenFormAdd = 2
    Const conCmdOpenFormBrowse = 3
    Const conCmdOpenReport = 4
    Const conCmdCustomizeSwitchboard = 5
    Const conCmdExitApplication = 6
    Const conCmdRunMacro = 7
    Const conCmdRunCode = 8
    Const conCmdOpenPage = 9

    ' An error that is special cased.
    Const conErrDoCmdCancelled = 2501
   
    Dim con As Object
    Dim rs As Object
    Dim stSql As String

On Error GoTo HandleButtonClick_Err

    ' Find the item in the Switchboard Items table
    ' that corresponds to the button that was clicked.
    Set con = Application.CurrentProject.Connection
    Set rs = CreateObject("ADODB.Recordset")
    stSql = "SELECT * FROM [Switchboard Items] "
    stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
    rs.Open stSql, con, 1    ' 1 = adOpenKeyset
   
    ' If no item matches, report the error and exit the function.
    If (rs.EOF) Then
        MsgBox "Der opstod en fejl under læsning af tabellen Oversigtselementer."
        rs.Close
        Set rs = Nothing
        Set con = Nothing
        Exit Function
    End If
   
    Select Case rs![Command]
       
        ' Go to another switchboard.
        Case conCmdGotoSwitchboard
            Me.filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument]
           
        ' Open a form in Add mode.
        Case conCmdOpenFormAdd
            DoCmd.OpenForm rs![Argument], , , , acAdd

        ' Open a form.
        Case conCmdOpenFormBrowse
            DoCmd.OpenForm rs![Argument]

        ' Open a report.
        Case conCmdOpenReport
            DoCmd.OpenReport rs![Argument], acPreview

        ' Customize the Switchboard.
        Case conCmdCustomizeSwitchboard
            ' Handle the case where the Switchboard Manager
            ' is not installed (e.g. Minimal Install).
            On Error Resume Next
            Application.Run "ACWZMAIN.sbm_Entry"
            If (Err <> 0) Then MsgBox "Kommandoen er ikke tilgængelig."
            On Error GoTo 0
            ' Update the form.
            Me.filter = "[ItemNumber] = 0 AND [Argument] = 'Standard' "
            Me.Caption = Nz(Me![ItemText], "")
            FillOptions

        ' Exit the application.
        Case conCmdExitApplication
            CloseCurrentDatabase

        ' Run a macro.
        Case conCmdRunMacro
            DoCmd.RunMacro rs![Argument]

        ' Run code.
        Case conCmdRunCode
            Application.Run rs![Argument]

        ' Open a Data Access Page
        Case conCmdOpenPage
            DoCmd.OpenDataAccessPage rs![Argument]

        ' Any other command is unrecognized.
        Case Else
            MsgBox "Ukendt parameter."
   
    End Select

    ' Close the recordset and the database.
    rs.Close
   
HandleButtonClick_Exit:
On Error Resume Next
    Set rs = Nothing
    Set con = Nothing
    Exit Function

HandleButtonClick_Err:
    ' If the action was cancelled by the user for
    ' some reason, don't display an error message.
    ' Instead, resume on the next line.
    If (Err = conErrDoCmdCancelled) Then
        Resume Next
    Else
        MsgBox "Der opstod en fejl under udførelse af kommandoen.", vbCritical
        Resume HandleButtonClick_Exit
    End If
   
End Function
Avatar billede 11er Nybegynder
22. januar 2004 - 20:27 #13
Terry> det er fra MS Office XP 2001
Avatar billede terry Ekspert
22. januar 2004 - 20:35 #14
if mugs cant help then I will take alook when I get a bit of time.

what puzzles me is this
DoCmd.OpenDataAccessPage rs![Argument]

why a data access page?
22. januar 2004 - 20:39 #15
Dette er ikke nogen fejl, men blot det et faktum, at Access gør dette.

Der er 2 løsninger:
Løsning 1) Skriv HandleButtonClick-funktionen om, så den checker på hvilke formularer du åbner. Den del som ser således ud: 
        'Open a form.
        Case conCmdOpenFormBrowse
            DoCmd.OpenForm rs![Argument]
...kan skrives om til:
'Open a form.
        Case conCmdOpenFormBrowse
          Select Case rs![Argument]
            Case "formular1", "Formular3"
              docmd.Openform rs![Argument]
            case "Formular2"
              docmd.Openform rs![Argument],acFormDS
          end select
...


Løsning 2) Undgå at åbne formularer direkte i datasheet. Lav i stedet en alm. formular, hvori du indsætter datasheet-formlaren som subform. Dette ser også klart bedre ud, da formularen derved får en ordentlig ramme, hvilket kan mangle i datasheet-view.

/Thomas
Avatar billede 11er Nybegynder
22. januar 2004 - 21:03 #16
thomasjepsen>
Jeg er total nybegynder i accsess.
Hvad mener du med løsning 2
22. januar 2004 - 21:10 #17
Hvis du laver en tom formular i designvisning (ingen guide), så kan du herefter 'trække' din datasheet-formular fra databasevinduet og ind på den nye formular. Derved bliver det en hovedformular/underformular, som blot skal åbnes alm.
Avatar billede 11er Nybegynder
22. januar 2004 - 21:23 #18
Tak for hjælpen.
Hvordan lukker man spørgsmålet og giver point.
22. januar 2004 - 21:26 #19
sådan :o)

Og selv tak :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