[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

[MS Access] Anzeige von Tabellenwerten in einem Listenfeld (anhand Fremdschlüssel-ID)

Ziel: Es soll anhand einer ID (t_groupID) eine Anzahl Datensätze aus einer Tabelle geholt und diese in einem Listenfeld (lf_users) dargestellt werden.

  1. Textfeld t_groupID mit ID-Verknüpfung auf dem Formular erstellen
  2. Listenfeld einfügen und Datensatzherkunft eintragen (Wert im Textfeld t_groupID nutzen)
  3. SELECT [user].[ID], [user].[Name], [user].[Vorname]
    WHERE (([user].[gruppen_ID]) LIKE "" & Forms!MeinFormular!t_groupID.Text & "")
    ORDER BY [user].[Name];
    
  4. Formular->Eigenschaften->Ereignis->Beim Anzeigen
  5. Private Sub Form_Current()
       t_GruppenID.SetFocus 'Focus muß gesetzt werden, da sonst Laufzeitfehler
       lf_users.Requery
    End Sub
    

ODER:

  1. Listenfeld einfügen und Datensatzherkunft (Tabelle/Abfrage) eintragen (Spalten-Wert “ID” aus dem akt. Datensatz im Formular nutzen)
  2. SELECT [user].[ID], [user].[Name], [user].[Vorname]
    WHERE (([user].[gruppen_ID]) LIKE "" & Forms!MeinFormular!ID & "")
    ORDER BY [user].[Name];
    
  3. Formular->Eigenschaften->Ereignis->beim Anzeigen
  4. Private Sub Form_Current()
       lf_users.Requery
    End Sub
    

[MS Access] Anzeige von Spaltenwerten in Textfeldern nach Selektion eines Datensatzes

Ziel: es soll auf einem Formular im Kombinationsfeld (k_username) ein Benutzername ausgewählt werden und dazu Adressdaten angezeigt werden

  1. Datensatzherkunft des Kombinationsfeldes k_username
  2. SELECT user.ID, user.name, user.strasse, user.telefon
    FROM users
    ORDER BY user.name;
    
  3. Gebundene Spalte: 1
  4. Spaltenanzahl: 4
  5. Spaltenbreiten: 0cm;2,542cm;0cm;0cm
  6. auf der Form nun entsprechende Bezeichnungsfelder für die anzuzeigenden Spaltenwerte einfügen (Name, Straße, Telefon)
  7. nun die Ereignisprozeduren (“Beim Anzeigen” und “Nach Aktualisierung”), welche die Spaltenwerte in die Bezeichnungsfelder schreiben, editieren
  8. ' Beim Anzeigen
    Private Sub Form_Current()
        If Not IsNull(Me!k_username) Or Not Me!k_username= "" Then
            bzf_username.Caption = Me![k_username].Column(2)
            bzf_strasse.Caption = Me![k_username].Column(3)
            bzf_telefon.Caption = Me![k_username].Column(5)
        Else
            bzf_username.Caption = ""
            bzf_strasse.Caption = ""
            bzf_telefon.Caption = ""
        End If
    End Sub
    
    ' Nach Aktualisierung
    Private Sub k_username_AfterUpdate()
        If Not IsNull(Me!k_username) Or Not Me!k_username= "" Then
            bzf_username.Caption = Me![k_username].Column(2)
            bzf_strasse.Caption = Me![k_username].Column(3)
            bzf_telefon.Caption = Me![k_username].Column(5)
        Else
            bzf_username.Caption = ""
            bzf_strasse.Caption = ""
            bzf_telefon.Caption = ""
        End If
    End Sub
    

[MS Access] Menüleisten aublenden

  • die Menüleisten können beim Start des Hauptformulars einfach ausgeblendet werden
  • dazu auf das Formular rechts klicken->Eigenschaften
  • im Eigenschaftsfenster in der Combobox oben “Formular” wählen
  • auf den Reiter “Ereignis” klicken
  • bei “Bei Laden” doppelklicken und unten stehenden Code eintragen
Private Sub Form_Load()
    CommandBars.ActiveMenuBar.Enabled = False
End Sub