BERND HELD Das Access-VBA Codebook
Bernd Held Das Access-VBA Codebook
>> Die 245 Abbildung 112: Die Laufwerkstypen wurden ermittelt. 171 Weitere Laufwerkseigenschaften In der Prozedur aus Listing 201 können Sie weitere Laufwerkseigenschaften ermitteln, wie beispielsweise den verfügbaren bzw. der Gesamtspeicherplatz von Ihrer Festplatte. ' Auf CD Buchdaten\Beispiele ' Dateiname Objekte.mdb ' Modul MdlFile Sub LaufwerksEigenschaften() Dim fs As Object Dim obj As Object Dim str As String On Error GoTo Fehler Set fs = CreateObject("Scripting.FileSystemObject") For Each obj In fs.drives With obj Select Case.DriveType Case 1 str = "Disketten-Laufwerk/USB-Datenstick" Case 2 str = "Festplatte" Case 3 str = "Netzlaufwerk" Case 4 str = "CD-ROM-Laufwerk" Case 5 str = "RAM-Disk" Case Else str = "nicht ermittelbar" End Select Listing 201: Weitere Laufwerkseigenschaften abfragen
246 >> Weitere Laufwerkseigenschaften If.DriveType = 2 Then Debug.Print "Laufwerksbuchstabe: " _ &.DriveLetter & " ----> " & str Debug.Print "Laufwerksname: " _ &.VolumeName Debug.Print "Verfügbarer Speicher: " _ & Round(.TotalSize / 1048576, 2) & " MByte" Debug.Print "Freier Speicher: " _ & Round(.FreeSpace / 1048576, 2) & " MByte" Debug.Print "Stammverzeichnis: " _ &.RootFolder Debug.Print "Dateisystem: " _ &.FileSystem End If End With Next obj Exit Sub Fehler: MsgBox Err.Number & vbtab & Err.Description End Sub Listing 201: Weitere Laufwerkseigenschaften abfragen (Forts.) Den Namen des Laufwerks, sofern einer vergeben wurde, können Sie über die Eigenschaft VolumeName abfragen. Die Gesamtkapazität der Festplatte können Sie mithilfe der Eigenschaft TotalSize ermitteln. Den momentan freien Speicher liefert die Eigenschaft FreeSpace. Beide Angaben werden in Bytes ausgegeben. Diese können Sie in MBytes umrechnen, indem Sie das Ergebnis durch 1.048.576 teilen. Da das Ergebnis noch diverse Nachkommastellen aufweist, runden Sie es über den Einsatz der Funktion Round auf zwei Stellen hinter dem Komma. Das Stammverzeichnis Ihrer Festplatte können Sie über die Eigenschaft RootFolder abfragen. Die Info über das Dateisystem liefert Ihnen die Eigenschaft FileSystem. Abbildung 113: Die wichtigsten Eigenschaften der Festplatte
>> Die 247 172 Textdatei einlesen Über das FileSystemObject lassen sich auch Textdateien einlesen. Im folgenden Beispiel aus Listing 202 wird die Textdatei ARTKEL.TXT Zeile für Zeile eingelesen und im Direktfenster der Entwicklungsumgebung ausgegeben. ' Auf CD Buchdaten\Beispiele ' Dateiname Objekte.mdb ' Modul MdlFile Sub TextdateiEinlesen() Dim fs As Object Dim file As Object Dim strzeile As String Set fs = CreateObject("Scripting.FileSystemObject") Set file = fs.opentextfile("c:\eigene Dateien\Artikel.txt") Do Until file.atendofstream strzeile = file.readline Debug.Print strzeile Loop file.close End Sub Listing 202: Textdatei in das Direktfenster einlesen Mithilfe der Methode OpenTextFile öffnen Sie die Textdatei. Die so geöffnete Textdatei steht Ihnen danach in der Objektvariablen file zur Verfügung. In einer Schleife lesen Sie nun zeilenweise die Textstream-Variable aus. Geben Sie in diesem Beispiel den Inhalt jeder Zeile im Direktfenster der Entwicklungsumgebung aus. Über die Eigenschaft AtEndOfStream können Sie abfragen, wann das Ende der eingelesenen Textdatei erreicht ist. Über die Methode Close schließen Sie die noch geöffnete Textdatei. Abbildung 114: Die Textdatei wurde komplett eingelesen.
248 >> Textdatei schreiben 173 Textdatei schreiben Mithilfe der Methode CreateTextFile können Sie eine Textdatei anlegen und über die Methode WriteLine einzelne Zeilen erfassen. Die Syntax der Methode CreateTextFile sieht wie folgt aus: Objekt.CreateTextFile(Dateiname[, überschreiben[, Unicode]]) Teil Objekt Dateiname überschreiben Unicode Beschreibung Erforderlich. Immer der Name eines FileSystemObject- oder Folder- Objekts. Erforderlich. Zeichenfolgenausdruck, der die zu erstellende Datei identifiziert. Optional. Boolescher Wert, der angibt, ob eine vorhandene Datei überschrieben werden soll. Wenn er True ist, wird eine vorhandene Datei überschrieben; ist er False, wird sie nicht überschrieben. Wenn der Parameter ausgelassen wird, wird der Wert auf False gesetzt, d. h., vorhandene Dateien werden nicht überschrieben. Optional. Boolescher Wert, der angibt, ob die Datei als Unicode- oder ASCII-Datei erstellt wird. Der Wert ist True, wenn die Datei als Unicode- Datei erstellt wird, bzw. False, wenn sie als ASCII-Datei erstellt wird. Wird für den Wert keine Angabe gemacht, wird von einer ASCII-Datei ausgegangen. Tabelle 87: Die Argumente der Methode CreateTextFile In der Prozedur aus Listing 203 wird eine Textdatei angelegt und eine Zeile erfasst. Dabei wird das aktuelle Datum sowie die aktuelle Uhrzeit über die Funktion Now ermittelt. ' Auf CD Buchdaten\Beispiele ' Dateiname Objekte.mdb ' Modul MdlFile Sub TextdateiSchreiben() Dim fs As Object Dim file As Object Set fs = CreateObject("Scripting.FileSystemObject") Set file = fs.createtextfile("c:\eigene Dateien\held.ini", True) file.writeline (Now) file.close End Sub Listing 203: Eine Textdatei anlegen und füllen
>> Die 249 Abbildung 115: Eine»Ini-Datei«anlegen
Einfachere Aufgaben rund um das Thema können Sie mithilfe des Objekts DoCmd erledigen. Wenn es etwas mehr sein soll, dann greifen Sie auf die Datenzugriffsmethode ADO (ActiveX Data Objects) zurück. Diese Methode zeichnet sich durch eine hohe Verarbeitungsgeschwindigkeit, eine benutzerfreundliche Bedienung sowie wenig Verbrauch an Arbeitsspeicher und Festplattenspeicher aus. Neben dieser Methode gibt es noch eine zweite, etwas ältere und sehr verbreitete Methode, die DAO (Data Access Objects) heißt. In diesem Kapitel können Sie neben ausgewählten Aufgaben mit dem Objekt DoCmd auch Objekte, Methoden und Eigenschaften von ADO/DAO nachschlagen und deren Einsatz anhand praktischer Beispiele nachvollziehen. Einfache Aufgaben mit DoCmd Einige Aufgaben im Umfeld von haben Sie bereits im Kapitel Die dieses Buches durchgeführt. Die folgenden Seiten führen jetzt weitere typische Beispiele auf. 174 öffnen Als erste Aufgabe öffnen Sie in der Prozedur aus Listing 204 über die Methode Open Table die Tabelle KUNDEN. ' Auf CD Buchdaten\Beispiele ' Dateiname.mdb ' Modul mdldocmd Sub TabelleÖffnen() On Error GoTo Fehler DoCmd.OpenTable "Kunden", acviewnormal Exit Sub Fehler: MsgBox Err.Number & " " & Err.Description End Sub Listing 204: Tabelle öffnen Mithilfe der Methode OpenTable öffnen Sie eine Tabelle in Access. Diese Methode hat folgende Syntax: OpenTable(name, Ansicht, Datenmodus)
252 >> Datensatz finden Im Argument name geben Sie den Namen der Tabelle an, die Sie öffnen möchten. Beim Argument Ansicht können Sie entscheiden, wie Sie Ihre Tabelle anzeigen möchten. Es stehen Ihnen dabei folgende Konstanten zur Verfügung: acviewdesign: Öffnet die Tabelle in der Entwurfsansicht. acviewnormal: Öffnet die Tabelle in gewohnter Weise in der Datenblattansicht (Standardeinstellung). acviewpivotchart: Stellt die Tabelle für ein Pivot-Diagramm zur Verfügung. acviewpivottable: Hiermit können Sie die Felder der Tabelle für eine Pivot-Tabelle verwenden. acviewpreview: Zeigt die Tabelle in der Seitenansicht an. Beim letzten Argument, Datenmodus, legen Sie fest, ob Änderungen an der Tabelle durchgeführt werden dürfen oder nicht. Dabei können Sie folgende Konstanten festlegen: acadd: Der Anwender kann neue Datensätze hinzufügen, jedoch keine bestehenden Datensätze bearbeiten. acedit: Der Anwender kann bestehende Datensätze bearbeiten und neue Datensätze hinzufügen. acreadonly: Der Anwender kann die Datensätze nur ansehen. 175 Datensatz finden Über die Methode FindRecord haben Sie die Möglichkeit, schon beim Aufruf der Tabelle einen bestimmten Datensatz anzeigen zu lassen. In der Prozedur aus Listing 205 wird die Tabelle KUNDEN geöffnet und der erste Datensatz angezeigt, in dem in einem beliebigen Feld der String»Ernst Handel«gefunden wird. ' Auf CD Buchdaten\Beispiele ' Dateiname.mdb ' Modul mdldocmd Sub TabelleÖffnenUndDatensatzFinden() On Error GoTo Fehler DoCmd.OpenTable "Kunden", acviewnormal DoCmd.FindRecord "Ernst Handel", acentire, _ True, acsearchall, True, acall Exit Sub Listing 205: Einen Datensatz aktivieren
>> 253 Fehler: MsgBox Err.Number & " " & Err.Description End Sub Listing 205: Einen Datensatz aktivieren (Forts.) Die Methode FindRecord hat folgende Syntax: FindRecord(SuchenNach, Vergleichen, GroßKlein, Suchen, WieFormatiert, NurAktuellesFeld, AmAnfangBeginnen) Im Argument SuchenNach geben Sie an, nach welchem Text Sie in der Tabelle suchen möchten. Das Argument Vergleichen gibt an, wo sich die Daten im Feld befinden. Sie können eine Suche nach Daten in einem beliebigen Teil des Feldes (Teil des Feldinhaltes = acanywhere), nach Daten, die das gesamte Feld ausfüllen (gesamter Feldinhalt = acentire), oder nach Daten, die sich am Anfang des Feldes befinden (Anfang des Feldinhaltes = acstart), angeben. Als Standardeinstellung ist immer der gesamte Feldinhalt, also die Konstante acentire, vorgesehen. Im Argument GroßKlein geben Sie an, ob Access bei der Suche zwischen Groß- und Kleinschreibung unterscheiden soll. Wenn ja, dann setzen Sie dieses Argument auf den Wert True. Das Argument Suchen legt die Suchreihenfolge fest. Sie können dabei die folgenden Konstanten einsetzen: acdown: Suche vom aktuellen Datensatz bis zum Ende der Tabelle. acup: Suche vom aktuellen Datensatz bis zum Anfang der Tabelle. acsearchall: Suche bis zum Ende der Datensätze und dann vom Anfang der Datensätze bis zum aktuellen Datensatz. Somit werden alle Datensätze durchsucht. Bei dieser Einstellung handelt es sich um die Standardeinstellung. Mithilfe des Arguments WieFormatiert können Sie bestimmen, ob die Suche auch formatierte Daten umfasst. Setzen Sie dieses Argument auf den Wert True, um nach Daten sowie nach Informationen zu suchen, wie diese formatiert sind und im Feld angezeigt werden. Setzen Sie dieses Argument hingegen auf den Wert False, so sucht Access nach Daten, die in der Datenbank gespeichert sind. Die Standardeinstellung lautet False. Beim Argument NurAktuellesFeld können Sie bestimmen, ob Access seine Suche nur auf die momentan aktive Spalte beziehen soll. In diesem Fall geben Sie die Konstante accurrent an. Möchten Sie den angegebenen Suchbegriff in allen Feldern der Tabelle suchen, dann setzen Sie die Konstante acall ein. Das letzte Argument, AmAnfangBeginnen, bestimmt, ob die Suche beim ersten Satz oder beim aktuellen Datensatz beginnen soll. Geben Sie diesem Argument den Wert True, um die Suche beim ersten Datensatz zu beginnen. Verwenden Sie den Wert False, um die Suche in dem Datensatz zu beginnen, der auf den aktuellen Datensatz folgt. Wenn Sie dieses Argument nicht angeben, wird der Standardwert (True) verwendet.
254 >> Datensatz auswählen Abbildung 116: Tabelle öffnen und Datensatz auswählen 176 Datensatz auswählen Alternativ zur Methode FindRecord können Sie auch die Methode GoToRecord wie in Listing 206 einsetzen, um gezielt einen bestimmten Datensatz, im Beispiel den letzten Datensatz der Tabelle, auszuwählen. ' Auf CD Buchdaten\Beispiele ' Dateiname.mdb ' Modul mdldocmd Sub TabelleDatensatzAuswählen() On Error GoTo Fehler DoCmd.OpenTable "Kunden", acviewnormal DoCmd.GoToRecord acdatatable, "Kunden", aclast Exit Sub Fehler: MsgBox Err.Number & " " & Err.Description End Sub Listing 206: Den letzten Datensatz der Tabelle auswählen Die Methode GoToRecord hat dabei folgende Syntax: GoToRecord(Objekttyp, Objektname, Datensatz, Offset)
Copyright Daten, Texte, Design und Grafiken dieses ebooks, sowie die eventuell angebotenen ebook-zusatzdaten sind urheberrechtlich geschützt. Dieses ebook stellen wir lediglich als persönliche Einzelplatz-Lizenz zur Verfügung! Jede andere Verwendung dieses ebooks oder zugehöriger Materialien und Informationen, einschliesslich der Reproduktion, der Weitergabe, des Weitervertriebs, der Platzierung im Internet, in Intranets, in Extranets, der Veränderung, des Weiterverkaufs und der Veröffentlichung bedarf der schriftlichen Genehmigung des Verlags. Insbesondere ist die Entfernung oder Änderung des vom Verlag vergebenen Passwortschutzes ausdrücklich untersagt! Bei Fragen zu diesem Thema wenden Sie sich bitte an: info@pearson.de Zusatzdaten Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei. Die Zurverfügungstellung dieser Daten auf unseren Websites ist eine freiwillige Leistung des Verlags. Der Rechtsweg ist ausgeschlossen. Hinweis Dieses und viele weitere ebooks können Sie rund um die Uhr und legal auf unserer Website http://www.informit.de herunterladen