[MS Access] Formulardaten für eine parametrierte Abfrage nutzen

Im Beispiel wird z.B. angenommen, dass ein Formular “Adressen” existiert, in dem Datensätze, z.B. Adressdaten, angezeigt werden. Die dort verarbeitete Primärschlüsselspalte “ID” wird in der Abfrage genutzt, um bestimmte Kontakte, die mit dieser Adresse in Zusammenhang stehen, zu suchen.

Wichtig dabei ist das Schlüsselwort “Forms” vor dem Namen des verwendeten Formulars.

SELECT * FROM Kontakte WHERE Spalte LIKE Forms!Adressen!ID

[MS Access] Primärschlüssel (Autowerte) zurücksetzen

Manchmal ist es notwendig den Wert eines Primärschlüssels auf den Startwert (1) zurückzusetzen. Es gibt zwei Möglichkeiten:

  1. Unter “Access-Start-Symbol->Verwalten->Datenbank komprimieren und reparieren” kann die akt. geöffnete DB komprimiert und repariert werden, dabei werden alle Autowerte (Primärschlüssel) von allen leeren Tabellen auf 1 zurückgesetzt sowie alle überflüssigen Daten gelöscht. Falls es Probleme gibt, hat Microsoft hier noch ein paar Lösungen parat: Link
  2. per SQL-Anweisung bei einer bestimmten Tabelle + Primäschlüsselspalte den Autowert auf einen best. Wert setzen:
    ALTER TABLE TabellenName ALTER COLUMN SpaltenName COUNTER(1, 1)
    

[MS Access] nach Zeitweiten suchen

  • Suchdatum ist im Format ‘YYYY-MM-DD hh:mm:ss’, verkürzt auch ‘YYYY-MM-DD’
  • statt ‘-‘ können auch ‘/’ verwendet werden
  • die Datumswerte müssen zwischen #…# stehen
SELECT Datum, Name
FROM Tabelle
WHERE Datum >= #2008-08-01 00:00:00# AND Datum <= #2008-10-01 01:00:00#
ORDER BY Datum

[MS Access] Verknüpfung von drei Tabellen

  • im Beispiel wird für eine Lizenz (5) das zugehörige Produkt und Projekt eines Nutzers (ID = 1) aufgelistet
  • zu beachten ist die Klammerung nach FROM und jeweils nach Abschluss eines ON-Statements
SELECT Pr.Name, Prj.Name, Lic.RegDate, Lic.ExpDate
FROM ((Licenses AS Lic
INNER JOIN Products AS Pr
ON Lic.ProductID=Pr.ID)
INNER JOIN Projects AS Prj
ON Lic.ProjectID=Prj.ID)
WHERE Lic.ID LIKE 5 AND Lic.UserID LIKE 1

[MS Access] Verknüpfung von zwei Tabellen

  • im Beispiel werden alle Lizenzen mit zugehörigen Produktnamen eines Nutzers (ID = 1) aufgelistet
SELECT Lic.ID, Lic.ExpirationDate, Pr.Name
FROM (Licenses AS Lic
INNER JOIN Products AS Pr
ON Lic.ProductID=Pr.ID)
WHERE Lic.UserID LIKE 1