| | |
Controleren of er records bestaan in een gegeven tabel of query
De werking van je software kan sterk verbeterd worden en gebruiksvriendelijker gemaakt worden door op bepaalde momenten in het pakket eerst te controleren of er wel gegevens bestaan in het gevraagde onderdeel. Stel dat je bijvoorbeeld een zoekscherm hebt met een aantal zoekvelden. Met behulp van deze velden, bouw je in programmacode een query op, die de basis vormt voor het te openen zoekresultatenformulier. Door eerst te controleren of er wel resultaten zijn in de query, hoeft deze foutafhandeling niet in het rapport te worden gebouwd:
Public Function HeeftRecords(DBType As Integer, sqlst As String) As Boolean Dim rsh As Recordset Dim res As Boolean
res = False Set rsh = GeefRs(DBType, sqlst) If Not rsh.EOF Then res = True End If rsh.Close Set rsh = Nothing
HeeftRecords = res
End Function Enige uitleg is op zijn plaats. In mijn programmatuur maak ik gebruik van een glable variabele DBType. Deze zijn voor SQL Server en Access via globale variabelen ingesteld. Afhankelijk van het databasetype, kan ik een recordset openen op de juiste manier:
Public Function GeefRs(DBType As Integer, SQLStatement As String) As DAO.Recordset On Error GoTo err_geefrs
Select Case DBType Case SQDB: Set GeefRs = CurrentDb().OpenRecordset(SQLStatement, dbOpenDynaset, dbSeeChanges) Case Else: Set GeefRs = CurrentDb().OpenRecordset(SQLStatement) End Select
exit_geefRs: Exit Function
err_geefrs: ToonMsg ("Error " & Err.Number & Chr(13) & Err.Description) Resume exit_geefRs End Function Ook hier weer enige uitleg. Omdat je bij de functie MsgBox altijd zelf de titel/dialoog moet aangeven, maar ik liever gebruik van een eigen functie ToonMsg. Deze toont ook een MsgBox, maar geeft hieraan een eigen titel, die via een globale variabele is ingesteld:
Public Const Databasenaam as String="Mijn programma" Public Const SQDB As Integer = 1 Public Const MSACSDB As Integer = 2
Met behulp van de constante Databasenaam kan ik de ToonMsg aanroepen:
Public Sub ToonMsg(Bericht As String) ' Variant op MsgBox, maar met ingevulde Title
MsgBox (Bericht), , Databasenaam
End Sub
Reageer op deze tip
Er zijn nog geen reacties geplaatst
De volgende tips zijn beschikbaar:
Comprimeren (handmatig)
Gegevens converteren: Controleren of iets een Decimal is
Gegevens converteren: Controleren of iets een Integer is
Gegevens converteren: Null-waardes afvangen
Melden dat een onderdeel nog niet gereed is
Onderdelen van je pakket afschermen met een wachtwoord
| |
|