Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

41
Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011

Transcript of Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Page 1: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Access Workshop 2011

Datenbanken fürs Nirwana

Stefan Zink, November 2011

Page 2: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Themen dieser Präsentation

• Druckerverwaltung

• Add-Ins und Verweise

• Updates verteilen (Frontend)

• Update des Backend (Strukturänderung)

• Lizenzierung, Softwareschutz, pay per use

• Anbindung an 2nd-Party-Produkt (Wenn die Zeit reicht)

Page 3: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Zunächst ein paar Bilder um auf das Thema einzustimmen

(Projekte auf die ich stolz bin, was ich also wirklich kann)

Page 4: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 5: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 6: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 7: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 8: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Barcode-DruckerCitizen-Thermo-

Transfer_Drucker

Dymo-Labelwriter

Page 9: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Anforderungen

• Druck muss mit einem Klick funktionieren

• System muss erkennen ob und welcher Drucker angeschlossen ist

• Druckeranbindung kann lokal oder über Netzwerk sein

• Funktionen müssen auch in MDE funktionieren

Page 10: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 11: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

ZaehlerDym = 0ZaehlerCit = 0StrDymo = "Dymo"StrCitiz = "Citiz"

For Each prtloop In Application.Printers StrPrtName = prtloop.DeviceName If InStr(1, StrPrtName, StrDymo) Then Me.Kmb_DruckerSelect.AddItem prtloop.DeviceName ZaehlerDym = ZaehlerDym + 1 Else If InStr(1, StrPrtName, StrCitiz) Then Me.Kmb_DruckerSelect.AddItem prtloop.DeviceName ZaehlerCit = ZaehlerCit + 1 End If End If

Verfügbare Dymo- und Citizen-Drucker suchen

Page 12: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Dim stDocName As String Dim a As String

P_StrAktuelleArtikelNr = Me.Artikelnummer a = Me.Kmb_DruckerSelect Select Case True Case a Like "*Dymo*" Application.Printer = Application.Printers(a) stDocName = "Ber_Lageretiketten" DoCmd.OpenReport stDocName, acViewNormal Set Application.Printer = Nothing Case a Like "*Citi*" Application.Printer = Application.Printers(a) stDocName = "Ber_LagerEtikettCitizien" DoCmd.OpenReport stDocName, acViewNormal Set Application.Printer = Nothing Case Else MsgBox ("Kein Drucker ausgewählt!") End Select

Page 13: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Sonst noch zu beachten:

• Solange der entsprechende Bericht bearbeitet wird muss der zugehörige Drucker als Standard ausgewählt sein!

Page 14: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Und Ausserdem:

• Beim jeweiligen Drucker muss unbedingt das eingelegte Papierformat auch eingestellt sein!

Page 15: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Add Ins und Verweise

???

Page 16: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Version beachten!

Page 17: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Add-Ins / Verweise

• Entwicklung unter Office 2007 im Format 2002 zwar möglich, aber nach MDE-Erstellung läuft es nicht mehr unter 2002

• MDE-Erstellung unbedingt unter 2002

• Speziell bei T-BarCode nur gleiche Versionen einsetzen

Page 18: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Update des Frontend

???

Page 19: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Anforderungen

- Automatischer Download von WWW

- Automatische Verteilung im Netz

- Benutzereingriffe reduzieren

- Zuverlässige Ausführung in allen Umgebungen

- Unkomplizierte Umsetzung

Page 20: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Erster Ansatz

• DBUpdate.exe von Gunter Avenius(www.avenius.de)

• Vorteile:• - einfach zu bedienen, schnell, effektiv und

viele Möglichkeiten• Nachteile:• - Unter Windows 7 nicht einsetzbar da

Schreibrechte in Windows-Verzeichnis notwendig (meines Wissens!)

Page 21: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Bessere Lösungen

• Projekt noch nicht umgesetzt!

• Im Moment verarbeite ich viele einzelne Lösungsansätze, mit freundlicher Hilfe von- Thomas Möller- Dirk Eberhardt- und vielen anderen.

Danke.

Page 22: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Update des Backend

???

Page 23: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Anforderungen

• Im Lauf der Weiterentwicklung wird sicher das BE erweitert, wie geht das?

• Es muss eine automatisierte Update-Routine her

• Die Update-Routine muss kumulierend sein, man weiß ja nie welches Update der Kunde wirklich einspielt

• Versionsvergleich zwischen FE und BE

Page 24: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Die Lösung

Lösung für die Techniken

- DAO

- ADO

- SQL

http://www.kulpa-online.com/assets/files/tutorials/strukturaenderung.pdf

Page 25: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Die einzelnen Schritte….

Page 26: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 27: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Versions-Tabelle im BE

Page 28: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Routine für Versionsvergleich• Dim MaxAW_BE As Integer• Dim MaxAW_FE As Integer

• 'Aktuelle Version des Frontend auslesen• MaxAW_FE = DMax("VFE_Autowert", "Tbl_VersionFE")• MaxAW_BE = DMax("fAutoWert", "Tbl_VersionDaten")

