Steuerelement in Access: Direkt mit Duplikat absichern

Ausgansgsituation für die Erweiterung eines Steuerelement in Access:

In einer Tabelle haben wir ein Feld definiert, welches ein SQL-Statement beinhaltet. Da die Länge der SQL-Anweisung sehr groß sein kann, ist der Felddatentyp des Steuerelement in Access ein langes Textfeld. Nachvollziehbar finden wir es ja,  dass eine Länge bis 255 Zeichen nicht gereicht hätte.

Nur kurz sei die Funktion des SQL-Code hier erwähnt: Es ist ein Transact-SQL-Code, der per Passthrough an einen MS SQL-Server gesendet wird und dort Objekte (tables, views, functions, stored procedures, triggers…) erzeugt. Diese Objekte können auch wieder entfernt werden, somit ist dieses Modul eine echte Objektverwaltung für einen MS-SQL-Server.

Anforderung:

Nun können Sie sich sicherlich auch vorstellen, dass der SQL-Code ab und zu geändert werden muss, um z.B. ein neues Feld in einer Tabelle einzufügen, oder Felddatentypen zu verändern, etc. Dabei ist es wichtig, dass der alte SQL-Code nicht immer direkt überschrieben wird sondern erhalten bleiben kann. Aus diesem Grund möchten wir mit einem weiteren Feld in der gleichen Tabelle den alte SQL-Code speichern. Da es für uns wichtig ist, keinen zusätzlichen Platz zu verlieren – das TransactSQL-Code ist ja schon ein großes Textfeld -,  wollen wir beide Tabellenfelder mit dem gleichen Steuerelement nutzen. Somit soll ein Switch genutzt werden, welches zwischen den beiden Felder TransactSQL und TransactSQL_old wechselt.

Lösung:

Unter das Textfeld TransactSQL setze ich einen kleinen Button:

Wenn dieser geklickt wird, werden in der Laufzeit 3 Eigenschaften verändert:

  • Zuweisung Steuerelement
  • Beschrifttung textfeld
  • Beschriftung Button

Hier ist der Code für die Steuerung des Steuerelement in Access:

Private Sub cmdSwitch_Click()
If Me.TransactSQL.ControlSource = „TransactSQL“ Then
   Me.TransactSQL.ControlSource = „TransactSQL_old“
   Me.cptTransSQL.Caption = „TransactSQL_old“
   Me.cmdSwitch.Caption = „… back to root“
Else
   Me.TransactSQL.ControlSource = „TransactSQL“
   Me.cptTransSQL.Caption = „TransactSQL“
   Me.cmdSwitch.Caption = „… goto old“
End If

End Sub

Haben Sie Interesse an einer eigenen Lösung oder an der Erweiterung Ihrer bestehenden Lösung? Erfahren Sie hier mehr!