[Access 97] Event als "On no result"?

Pagina: 1
Acties:

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 31-07 08:16

bazs2000

Pixels zo groot als een atoom

Topicstarter
Als je een formulier maakt op basis van een query en deze query geeft niets als resultaat, dan blijft het formulier ook leeg.

Ik ben behoorlijk op de hoogte van access maar dit is een lastige (of juist simpel).
Waar ik nu naar op zoek is iets waar ik een event aan kan hangen, iets als "Of no result".
Nu weet ik wel dat Access niet zoiets heeft maar kan zoiets dan met een module die ik dan op een bepaalde manier aanroep?

Het enige wat het hoeft te doen is een msgbox weer te geven wat ook geen probleem zal zijn maar waar plak ik dit aan vast?

Je kunt alles met een DB doen maar een blanco scherm als resultaat komt toch wat onprofessioneel over in mijn ogen. :)

Krankzinnige muziek vind je hier.


  • Boss
  • Registratie: September 1999
  • Laatst online: 00:09

Boss

+1 Overgewaardeerd

Visual Basic:
1
2
3
4
5
Private Sub Form_Open(Cancel As Integer)
  If Me.Recordset.RecordCount = 0 Then
    MsgBox "!" 'Of iets anders wat je leuk vindt :)
  End If
End Sub

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.


  • bazs2000
  • Registratie: November 2000
  • Laatst online: 31-07 08:16

bazs2000

Pixels zo groot als een atoom

Topicstarter
Ik weet het niet meer.
Goed, even de hele situatie van het formulier uitleggen.

Wanneer het formulier opent zal het dmv OnLoad wat gegevens uit een tabel trekken op basis van wat criteria.
Dat werkt. Open het formulier en het doet precies wat het moet doen, dat is allemaal goed.

Visual Basic .NET:
1
2
3
Private Sub Form_Load()
    Me.RecordSource = "SELECT TBL_Gebruik_Users.Voornaam , TBL_Gebruik_Users.Achternaam from TBL_Gebruik_Users Where TBL_Gebruik_Users.Gebruikersnaam='" & fOSUserName & "'"
End Sub

Deel twee moet ervoor zorgen dat wanneer er geen gegevens uit de tabel kunnen worden gehaald, dat deze ipv een leeg scherm (leeg = volledig blanco) een MsgBox geeft.

Boss gaf de volgende code:
Visual Basic .NET:
1
2
3
4
5
Private Sub Form_Open(Cancel As Integer) 
  If Me.Recordset.RecordCount = 0 Then 
     MsgBox "Helaas, je bestaat niet als gebruiker."
  End If 
End Sub

dit geeft de volgende melding:
Compileerfout:

Kan de methode of het gegevenslid niet vinden.
Kan kloppen want als je "Me.Recordset.RecordCount" gebruikt dan komt "RecordCount" niet voor als methode.
Gekmakend is dit omdat alle voorbeelden en tutorials met RecordCount werken. Waarom dat bij mij niet zo is snap ik dus niet. Ja, als je dit wilt doen dan moet het volgens Access dus zo:
Visual Basic .NET:
1
Private Sub Form_Open(Cancel as Long)

Dan krijg ik de volgende fout:
De expressie Bij openen die u hebt opgegeven als stelling voor de bebeurteniseigenschap heeft de volgende fout veroorzaakt: De declaratie van een gebeurtenisprocedure komt niet overeen met de beschrijving van de gebeurtenis met dezelfde naam.

* De expressie geeft niet dezelfde naam van een macro, de naam van een door de gebruiker gedefiniëerde functie of een [gebeurtenisprocedure] als resultaat.
* Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro.
Wat doe ik nu fout?
Ik heb inmiddels meerdere voorbeelden bij elkaar gegoogled die allemaal volgens hetzelde princiepe werken maar geven allen dezelfde fouten.

Misschien moet mijn handje worden vastgehouden ofzo want ik kan alleen maar code vinden maar niet hoe of wat.
Ik heb wel code, volgens diverse pagina's zou ik het ook goed gebruiken maar de context waarin ik het nu gebruik begrijp ik niet.

Edit:
Ik weet alweer wat meer.
Jammer dat ik er pas na zo lang klooien achter kom. Wat Boss mij gaf werkt dus vanaf Access 2000. Ik heb hier 97 dus daarom lukt het niet. Ik zal iets met Dcount moeten verzinnen.

[ Voor 7% gewijzigd door bazs2000 op 27-07-2005 14:56 ]

Krankzinnige muziek vind je hier.


  • Boss
  • Registratie: September 1999
  • Laatst online: 00:09

Boss

+1 Overgewaardeerd

Met DCOUNT() is het eigenlijk net zo makkelijk, de juiste criteria erin en tellen maar...

Anders zou je nog met Recordset objecten kunnen werken, waar je (volgens mij) ook in Access '97 een .Count op hebt zitten...

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.


  • bazs2000
  • Registratie: November 2000
  • Laatst online: 31-07 08:16

bazs2000

Pixels zo groot als een atoom

Topicstarter
Ik ga het dan ook over die boeg gooien.
Je moest eens weten hoe gefrustreerd ik raakte, wel alles goed gebruiken maar iedere keer een foutmelding krijgen. Welnu, zo gaat het wel lukken. :)

Krankzinnige muziek vind je hier.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Access97 heeft idd alleen recordsetclone. Dit werkt wel (getest)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Option Compare Database
Option Explicit


Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "Yó"
        Cancel = True
    End If
    
End Sub

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • bazs2000
  • Registratie: November 2000
  • Laatst online: 31-07 08:16

bazs2000

Pixels zo groot als een atoom

Topicstarter
Niesje, dat is hem.
Werkt als een trein, deze is mooier dan wat DCount() ooit zou kunnen zijn.
Een paar regels tegenover een lap code die ik anders zou moeten maken.

Thanks guy's. Ik heb het vanmiddag al geprobeerd en nu pas reageer ik erop (verschil tussen werk en privé).

Edit:
Nu is het net even wat mooier.
Visual Basic .NET:
1
2
3
4
5
6
7
Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox "Blaat"
        Cancel = False 'Zet deze op true en Acces zal mekkeren over de geannuleerde DoCmd.
        DoCmd.Close
    End If
End Sub

Cancel op True heeft als resultaat dat Access na de MsgBox een melding geefd dat de DoCmd om het formulier te openen is geannuleerd zonder dat de boel is opgeslagen. Dat is vervelend. nu is het meteen opgelost. :)

[ Voor 49% gewijzigd door bazs2000 op 28-07-2005 08:21 ]

Krankzinnige muziek vind je hier.

Pagina: 1