microsoft:access
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| microsoft:access [2018/11/03 19:25] – [Datumsfunktionen] franz | microsoft:access [2021/11/04 18:59] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 4: | Zeile 4: | ||
| eine Anleitung für [[https:// | eine Anleitung für [[https:// | ||
| - | |||
| ==== Besonderheit beim Export von Datumsfeldern in csv-Dateien ==== | ==== Besonderheit beim Export von Datumsfeldern in csv-Dateien ==== | ||
| Zeile 12: | Zeile 11: | ||
| < | < | ||
| NurDatum: NFormat(ZDate([Datum]);" | NurDatum: NFormat(ZDate([Datum]);" | ||
| + | |||
| </ | </ | ||
| * NurDatum ist das neu formatierte Datumsfeld | * NurDatum ist das neu formatierte Datumsfeld | ||
| * Datum ist das ursprüngliche Datumsfeld, das nicht ausgegeben werden soll | * 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 | ||
| + | |||
| + | </ | ||
| Zeile 29: | 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. | + | |
| - | | + | |
| - | - Setzen Sie eine Referenz auf " | + | - Setzen Sie eine Referenz auf " |
| - | - Nehmen Sie in Ihrer VBA-Routine die folgende Deklaration bzw. die folgenden Anweisungen 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 | ||
| + | |||
| + | </ | ||
| - | Dim db As DAO.Database | ||
microsoft/access.1541269542.txt.gz · Zuletzt geändert: (Externe Bearbeitung)