Formulier niet openen, ingeval van NoData

Status
Niet open voor verdere reacties.

De Vrije Vogel

Gebruiker
Lid geworden
8 apr 2006
Berichten
95
Wie heeft de oplossing?
Bij Rapport is de funktie NoData beschikbaar, als er geen gegevens zijn.
Wat is de oplossing bij Formulieren?
Even het probleem schetsen:
Ik heb een Knop, waaraan gekoppeld een zoek query, welke naar een formulier gaat om gegevens te laten zien.
Ik kan dit formulier natuurlijk wijzigen in een rapport, maar dat wil eigenlijk niet om bepaalde redenen.
Als er geen gegevens zijn, krijg ik nu een leeg scherm te zien en moet ik het formulier met het kruisje / re-boven sluiten.
Ik ben op zoek naar een charmante oplossing in de vorm van een message en dat het formulier niet wordt geopend.
Wie kan mij helpen?
Alvast bedankt.
DVDD
 
Tel bijvoorbeeld eerst het aantal records bij het laden van het formulier

Code:
Private Sub Form_Load()
 
 Dim RS As New ADODB.Recordset
 RS.Open "brievenuit", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  if nz(Rs.RecordCOunt ) = 0 then 
   Msgbox "Geen gegevens" 
   Docmd.CancelEvent"
  endif 
End Sub

Jan
 
Hallo Jan,

Bedankt voor je reactie, echter het lukt me niet op de manier zoals jij voorstelt.
Geeft steeds een error bij DoCmd.CancelEvent.
Waarschijnlijk doe ik iets verkeerd.
Even wat meer uitleg over hoe het programma nu werkt.
Als ik een Titel wil zoeken, druk ik op een button, komt pop-up scherm, vul de titel of een deel hiervan in en druk op <ENTER>.
Onder de knop is een Filter (=query) toegevoegd, waarna het formulier wordt geopend. Als er geen records zijn, wordt het formulier ook geopend, maar dan met een compleet blank scherm. Alleen de achtergrond is zichtbaar.

Zie ook de VBA code:

Private Sub zoek_titel_Click()
On Error GoTo Err_zoek_titel_Click

Dim stDocName As String

stDocName = "Detail info DVD"

DoCmd.RunMacro stDocName

Exit_zoek_titel_Click:
Exit Sub

Err_zoek_titel_Click:
MsgBox Err.Description
Resume Exit_zoek_titel_Click

End Sub

Mogelijk heb jij of iemand anders op dit forum hier iets meer aan om mij te helpen.

Alvast bedankt.
DVV
 
Ik snap niet helemaal wat die macro er tussen doet, maar dit moet toch werken:

Code:
Private Sub Zoek_Titel_Click()
On Error GoTo Err_zoek_titel_Click
Dim stDocName As String

    stDocName = "Detail info DVD"
    With CurrentDb.OpenRecordset("qDetail_info_DVD")
        If .RecordCount = 0 Then
            MsgBox "Geen records..."
            DoCmd.CancelEvent
        Else
            DoCmd.OpenForm stDocName
        End If
        .Close
    End With
    Exit Sub

Err_zoek_titel_Click:
MsgBox Err.Description

End Sub

Je zult vermoedelijk de naam van de query die je op het formulier gebruikt wel moeten aanpassen, want zo te zien gebruik je geen objectvoorvoegsels in je namen ;)
En kun je de volgende keer je code opmaken met de knop CODE (# ) ?
 
Ik heb mijn code even uitgeprobeerd en inderdaad docmd.cancelevent werkt niet. :o
Maar jouw code kan wel even worden aangepast
Code:
Private Sub zoek_titel_Click()
On Error GoTo Err_zoek_titel_Click
Dim stDocName As String
Dim RS As New ADODB.Recordset
stDocName = "Detail info DVD"
RS.Open "recordsourceStDocname", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If Nz(RS.RecordCount) = 0 Then
  MsgBox "Geen gegevens"
  RS.Close
Else
  RS.Close
  DoCmd.RunMacro stDocName
End If

Uit:
  Exit Sub
Exit_zoek_titel_Click:
  MsgBox Err.Description
  Exit Sub
End Sub
Maar ik zag dat octafish me voor was met een efficiënte aanpak

Groet Jan
 
Ondanks al jullie hulp, lukt het me nog steeds niet om het zo te krijgen, dat ik geen leeg formulier meer zie.
Ik kom hier binnenkort op terug, maar heb op dit moment een grotere uitdaging met Access, waar ik elders een vraag stel.
Voor nu thnx.
DVV
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan