Tips over Microsoft Word vind je op Werken met Word
TIPS

DATABASES

QUERIES

FORMULIEREN

RAPPORTEN

MODULES

FORUM

CONTACT



ZOEKEN
 

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