Frontend-Alternativen für Datenbanklösung 2 - HTA-Dateien als Benutzeroberfläche

Der Datenbankaufbau

Damit das Beispiel funktioniert, benötigen Sie eine Access-Datenbank mit dem Namen Telefonliste00. mdb, die eine Tabelle TelMitarbeiter enthält. Diese Tabelle muss vier Textfelder haben mit den Namen

  • Abteilung,

  • Nachname,

  • Vorname und

  • Telefon

und sollte für Testläufe ein paar Datensätze enthalten.

Verbindung zur Datenbank herstellen

Die Beispielanwendung soll zunächst einmal nichts weiter tun, als einen Suchbegriff über ein Formular entgegenzunehmen und beim Klicken auf den Suchen-Button im Feld Nachname der Datenbanktabelle nach dem Suchbegriff zu suchen. Alle gefundenen Datensätze sollen dann als Liste ausgegeben werden (Bild 1).

Bild 1: Suchanfrage und Ergebnis.
Bild 1: Suchanfrage und Ergebnis.

<script type="text/vbscript">
'Enthält benötigte Funktionen und Prozeduren

</script>

Für diese Aufgabe benötigen Sie also eine Funktion, die die Datenbankverbindung aufbaut und zurückgibt. Sie brauchen eine weitere Prozedur oder Funktion, die die Daten abruft, und eine, die das Ergebnis der SQL-Abfrage ausgibt. Alle diese Funktionen zeigt Listing 3 zusammen mit den dazu notwendigen Deklarationen.

Dim strSuchbegriff
Dim arrDaten
Dim objFSO
Const DBName="Telefonliste00.mdb"
Const TbName="TelMitarbeiter"
Dim objCon 'connection-Objekt
Sub verbinden()
Dim objFSO
Dim strPfad
Dim strCon
Err.Clear
set objFSO=CreateObject("Scripting.FileSystemObject")
'Pfad ermitteln
strPfad=objFSO.GetParentFolderName(oHTA.CommandLine)
If mid(strPfad,1,1)="""" Then
strPfad=mid(strPfad,2)
End If
strPfad=objFSO.BuildPath(strPfad,dbName)
'Verbindung aufbauen
On Error Resume Next
strCon="Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPfad
set objCon=CreateObject("ADODB.Connection")
objCon.ConnectionString=strCon
objCon.CursorLocation=3
objCon.Open
If Err.Number <>0 Then
MsgBox "Datenbankverbindung nicht möglich!",vbInformation
Err.Clear
End If
set objFSO=nothing
End Sub
Sub trennen()
On Error Resume Next
objCon.Close
set objCon=nothing
End Sub
Function Suchen(strSB)
Dim arrD()
Dim rsDaten 'Recordset mit den Daten
Dim strSQL
Dim strTemp
Dim objFeld
Dim lngI
Dim lngZ
strSQL="SELECT * FROM " & TbName & "WHERE Nachname = """ & _
strSB & """;"
set rsDaten=CreateObject("ADODB.Recordset")
rsDaten.Open strSQL, objCon
Redim arrD (rsDaten.RecordCount, _
rsDaten.Fields.Count-1)
'Spaltennamen auslesen
If rsDaten.recordcount>0 Then
rsDaten.MoveFirst
for lngI=0 to rsDaten.fields.count-1
arrD(0,lngI)= _
rsDaten.fields(lngI).name
next
End If
'Werte ausgeben
lngZ=1
Do While rsDaten.eof=false
for lngI=0 to rsDaten.fields.count-1
arrD(lngZ,lngI)= _
rsDaten.fields(lngI).value
next
lngZ=lngZ+1
rsDaten.MoveNext
Loop
rsDaten.Close
set rsDaten=nothing
Suchen=arrD
End Function
Function Ausgabe(arrD)
Dim lngZeile
Dim strAusgabe
Dim lngSpalte
For lngZeile=lbound(arrD,1) to ubound(arrD,1)
strAusgabe=strAusgabe & "<tr>"
for lngSpalte=lbound(arrD,2) to ubound(arrD,2)
strAusgabe=strAusgabe & _
"<td>" & arrD(lngZeile,lngspalte) & "</td>"
next
strAusgabe=strAusgabe & "</tr>"
Next
If strAusgabe="" Then
strAusgabe="<tr><td>Keine Datensätze gefunden!</td></tr>"
End If
Ausgabe=strAusgabe
End Function