Benutzer-Werkzeuge

Webseiten-Werkzeuge


microsoft:access

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
microsoft:access [2020/08/28 13:27] – [Recordsets zum Bearbeiten von Datensätzen] franzmicrosoft:access [2021/11/04 18:59] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 4: Zeile 4:
  
 eine Anleitung für [[https://support.office.com/de-de/article/beispiele-für-die-verwendung-von-datumsangaben-als-suchkriterien-in-access-abfragen-aea83b3b-46eb-43dd-8689-5fc961f21762|Datumsfunktionen]] in Abfragen eine Anleitung für [[https://support.office.com/de-de/article/beispiele-für-die-verwendung-von-datumsangaben-als-suchkriterien-in-access-abfragen-aea83b3b-46eb-43dd-8689-5fc961f21762|Datumsfunktionen]] in Abfragen
- 
  
 ==== Besonderheit beim Export von Datumsfeldern in csv-Dateien ==== ==== Besonderheit beim Export von Datumsfeldern in csv-Dateien ====
Zeile 12: Zeile 11:
 <code> <code>
 NurDatum: NFormat(ZDate([Datum]);"jjjj-mm-tt") NurDatum: NFormat(ZDate([Datum]);"jjjj-mm-tt")
 +
 </code> </code>
   * 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, dass ein Artikel in der KW 50 geliefert wird, kann man mit Hilfe dieser Funktion das Startdatum der Kalenderwoche ermitteln.
 +
 +Übergabeparameter: Kalenderwoche, Jahr\\
 +Rückgabewert:          Startdatum\\
 +Quelle:                       SmartTools Access Weekly 45/2020:
 +
 +<code>
 +Function KWStartDatum(intKW As Integer, _
 +                      intJahr As Integer) As Date
 +  Dim dtStart As Date
 +  Dim dtJahr As Date
 +
 +  KWStartDatum = DateSerial(1980, 1, 1) 'Default: 1.1.1980
 +  If Not IsDate(DateSerial(intJahr, 1, 1)) Then
 +    intJahr = Year(Now) 'Aktuelles Jahr
 +  End If
 +  If intKW <1 Or intKW> 53 Then
 +    dtJahr = DateSerial(intJahr, 1, 1) 'ab 1.1.JJJJ
 +    intKW = KW(dtJahr)
 +    dtStart = dtJahr
 +  Else
 +    dtStart = DateSerial(intJahr, 1, 1) 'ab 1.1.JJJJ
 +  End If
 +  Do Until KW(dtStart) = intKW
 +    DoEvents
 +    dtStart = dtStart + 1
 +  Loop
 +
 +  KWStartDatum = dtStart
 +
 +End Function
 +
 +</code>
  
  
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 "CreateDatabase()" wie folgt ein:\\ +Um per VBA eine leere neue Datenbank anzulegen, setzen Sie die Funktion "CreateDatabase()" wie folgt ein: \\  \\ - Wechseln Sie mit **Alt+F11**  in die VBA-Entwicklungsumgebung.
-\\ +
-- Wechseln Sie mit **Alt+F11** in die VBA-Entwicklungsumgebung.+
  
-   - Wählen Sie das Menü //Extras-Verweise//  an.+  - Wählen Sie das Menü //Extras-Verweise//  an.
   - Setzen Sie eine Referenz auf "Microsoft DAO Object Library 3.6x".   - Setzen Sie eine Referenz auf "Microsoft DAO Object Library 3.6x".
   - 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:
Zeile 44: Zeile 78:
  
 ===== Recordsets zum Bearbeiten von Datensätzen ===== ===== Recordsets zum Bearbeiten von Datensätzen =====
 +
 +entnommen aus den SmartTools Access Weekly 33-35
  
 Um programmatisch auf die Inhalte von Tabellen zuzugreifen, werden "Recordsets" eingesetzt. Ein Recordset ist eine Sammlung von Datensätzen, die in Schleifen durchlaufen und auf verschiedener Art verarbeitet werden kann. Um programmatisch auf die Inhalte von Tabellen zuzugreifen, werden "Recordsets" eingesetzt. Ein Recordset ist eine Sammlung von Datensätzen, die in Schleifen durchlaufen und auf verschiedener Art verarbeitet werden kann.
Zeile 68: Zeile 104:
 Set rs = Nothing Set rs = Nothing
 Set db = Nothing Set db = Nothing
 +End Sub
 +
 +</code>
 +
 +Um sich durch Recordsets zu bewegen oder den Status von Recordsets abzufragen, werden die folgenden Methoden und Eigenschaften verwendet:
 +
 +  * ''rs.RecordCount'': Anzahl Datensätze im Recordset ermitteln
 +  * ''rs.MoveFirst'': Auf den ersten Datensatz springen
 +  * ''rs.MoveLast'': Auf den letzten Datensatz springen
 +  * ''rs.MoveNext'': Zum nächsten Datensatz gehen
 +  * ''rs.MovePrevious'': Zum vorhergehenden Datensatz gehen
 +**ein Beispiel:**
 +
 +<code>
 +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("SELECT * FROM Kunden " & _
 +                     "WHERE Land = 'Deutschland'")
 +  Anz = rs.RecordCount
 +  For I = 1 To Anz
 +    Debug.Print rs("Firma")
 +    rs.MoveNext
 +  Next
 +  rs.Close
 +
 +  Set rs = Nothing
 +  Set db = Nothing
 +
 +End Sub
 +
 +</code>
 +
 +Um einen **Feldinhalt mit DAO zu ändern,**  sind grundsätzlich folgende Schritte notwendig:
 +
 +<code>
 +rs.Edit:                                Datensatz für Bearbeitung vorbereiten
 +rs("Feld")= "NeuerInhalt":              Neuen Inhalt zuweisen
 +rs.Update:                              Datensatz speichern
 +
 +</code>
 +
 +Beispiel:
 +
 +<code>
 +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("Kunden", dbOpenDynaset)
 +  rs.MoveLast
 +  Anz = rs.RecordCount
 +  rs.MoveFirst
 +  For I = 1 To Anz
 +    rs.Edit
 +    rs("UmsatzAktJahr") = 0
 +    rs.Update
 +    rs.MoveNext
 +  Next
 +  rs.Close
 +
 +  Set rs = Nothing
 +  Set db = Nothing
 +
 +End Sub
 +
 +</code>
 +
 +Um neue Datensätze zu einem Recordset hinzuzufügen, verwenden Sie mit DAO die Methode "AddNew". Danach können die einzelnen Felder wie bei einer Änderung mit "rs(<Feldname>) = <NeuerInhalt>" gefüllt werden. Anschließend ist bei DAO ein "Update" notwendig, damit der neue Datensatz gespeichert wird.
 +
 +Beispiel:
 +
 +<code>
 +Sub Test7a()
 +  Dim db As DAO.Database
 +  Dim rs As DAO.Recordset
 +  Dim I As Long
 +
 +  Set db = CurrentDb()
 +  Set rs = _
 +    db.OpenRecordset("Kunden", dbOpenDynaset)
 +  rs.AddNew
 +  rs("Kunden-Code") = "ABCDE"
 +  rs("Firma") = "Testfirma"
 +  .....
 +  rs("Telefon") = "030/123 456"
 +  rs.Update
 +  rs.Close
 +
 +  Set rs = Nothing
 +  Set db = Nothing
 +
 +End Sub
 +
 +</code>
 +
 +Das Löschen eines Datensatzes erfolgt bei DAO mit der Methode "rs.Delete".
 +
 +Beispiel:
 +
 +<code>
 +Sub Test8()
 +  Dim db As DAO.Database
 +  Dim rs As DAO.Recordset
 +
 +  Set db = CurrentDb()
 +  Set rs = _
 +    db.OpenRecordset("Artikel")
 +  While Not rs.EOF
 +    If rs("Auslaufartikel") = -1 And _
 +       rs("Lagerbestand") = 0 Then
 +      If MsgBox("Artikel '" & _
 +                rs("Artikelname") & _
 +                "' löschen?", _
 +                vbYesNo + vbQuestion) = vbYes Then
 +        rs.Delete
 +      End If
 +    End If
 +    rs.MoveNext
 +  Wend
 +  rs.Close
 +
 +  Set rs = Nothing
 +  Set db = Nothing
 +
 End Sub End Sub
  
microsoft/access.1598614062.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki