microsoft:access
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| microsoft:access [2015/07/02 09:52] – [Leere Datenbank per VBA anlegen] 217.13.183.252 | microsoft:access [2021/11/04 18:59] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Access ====== | ====== Access ====== | ||
| + | |||
| + | ===== Datumsfunktionen ===== | ||
| + | |||
| + | eine Anleitung für [[https:// | ||
| + | |||
| + | ==== Besonderheit beim Export von Datumsfeldern in csv-Dateien ==== | ||
| + | |||
| + | Intern werden Datumsfelder mit Datum und Uhrzeit abgespeichert. Will man ein Datumsfeld in ein csv-File exportieren. wird auch die Zeit mit " | ||
| + | |||
| + | < | ||
| + | NurDatum: NFormat(ZDate([Datum]);" | ||
| + | |||
| + | </ | ||
| + | * NurDatum ist das neu formatierte Datumsfeld | ||
| + | * Datum ist das ursprüngliche Datumsfeld, das nicht ausgegeben werden soll | ||
| + | |||
| + | ==== Datumsbereich einer Kalenderwoche ermitteln ==== | ||
| + | |||
| + | Bekommt man z.B. von einem Onlineversand die Information, | ||
| + | |||
| + | Übergabeparameter: | ||
| + | Rückgabewert: | ||
| + | Quelle: | ||
| + | |||
| + | < | ||
| + | Function KWStartDatum(intKW As Integer, _ | ||
| + | intJahr As Integer) As Date | ||
| + | Dim dtStart As Date | ||
| + | Dim dtJahr As Date | ||
| + | |||
| + | KWStartDatum = DateSerial(1980, | ||
| + | If Not IsDate(DateSerial(intJahr, | ||
| + | intJahr = Year(Now) ' | ||
| + | End If | ||
| + | If intKW <1 Or intKW> 53 Then | ||
| + | dtJahr = DateSerial(intJahr, | ||
| + | intKW = KW(dtJahr) | ||
| + | dtStart = dtJahr | ||
| + | Else | ||
| + | dtStart = DateSerial(intJahr, | ||
| + | End If | ||
| + | Do Until KW(dtStart) = intKW | ||
| + | DoEvents | ||
| + | dtStart = dtStart + 1 | ||
| + | Loop | ||
| + | |||
| + | KWStartDatum = dtStart | ||
| + | |||
| + | End Function | ||
| + | |||
| + | </ | ||
| + | |||
| ===== Formularfelder nach Auswahl aus Kombinationsfeld füllen ===== | ===== Formularfelder nach Auswahl aus Kombinationsfeld füllen ===== | ||
| Zeile 13: | Zeile 65: | ||
| Ein Tipp von Smart Tools Publishing | Ein Tipp von Smart Tools Publishing | ||
| - | Um per VBA eine leere neue Datenbank anzulegen, setzen Sie die Funktion " | + | Um per VBA eine leere neue Datenbank anzulegen, setzen Sie die Funktion " |
| - | \\ | + | |
| - | - Wechseln Sie mit **Alt+F11** in die VBA-Entwicklungsumgebung. | + | - Wählen Sie das Menü // |
| + | - Setzen Sie eine Referenz auf " | ||
| + | - Nehmen Sie in Ihrer VBA-Routine die folgende Deklaration bzw. die folgenden Anweisungen auf: | ||
| + | |||
| + | Dim db As DAO.Database \\ \\ Set db = DAO.CreateDatabase(" | ||
| + | |||
| + | ===== Links zu Access VBAs ===== | ||
| + | |||
| + | Microsoft Access [[http:// | ||
| + | |||
| + | ===== Recordsets zum Bearbeiten von Datensätzen ===== | ||
| + | |||
| + | entnommen aus den SmartTools Access Weekly 33-35 | ||
| + | |||
| + | Um programmatisch auf die Inhalte von Tabellen zuzugreifen, | ||
| + | |||
| + | Um mit DAO arbeiten zu können, muss zunächst ein entsprechender Verweis gesetzt sein. Access erledigt dies automatisch beim Anlegen einer neuen Datenbank. Access setzt dabei einen Verweis auf die Access Database Engine, die DAO enthält. | ||
| + | |||
| + | - Wechseln Sie mit [Alt] + [F11] in die VBA-Entwicklungsumgebung. | ||
| + | - Wählen Sie das Menü // | ||
| + | - Setzen Sie das Kontrollkästchen vor dem Eintrag " | ||
| + | - Übernehmen Sie die Änderungen mit einem Klick auf //Ok//. | ||
| + | |||
| + | **Beispiel für die Initialisierung eines Recordsets: | ||
| + | |||
| + | < | ||
| + | Dim db As DAO.Database | ||
| + | Dim rs As DAO.Recordset | ||
| + | Dim fld As DAO.Field | ||
| + | Set db = CurrentDb() | ||
| + | Set rs = db.OpenRecordset(" | ||
| + | For Each fld In rs.Fields | ||
| + | Debug.Print fld.Value & ";"; | ||
| + | Next | ||
| + | rs.Close | ||
| + | Set rs = Nothing | ||
| + | Set db = Nothing | ||
| + | End Sub | ||
| + | |||
| + | </ | ||
| + | |||
| + | Um sich durch Recordsets zu bewegen oder den Status von Recordsets abzufragen, werden die folgenden Methoden und Eigenschaften verwendet: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | **ein Beispiel: | ||
| + | |||
| + | < | ||
| + | Sub Test3() | ||
| + | Dim db As DAO.Database | ||
| + | Dim rs As DAO.Recordset | ||
| + | Dim Anz As Long, I As Long | ||
| + | |||
| + | Set db = CurrentDb() | ||
| + | Set rs = _ | ||
| + | db.OpenRecordset(" | ||
| + | " | ||
| + | Anz = rs.RecordCount | ||
| + | For I = 1 To Anz | ||
| + | Debug.Print rs(" | ||
| + | rs.MoveNext | ||
| + | Next | ||
| + | rs.Close | ||
| + | |||
| + | Set rs = Nothing | ||
| + | Set db = Nothing | ||
| + | |||
| + | End Sub | ||
| + | |||
| + | </ | ||
| + | |||
| + | Um einen **Feldinhalt mit DAO zu ändern, | ||
| + | |||
| + | < | ||
| + | rs.Edit: | ||
| + | rs(" | ||
| + | rs.Update: | ||
| + | |||
| + | </ | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | < | ||
| + | Sub Test6a() | ||
| + | Dim db As DAO.Database | ||
| + | Dim rs As DAO.Recordset | ||
| + | Dim Anz As Long, I As Long | ||
| + | |||
| + | Set db = CurrentDb() | ||
| + | Set rs = _ | ||
| + | db.OpenRecordset(" | ||
| + | rs.MoveLast | ||
| + | Anz = rs.RecordCount | ||
| + | rs.MoveFirst | ||
| + | For I = 1 To Anz | ||
| + | rs.Edit | ||
| + | rs(" | ||
| + | rs.Update | ||
| + | rs.MoveNext | ||
| + | Next | ||
| + | rs.Close | ||
| + | |||
| + | Set rs = Nothing | ||
| + | Set db = Nothing | ||
| + | |||
| + | End Sub | ||
| + | |||
| + | </ | ||
| + | |||
| + | Um neue Datensätze zu einem Recordset hinzuzufügen, | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | < | ||
| + | Sub Test7a() | ||
| + | Dim db As DAO.Database | ||
| + | Dim rs As DAO.Recordset | ||
| + | Dim I As Long | ||
| + | |||
| + | Set db = CurrentDb() | ||
| + | Set rs = _ | ||
| + | db.OpenRecordset(" | ||
| + | rs.AddNew | ||
| + | rs(" | ||
| + | rs(" | ||
| + | ..... | ||
| + | rs(" | ||
| + | rs.Update | ||
| + | rs.Close | ||
| + | |||
| + | Set rs = Nothing | ||
| + | Set db = Nothing | ||
| + | |||
| + | End Sub | ||
| + | |||
| + | </ | ||
| + | |||
| + | Das Löschen eines Datensatzes erfolgt bei DAO mit der Methode " | ||
| + | |||
| + | Beispiel: | ||
| + | |||
| + | < | ||
| + | Sub Test8() | ||
| + | Dim db As DAO.Database | ||
| + | Dim rs As DAO.Recordset | ||
| + | |||
| + | Set db = CurrentDb() | ||
| + | Set rs = _ | ||
| + | db.OpenRecordset(" | ||
| + | While Not rs.EOF | ||
| + | If rs(" | ||
| + | | ||
| + | If MsgBox(" | ||
| + | rs(" | ||
| + | "' | ||
| + | vbYesNo + vbQuestion) = vbYes Then | ||
| + | rs.Delete | ||
| + | End If | ||
| + | End If | ||
| + | rs.MoveNext | ||
| + | Wend | ||
| + | rs.Close | ||
| + | |||
| + | Set rs = Nothing | ||
| + | Set db = Nothing | ||
| + | |||
| + | End Sub | ||
| - | - Wählen Sie das Menü // | + | </code> |
| - | - Setzen Sie eine Referenz auf " | + | |
| - | - Nehmen Sie in Ihrer VBA-Routine die folgende Deklaration bzw. die folgenden Anweisungen auf: | + | |
| - | Dim db As DAO.Database | ||
microsoft/access.1435823521.txt.gz · Zuletzt geändert: (Externe Bearbeitung)