• P_StrAktuelleVersion = DMax("VFE_Version", "Tbl_VersionFE", "VFE_Autowert =" & MaxAW_FE)• P_StrBenoetigteVersionDaten = DLookup("VFE_MindVersBE", "Tbl_VersionFE", "VFE_Autowert =" &

MaxAW_FE)

• 'Aktuelle Version des Backend aussuchen• P_StrAktuelleVersionDaten = DLookup("VER_Version", "Tbl_VersionDaten", "fAutoWert =" & MaxAW_BE)• 'Abgleichen ob die MMC_Daten.mdb auf den richtigen Stand hat• If VersChange(P_StrAktuelleVersionDaten, P_StrBenoetigteVersionDaten) = True Then• MsgBox ("Die Aktuelle Version der MMC-Daten ist veraltet." & vbCrLf & _• "Aktuelle Version: " & P_StrAktuelleVersionDaten & vbCrLf & _• "Benötige Version: " & P_StrBenoetigteVersionDaten & vbCrLf & _• "Das Programm wird beendet. Bitte spielen Sie das aktuelle Update ein."), _• vbOKOnly + vbCritical, "Achtung! Falsche Version"• DoCmd.Quit• End If

Page 29: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Versionsvergleich• Function VersChange(ByVal Vers1 As String, ByVal Vers2 As String) As

Boolean• Dim var1 As Variant, var2 As Variant, i As Integer• var1 = Split(Vers1, ".")• var2 = Split(Vers2, ".")• For i = 0 To 2• If CLng(var2(i)) > CLng(var1(i)) Then• VersChange = True• Exit For• ElseIf CLng(var2(i)) < CLng(var1(i)) Then• VersChange = False ' Zeile verzichtbar durch Vorbelegung der

Variablen mit False• Exit For• End If• Next i• End Function

Page 30: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 31: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Beispiel Felder hinzufügen• 'Neues Feld anlegen inkl. aller Abfragen:• 'Existiert Tabelle?• 'Existiert Feld?• 'Sonst: Tabelle anlegen• Public Function NeuesFeldAnfügen(Str_Table As String, Str_Field As String, Str_FeldType As

DAO.DataTypeEnum, Optional Lng_FieldSize As Long = 0) As Boolean

• 'prüfen ob die Tabelle vorhanden ist• If TableExistsDAO(P_db, Str_Table) = False Then• 'sonst erstellen• DAO_CreatedNewTable P_db, Str_Table• End If• 'prüfen ob Feld exisitert• If DAO_FieldExists(P_db, Str_Table, Str_Field) = False Then• 'sonst erstellen• DAO_CreateField P_db, Str_Table, Str_Field, Str_FeldType, Lng_FieldSize• End If

• Exit Function

• End Function

Page 32: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.
Page 33: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Kopierschutz und Lizenzierung

???

Page 34: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Anforderungen

• Softwarenutzung muss bezahlt werden

• Weitergabe der Datenbank muss so schwer wie möglich sein

• Bezahlung pro Arbeisplatz

• Mehrfachanmeldung an Terminalserver muss möglich sein

• Kosten müssen überschaubar sein

Page 35: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Meine gewählte Lösung:

Hardware-Dongle

Page 36: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Besonderheiten

• Lieferant: Fa. SG-Intec in Kiel• Kosten: ab 19,00 EUR Netto / Stck.• Einfach zu handeln• ohne Installation (Plug and Play)

(nur 1 DLL in System32 Verzeichnis)• Sehr sicher und Zuverlässig• Ausbaustufen einfach Lizenzierbar• Gigantische Variationsmöglichkeiten

Page 37: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Wichtig bei Access-DB:

Ganz zu beginn muss eine Globale Variable mit den Wert False gesetzt werden, diese darf sich erst ändern wenn wirklich alle Bedingungen der

Dongle-Prüfung erfolgt sind.

Access ist nämlich sehr Fehlertolerant, ein Fehlen der notwendigen DLL würde mit einer „Rüge“ kommentiert, aber die Prozedur würde fortgesetzt,

mit der Konsequenz dass das Programm startet obwohl kein Dongle angeschlossen ist.

Page 38: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Weitere Vorteile

• Es gibt auch Dongle mit integrierter Uhr, damit kann im Dongle ein Ablaufdatum definiert werden (Da liegen die Kosten aber bei rund 50 EUR / Stck… )

• Es können auch Werte in das Dongle geschrieben werden (z.B. Personalisierung)

• Durch Produkt-ID sind verschiedene Ausbaustufen aktivierbar

• Durch WELTWEIT eindeutige Seriennummer sind weitere Zuordnungen möglich

Page 39: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Anbindung an vorhandene

Systeme???

Page 40: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

Meine Erkenntnis

• Ich habe es für`s erste gelassen!

• Wenn dann Datenübernahme per Import

• Aber auch das ist kritisch

• Es bleibt vorerst bei einer Insellösung

Page 41: Access Workshop 2011 Datenbanken fürs Nirwana Stefan Zink, November 2011.

E N D E! (Danke.)

Und hier dann mein nächstes Projekt: