Toon posts:

[Access] formulieren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een database te maken waarmee onderszoeksrapporten kunnen worden gearchiveerd. Nu heb ik een zoekformulier gemaakt waarmee ik de zoekresultaten in een subform wil krijgen. Echter als ik iets invul in een veld, geeft hij gelijk al een resultaat, terwijl ik dat pas wil als ik op mijn zelfgemaakte zoekknop druk...
Tevens heb ik een invoerform gemaakt die prima werkt afgezien van het feit dat bij elke keer dat ik hem open hij niet met een leeg record begint, maar met de eerste uit de tabel. Ik wil dus dat bij elke keer openen van het zoek form de velden leeg zijn...

Ik werk nog niet zo lang met access, dus misschien stel ik wel enorm simpele vragen, ik hoop dat jullie dat mij kunnen vergeven ;)

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Vragen over Access horen niet thuis in Software Algemeen - ik verplaats je topic eventjes ;)

Windows Operating Systems >> Software Algemeen

Verwijderd

Topicstarter
ok, sorry. 8)7

  • Pannenkoekkie
  • Registratie: April 2004
  • Laatst online: 28-03-2025

Pannenkoekkie

Sugar or Cheeze?

Maak je TS eens wat duidelijker... Liefst met screenies, want eerlijk gezegd:
Ik snap er geen kont van 8)7

  • Boss
  • Registratie: September 1999
  • Laatst online: 12:20

Boss

+1 Overgewaardeerd

Eerse probleem: waarschijnlijk zit er code achter de filter-velden, en niet achter de knop? Kan je de code eens posten die je gemaakt hebt op dat formulier?

Tweede probleem: als je het form vanuit een schakelbord start, kan je daar opgeven dat je met een leeg record wilt beginnen. Eventueel kan je ook het formulier bij een OnOpen event naar een nieuw record laten gaan met Docmd.Runcommand acCmdRecordsGotoNew.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Ik probeer inderdaad vanuit een switchboard te werken, maar dat gaat voor geen meter.
De code van het switchboard:

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] = 'Default' "
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 = "There are no items for this switchboard page"
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 "There was an error reading the Switchboard Items table."
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 "Command not available."
On Error GoTo 0
' Update the form.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
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 "Unknown option."

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 "There was an error executing the command.", vbCritical
Resume HandleButtonClick_Exit
End If

End Function

Private Sub Option1_Click()

End Sub


Ik ben niet echt bekend met deze taal, maar ik snap wel enigszins wat ie zou moeten gaan doen. (deze code is trouwens gekopieerd uit een andere database die ik als voorbeeld gebruik). Bij de regel "Me.Caption = Nz(Me![ItemText], "")" krijg ik de melding dat hij het veld ItemText niet kan vinden, alhoewel deze toch echt netjes in de tabel staat waar die uit moet komen...

  • Boss
  • Registratie: September 1999
  • Laatst online: 12:20

Boss

+1 Overgewaardeerd

De code van het switchboard hoef je niets aan te veranderen, die is goed zo. Bij het menuutje waarmee je je switchboard kan maken, kan je kiezen om een formulier te openen in de toevoeg mode of in de bewerk mode. Eventueel kan je twee knoppen maken, eentje om toe te voegen en eentje om te zoeken / bewerken.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1