Access Blog

Access Anwendungsentwicklung

Arbeiten mit ISO Passmaßen

Mittwoch 6. Januar 2010 von Andreas Vogt

Wenn Sie in Ihrer Anwendung ISO Passmaße nach ISO 286 benötigen, so findet man im Internet zahlreiche Excel-Tabellen die sämtliche Abmaße für Bohrung und Welle enthalten.
Ich bin für mein Projekt auf der Seite www.siritec.com fündig geworden. Siritec stellt das Programm “PMTabelle V4.0.1″ für Solid Edge kostenlos zur verfügung, dieser Download enthält u.a. die Excel-Datei PassMassTabelle.xls, auf deren Struktur der folgende Programmcode aufbaut. Die Excel Arbeitsmappe enthält über 60 Arbeitsblätter, für jede Toleranzlage und Bohrung/Welle je eine Seite bei einem Nennmaß bis 500mm.

Der Aufbau im Einzelnen ist folgender:

  • Spalte 1: Nennmassbereich untere Grenze (ausschließend)
  • Spalte 2: Nennmassbereich obere Grenze (einschließend)
  • Spalte 3 bis 38: Toleranzgrade 1 bis 18, wobei jedes Toleranzfeld 2 Spalten umfasst, für die untere und für die obere Abmaße.
  • Zeile 2: Toleranzgrade
  • Zeile 3: Kennung untere Grenze/obere Grenze
  • Zeile 4-28 Toleranzen in µm

Was jetzt folgt ist die Excel Automation als late Binding, die ich nur in Ausschnitten zeigen und erleutern möchte.

Public UTG AS Double
Public OTG AS Double
...
Sub getPassMasse(istmass, Toleranzlage, Toleranzgrad)
    Dim ExcelApp AS Object
    Dim ws AS Long 'Worksheet - Zähler
    Dim tol AS long  'Toleranzen - Zähler
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Workbooks.Open FileName:="c:\PassMassTabelle.xls", ReadOnly:=True
    With ExcelApp
        For ws = 1 To .Sheets.Count    'alle Arbeitsblätter durchsuchen
            If ExcelApp.Sheets(ws).Name = Toleranzlage Then
                For tol = 4 To 28
                    If istmass <= CDbl(ExcelApp.Sheets(ws).Cells(tol, 2)) And istmass > CDbl(ExcelApp.Sheets(ws).Cells(tol, 1)) Then
                        UTG = ExcelApp.Sheets(ws).Cells(tol, 2 * Val(Toleranzgrad) + 1)
                        OTG = ExcelApp.Sheets(ws).Cells(tol, 2 * Val(Toleranzgrad) + 2)
                        GoTo Ausstieg
                    End If
                Next tol
            End If
        Next ws
    End With

Ausstieg:
    Excel_Terminate
End Sub

Zuerst wird das Excel Objekt instanziert und die Arbeitsmappe PassMassTabelle.xls geöffnet.
In der äußeren Schleife werden alle 69 Arbeitsblätter durchsucht nach dem, welches der entsprechenden Toleranzlage entspricht. Ist das Abeitsblatt gefunden werden in einer inneren Schleife die Zeilen 4 bis 28 durchlaufen, und nach dem Nennmassbereich gesucht, in diesen das Istmass gehört. Ist der richtige Bereich gefunden werden die Toleranzen ausgelesen. die richtigen Zellen findet man über den Toleranzgrad. Beispielsweise ergibt Toleranzgrad 7 die Zellen 15 und 16 der entsprechenden Zeile. So wird auf eine zusätzliche Schleife verzichtet. Sind die Toleranzen gefunden erfolgt der Ausstieg über eine Sprungmarke.
Was man bei der Excel Automation immer machen sollte ist eine Prüfung ob Excel schon geöffnet ist oder nicht, damit die Instanzierung des Excel Objektes auch funktioniert.
Die Funktion Excel_Terminate dient dazu, Excel zu schließen oder nur die Arbeitsmappe zu schließen, je nach dem ob beim Start Excel schon geöffent war.
Zu beidem gibts in den Newsgroups bzw. einschlägige Foren genug Beispiele.

UTG und OTG sind unteres und oberes Abmass in µm. das bedeutet, dass das Istmass du beiden hinzuzuaddieren ist, um die Toleranzgrenzen zu erhalten.

Zur Auswahl einer Passung kann man sich z.B. ein kleines Popup-Formular erstellen, das beim schließen die gefundenen Toleranzgrenzen in das Eingabeformular eintragen. Nachfolgend noch ein paar Screenshots wie das aussehen könnte.

AV 2010

Kategorie: VBA Code | Keine Kommentare »

Plausibilitätsprüfung von Messwerten

Dienstag 6. Oktober 2009 von Andreas Vogt

Bei der manuellen Messwerterfassung hat man immer die Unsicherheit des Faktors “Mensch” zu berücksichtigen. Zahlendreher oder zuviele Nullen sind da schnell mal eingegeben, und im Nachhinein schwer zu finden. Da ist es besser man macht eine Plausibilitätsprüfung indem man das Formular ungebunden macht und bei klick auf den Speicherbutton die Eingabewerte überprüft.

Z.B. auf die Anzahl der Stellen, ob positiv oder negativ, ob größer oder kleiner von einem bestimmten Wert, oder ob in einem bestimmten Zahlenbereich liegend.

Das Problem daran ist, dass sich diese Begrenzungen ständig ändern können. Dann muss man den VBA-Code durchsuchen wo man diese Plausibilitätsprüfung gemacht hat. Besser wäre das doch wenn man in einer Tabelle alle Plausibilitäten einfach ablegen könnte von wo aus sie einfach zu administrieren sind. Und genau das wollen wir jetzt machen.

Zuerst die Tabelle.
Jeder Messwert hat eine bestimmte Nummer oder Namen. Außerdem benötigen wird ein Vergleichsmuster, und eine Werteliste mit den einzelnen Werten gegen den der Messwert abgeprüft wird.

Ein Datensatz in dieser Tabelle sieht z.B. so aus:

ID Bezeichner Muster Werteliste
1 MP1 > {1} AND < = {2} AND <> {3} 2;5;4

Im Muster sieht man Platzhalter in geschweiften Klammern stehen, diese werden dann mit den Werten aus der Werteliste ergänzt.
Den ganzen Beitrag lesen »

Kategorie: VBA Code | Keine Kommentare »

XML Dokumente parsen

Mittwoch 2. September 2009 von Andreas Vogt

XML Dokumente sind hirachisch strukturierte Dokumente die aus einzelnen Knoten bestehen, in denen sich Informationen und weitere Unterknoten befinden können. Um dies zu verdeutlichen habe ich eine einfache Struktur erstellt, eine Bücherliste mit 3 Einträgen:

xml1

Um Informationen aus XML Dokumenten per VBA einzulesen bietet sich das DOM-XML an. Genaue Informationen zum DOM-XML findet man z.B. auf dieser MSDN-Seite: http://msdn.microsoft.com/de-de/library/aa468547.aspx

Um die benötigten Objekte zu erstellen benötigt man bei early-Binding einen Verweiss auf die XML Bibliothek. Dazu den Verweis Microsoft XML, v3.0 einbinden. Es gibt auch neuere Versionen dieser Bibliothek, doch die 3.0 genügt vollkommen für diese Zwecke und hat sich bewährt.

Danach kann man das benötigte Objekt deklarieren:
Dim objDomDoc As New DOMDocument

Um auf die Knoten zugreifen zu können benötigt man ein weiteres Objekt:
Dim objNode As IXMLDOMNode

Zuerst wird die XML-Datei geöffnet:

Dim FileName As String
Filename = "c:\test\myXMLFile.xml"
objDomDoc.async = False
objDomDoc.Load Filename

Dann das Objekt für den Wurzel-Knoten gesetzt:
Set objNode = objDomDoc.documentElement
Den ganzen Beitrag lesen »

Kategorie: VBA Code | Keine Kommentare »

SQL/Access Anwendertage

Freitag 17. Juli 2009 von Andreas Vogt

In Fulda finden vom 22. bis 24. November 2009 die SQL/Access Anwendertage statt.
Die Schwerpunkte liegen diesmal auf:

“Datenmanagement, Reporting und Analyse
Kompetenz für den professionellen Umgang mit SQL Server und Access”

Mit dabei ist auch MVP SQL-Profi Ruprecht Dröge, den die einen oder anderen vieleicht schon von den Microsoft Webcasts her kennen.
Teilnehmen lohnt sich wie immer bei den Anwendertagen, ich habe schon selbst an mehreren Veranstaltungen teilgenommen und rate es jedem der beruflich mit Access/SQL zu tun hat.

Anwendertage_SQL-Access

Link zum Anbieter: www.anwendertage.de/sql09

AV 2009

Kategorie: Events und Trainings | Keine Kommentare »

Grundlagen des Fehlermanagements

Freitag 17. Juli 2009 von Andreas Vogt

Fehlermanagement im VBA-Code ist keine lästige Pflichtübung für den Entwickler, sondern essentiell wichtig für eine funktionierende Access-Anwendung und liefert wichtige Informationen zur Korrektur und Optimierung von VBA-Code.

Softwarefehler
Befassen wir uns erst mal mit dem Begriff des Fehlers. Wie üblich gibts in Deutschland auch dafür eine allgemeine Norm: Nach DIN EN ISO 8402 ist ein Fehler gleichzusetzen mit der Nichterfüllung einer festgelegten Forderung. Man könnte einen Fehler auch als eine Nicht-Konformität bezeichnen.

Und da fängt es an spannend zu werden. Forderungen können z.B. vom Kunden in Form von Lastenheften existieren. Das wäre auch der Idealfall, da dann die Forderungen exakt umrissen sind und der Entwickler zielgerichtet diese erfüllen kann. Was aber wenn kein Lastenheft existiert? Das ist ein Dilemma in das sich dann jeder Entwickler begibt. Er bekommt dann meist scheibchenweise die benötigten Informationen, mal als Email oder per Post und im schlechtesten Fall mündlich per Telefon oder in einem Gespräch mitgeteilt. Da heißt es dann nur: “wer schreibt der bleibt”, also mitprotokollieren und am besten vom Gesprächspartner gegenzeichnen lassen.

Auftretende Fehler bei der VBA Programmierung lassen sich grob in 5 Kategorien einteilen:

  • Fehlerhafter VBA-Code, z.b. ein Überlauf durch falschen Variablentyp
  • Fehlerhafte Interaktion des Benutzers, z.B. fehlende oder fehlerhafte Eingabe
  • Fehler durch Wechselwirkung mit der Hardware, z.B. defekte Speicherbausteine
  • Fehler durch Wechselwirkung mit Software, z.B. Virenscanner, Firewall etc.
  • Und zuletzt noch Fehler durch Versionsänderung benuzter Komponenten, z.B. ActiveX Komponenten

Den ganzen Beitrag lesen »

Kategorie: Datenbankdesign, Software | Keine Kommentare »

prio.conference – die Konzeptkonferenz für .NET-Entwickler

Donnerstag 16. Juli 2009 von Andreas Vogt

Am 28. – 29. Oktober 2009 findet die diesjährige prio.conference mit Schwerpunkt User Interface in München statt.

Vor wenigen Jahren durfte ich mich selbst von der Qualität der Vorträge überzeugen während der prio in BadenBaden. Ein Muss für jeden .NET Entwickler.

Auszug aus der Beschreibung des Veranstalters:

Die Konzeptkonferenz für .NET-Entwickler der

dotnetpro

Thema: User Interface

Architektur. Technologie. Design.

28. – 29. Oktober 2009 in München

Selbst das beste Programm wird zum Alptraum, wenn Oberfläche und Bedienung nicht passen. Unergonomisch aufgebaut, unintuitive Bedienung oder schlicht Fehler in der Architektur machen aus einer hilfreichen Software die absolute Katastrophe.

Dem will die prio.conference 2009 Einhalt gebieten. In rund 30 Sessions erfahren Sie, worauf bei der technischen Architektur und dem Design der Oberfläche zu achten ist. Lernen Sie, welche Technologien sich für welchen Einsatzzweck anbieten. Muss es beispielsweise unbedingt ASP.NET sein, wenn ein Programm über das Web bedient wird, oder kann auch eine WPF-Anwendung die Bedienung sogar noch vereinfachen?

Kommen Sie vom 28. – 29. Oktober 2009 in das Marriott Hotel nach München und holen Sie sich Expertenwissen aus erster Hand, damit Ihre Software künftig noch besser bedienbar ist. Denn nicht vergessen: Programmierer schreiben Programme in den meisten Fällen für Menschen. Und die sollten mit Ihrer Software auch umgehen können.

Link zur Seite: www.prioconference.de

AV 2009

Kategorie: Events und Trainings | Keine Kommentare »

OpenSQL Camp auf der FrOSCon 2009

Mittwoch 8. Juli 2009 von Andreas Vogt

Während der FrOSCon 2009, eine zweitägige Konferenz rund um die Themen Freie Software und Open Source, findet in St. Augustin nahe Bonn eine zweitägige Subkonferenz zum Thema Open-Source Datenbanken und verwandte Technologien statt.

Informieren könnt ihr euch auf dieser Seite:www.froscon.de/…

AV 2009

Kategorie: Events und Trainings | Keine Kommentare »

Office 2010 – kein Undo, kein Return

Samstag 16. Mai 2009 von Andreas Vogt

Jetzt ist es durchsgesickert, Office 2010 wird eine Sparversion.
Es gibt kein Undo mehr, Return soll auch nicht mehr funktionieren, und das Schlimmste: Es gibt keine Controls mehr.

Wie – glaubt ihr nicht? Ihr glaubt ich veräppel euch?

Na dann seht doch mal selbst im aktuellen Trailer zu Office 2010:
http://www.office2010themovie.com/

Ich hatte doch recht oder?
AV 2009

Kategorie: Allgemein | Keine Kommentare »

Update für Microsoft Visual Basic 6.0 SP6

Donnerstag 7. Mai 2009 von Andreas Vogt

Microsoft stellt ein kummulatives Update für Anwender von Visual Basic 6 Service Pack 6 zur Verfügung. Dieses Update schließt eine Sicherheitslücke im besagten Service Pack.

Angreifer könnten Windows basierte Systeme attackieren und die Sicherheit gefährden und sogar die komplette Kontrolle über den Rechner erlangen. Dieses Update trägt zum Schutz vor solchen Angriffen bei.

Link zum Update: http://www.microsoft.com/downloads/details…
Quelle: Microsoft.com

AV 2009

Kategorie: Allgemein | Keine Kommentare »

Cloud-Computing-Lösungen von Microsoft ab sofort verfügbar

Dienstag 28. April 2009 von Andreas Vogt

Wie aus einer Pressemitteilung vor wenigen Tagen zu erfahren war, sind die neuen Cloud-Computing-Anwendungen nun verfügbar. Firmenkunden haben ab sofort die Möglichkeit, Microsoft-Produkte wie Microsoft Office Sharepoint Server oder Microsoft Exchange Server auch als Online-Version zu nutzen für einen monatlichen Beitrag pro Anwender.

Es gibt verschiedene Dienste und Pakete wie z.B.:

  • Microsoft Exchange Online (inklusive Exchange Hosted Filtering und ForeFront for Exchange) ist ein Messaging-Dienst, der auf dem Microsoft Exchange Server 2007 basiert.
  • Microsoft SharePoint Online (inklusive ForeFront for SharePoint), ein Dienst, der dem Anwender eine hoch integrierte, virtuelle Umgebung für die unternehmensweite Zusammenarbeit bereitstellt.
  • Microsoft Office Communications Online ist ein Dienst, der eine sichere Kommunikation über ein textbasiertes Instant Messaging bereitstellt.
  • Microsoft Office Live Meeting, erlaubt Anwendern mit Kollegen und Kunden Webkonferenzen, Trainings und Online-Events abzuhalten.

Weitere Informationen über die Microsoft Online Services können hier abgerufen werden:
www.microsoft.de/online

Quelle: Microsoft Presseservice

AV 2009

Kategorie: Allgemein | Keine Kommentare »

Reguläre Ausdrücke verwenden

Montag 20. April 2009 von Andreas Vogt

Mal angenommen Sie wollen Eingaben in einem ungebundenem Formular auf ihre Richtigkeit prüfen. Eine geläufige Vorgehensweise wäre z.B. den Feldinhalt gegen Null zu prüfen, oder die Länge auf eine bestimmte Mindestanzahl an Zeichen. Das ist alles aber ziemlich ungenau und lässt meist großen Spielraum bei der Falscheingabe.

Eine alternative Möglichkeit ist es sogenannte Reguläre Ausdrücke (Regexp, regular expressions) zu verwenden, welche in vielen Entwicklungssprachen und vorallem in Scriptsprachen wie PHP bekannt sind.

Reguläre Ausdrücke bestehen aus einem Muster, das in Begrenzer eingeschlossen wird, sowie aus verschiedenen Schaltern, den Modifizierern. In VB/VBA wurde allerdings auf die Begrenzer verzichtet, und die Modifizierer sind aus der Zeichenkette – welche dem regulären Ausdruck entspricht – ausgegliedert als Eigenschaft des entsprechenden Objektes.

Wagen wir mal einen Blick über den Tellerand hinüber zur Scriptsprache PHP und definieren wir mal einen regulären Ausdruck:

$pattern = “/^([A-Z]{1,2})?(-| )?([0-9]{5})$/”;

In diesem Muster sind so gut wie alle Techniken von regulären Ausdrücken enthalten, dass nicht kundige schon ins grübeln kommen. Mir ging das nicht anderst. Im obigen Beispiel wollen eine Eingabe einer Postleitzahl auf Ihre Richtigkeit überprüfen. Die Postleitzahl könnte z.B. so aussehen: D-80807 oder D80807 oder nur 80807.
Den ganzen Beitrag lesen »

Kategorie: VBA Code, Visual Basic | 6 Kommentare »

SP2 für Office 2007 in kürze verfügbar

Samstag 18. April 2009 von Andreas Vogt

Im Blog von Office Sustained Engineering ist zu lesen, dass für den 28. April 2009 – also in 10 Tagen – das Update SP2 für Office 2007 verfügbar sein wird.

Dazu die wichtigsten Änderungen im Überblick:

  • Service Pack 2 ermöglicht es, Dokumente im OpenDocument-Format Version 1.1 für Word, Excel, und PowerPoint zu bearbeiten und zu speichern. Es ist also damit möglich Dokumente im Dateityp .ods (OpenDocument Spreadsheet) bzw. .odp (OpenDocument Presentations) zu speichern.
  • Es wird erstmals ein separates Tool geben um diesen Service Pack zu deinstallieren. Das Tool wird ebenfalls als Download wohl ab dem 28. April zur Verfügung stehen. Eine wichtige Neuerung, da bislang das komplette Office deinstalliert und anschließend das Office Paket neu installiert werden musste um ein Service Pack zu entfernen.
  • Ebenfalls eine nützliche und längst überfällige Neuerung ist die eingebaute Funktion “Save AS PDF”, womit man ein Dokument einfach als PDF oder XPS Datei exportieren kann. Bislang musste man dafür ein zusätzliches AddIn herunterladen und installieren.

Viele die noch die Probleme beim SP3 von Office 2003 vor Augen haben fragen sich jetzt vieleicht ob sie das Service Pack sofort installieren sollen. Ich empfehle nach Veröffentlichung des Service Pack erst mal zu Prüfen ob auch gleich am selben Tag das Removal-Tool verfügbar ist. Aber auch dann würde ich eher ein paar Tage abwarten und mal intensiv die Office-Foren bzw. die Newsgroups nach Problemen bei diesem Service Pack zu durchsuchen. Aber letzlich dient SP2 auch der Sicherheit da auch einige Bugs gefixt wurden und früher oder später sollte man es installieren.

AV 2009

Update:
Der Link zum Download des Service Pack 2 ist wie folgt:
http://www.microsoft.com/downloads/details…

Kategorie: Software | Keine Kommentare »

Access Systemobjekte

Donnerstag 16. April 2009 von Andreas Vogt

Haben Sie sich auch schon mal gefragt wo Access die ganzen Informationen über die vorhandenen Objekte, also Tabellen, Formulare, Abfragen, Beziehungen, Module etc., speichert? Access legt zu diesem Zweck bereits zum Zeitpunkt, wo eine neue Datenbankdatei erstellt wird, mehrere Systemtabellen an, die aber ausgeblendet sind. Darin werden die verschiedensten Access Internas gespeichert, wie die Systemobjekte, Abfragen, Makros oder Informationen über die referentielle Integrität. Diese Angaben sind nicht dokumentiert und top secret. Microsoft will sich da nicht in die Karten schauen lassen, da dies einiges an verstecktem Know How darstellt. In diesem Bericht kratzen wir auch nur wenig an der Oberfläche.

Um die Systemtabellen sichtbar zu machen, gehen Sie im Menü Extras auf Optionen und dann auf das Registerblatt Allgemein. In der Gruppe Anzeigen können Sie dann die Option “Systemobjekte” auswählen und mit OK bestätigen.

Unter Access 2007 findet man diese Option wie folgt:
Klick auf Office-Button, dann unter:
Access-Optionen => Aktuelle Datenbank => Bereich Navigation => Navigationsoptionen
Dort die Anzeigeoption “Systemobjekte anzeigen” markieren und 2x mit OK bestätigen.

Jetzt werden mehrere Systemtabellen angezeigt. Man erkennt diese daran dass alle mit “MSys” beginnen. Interessant für den Access Entwickler ist z.B. die Tabelle MSysObjects, in der sämtliche Systemobjekte aufgelistet sind.

Eines vorab: Verändert man die Systemtabellen kann man in den meisten Fällen die Datenbank hinterher wegschmeißen, also nicht darin rumspielen und bei geöffneter Systemtabelle niemals auf Aufforderung speichern, sondern immer Abbrechen!

Die Tabelle MSysObjects besitzt folgende Felder:

Feldname Felddatentyp
Connect Memo
Database Memo
DateCreate Datum/Uhrzeit
DateUpdate Datum/Uhrzeit
Flags Zahl
ForeignName Text
Id Zahl
Lv OLE-Objekt
LvExtra OLE-Objekt
LvModule OLE-Objekt
LvProp OLE-Objekt
Name Text
Owner Binär
ParentID Zahl
RmtInfoLong OLE-Objekt
RmtInfoShort Binär
Type Zahl

Den ganzen Beitrag lesen »

Kategorie: Datenbankdesign | Keine Kommentare »

Anzahl Urlaubstage berechnen

Sonntag 29. März 2009 von Andreas Vogt

Angenommen sie arbeiten in einer Personalabteilung. Bei Ihnen landen fast täglich Urlaubsanträge mit den Angaben Urlaubsbeginn, Urlaubsende, AnzahlTage. Soweit ja easy, aber leider sind über 10% der Anträge ohne die Angabe der Anzahl Urlaubstage. Sie holen den großen Kalender raus, zählen die Werktage, dann den zweiten Kalender mit den Feiertagen raus holen und prüfen ob ein Feiertag dazwischen liegt usw.

Die Lösung: Der Urlaubstage-Rechner.

Man sehe sich erst mal nachfolgenden VBA-Code an, der in einem Modul steht:

Public Function urlaubstage(Startdatum As Date, Enddatum As Date) As Long
    Dim i As Integer
    Dim tempDate As Date

    If Not IsDate(Startdatum) Or Not IsDate(Enddatum) Then
        MsgBox "Bitte gültiges Startdatum und Enddatum eingeben", vbExclamation + vbOKOnly
        Exit Function
    End If

    If DateDiff("d", Startdatum, Enddatum) < 0 Then
        MsgBox "Das Enddatum muss nach dem Startdatum liegen!", vbExclamation + vbOKOnly
        Exit Function
    End If

    For i = 0 To DateDiff("d", Startdatum, Enddatum)
        tempDate = DateAdd("d", i, Startdatum)
        If Weekday(tempDate) <> 1 And Weekday(tempDate) <> 7 Then
            'tempDate ist kein Wochenende
            If Not istFeiertag(tempDate) Then
                'tempDate ist kein Feiertag
                urlaubstage = urlaubstage + 1
            End If
        End If
    Next i
End Function

Den ganzen Beitrag lesen »

Kategorie: VBA Code | Keine Kommentare »

Startformular mit “Countdown” Schaltfläche

Mittwoch 18. März 2009 von Andreas Vogt

Ein Startbildschirm kann verschiedenste Aufgaben erfüllen. Z.B. den Anwender begrüßen oder über Neuigkeiten informieren. Ein weiterer Aspekt ist den Start der eigentlichen Anwendung bewusst zu verzögern um eine Art Barriere aufzubauen. Dies könnte man z.B. dafür Nutzen eine eingeschränkte Anwendung zu erstellen, um die Anwender zu drängen eine entsprechende Lizenz zu kaufen.

Dies zu realisieren ist sogar ziemlich einfach. Man erstelle ein Formular mit einer deaktivierten Befehlsschaltfläche die im Klick-Ereignis das Anwendungs-Formular öffnet. Im Formularmodul dann dieser Code:

Option Compare Database
Option Explicit

Dim Startintervall As Integer

Private Sub cmdApp_Click()
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm "Anwendungsform"
End Sub

Private Sub Form_Timer()
    If Startintervall <= 10 Then
        Me.TimerInterval = 1000
        Me!cmdApp.Caption = 10 - Startintervall
        Startintervall = Startintervall + 1
    Else
        Me.TimerInterval = 0
        Me!cmdApp.Caption = "Anwendung starten"
        Me!cmdApp.Enabled = True
    End If
End Sub

Den ganzen Beitrag lesen »

Kategorie: Formulardesign, VBA Code | 2 Kommentare »

Microsoft Cloud Computing

Freitag 13. März 2009 von Andreas Vogt

Microsoft präsentierte ihre nicht ganz neuen Pläne für das Cloud Computing auf der letzten Cebit.
Microsoft Cloud Computing bedeutet – um es auf den Punkt zu bringen – dass Daten nicht mehr auf lokalen Datenspeichern wie z.B. Festsplattenlaufwerke gespeichert werden, sondern dass diese in riesigen Rechenzentren von Microsoft gespeichert werden und über Browser weltweit und jederzeit abrufbar sind, sogar über Mobilte Geräte. Der Begriff leitet sich von Cloud = Wolke ab, da in der Modellvorstellung die Daten wie eine Wolke über uns schweben und wir nur noch danach greifen müssen.

Man kann auch davon ausgehen denke ich, dass dann auch Business Anwendungen wie Word, Excel, Outlook und Powerpoint online verfügbar sein werden. Vorbei dann die Zeiten wo man nach einem Kundenbesuch noch lange im Büro saß und die Daten vom Notebook ins Firmennetz übertrug.

Fiktion? Wohl alles eine Frage der Nachfrage, denn machbar ist das allemal. Die Arbeitswelt wird sich den Spielregeln der globalen Welt unterordnen müssen und dabei nach praktikablen Lösungen und Werkzeugen suchen. Dieser Trend ist ja schon einige Jahre zu beobachten.

Und dass Microsoft das ernst meint zeigt ja schon die jüngste Vorstellung des passenden Betriebssystem Windows Azure für das Cloud Computing sowie das Vorhaben in den nächsten Jahren zig Milliarden für 20 neue Rechenzentren auszugeben.

Eigentlich können wir uns jetzt nicht beschweren, das haben wir doch schon lange gewollt – oder?

Diskutieren Sie mit und sagen Sie uns Ihre Meinung zu diesem Thema!

AV 2009

Kategorie: Allgemein | Keine Kommentare »

Office 14 erst 2010

Freitag 13. März 2009 von Andreas Vogt

Microsoft Mitarbeiter Antoine Leblond hat kürzlich der CNET News ein Interview gegeben, wo er Details zur nächsten Office-Version preisgab.
Demnach wird Office 14 (man bemerke auch Microsoft ist abergläubisch) erst 2010 verfügbar sein, und nicht schon Ende 2009. Diese Version wird das OpenDocument Format unterstützen, welches bei Office 2007 mit dem nächsten Service-Pack ebenfalls unterstützt wird.

Einige Neuerungen die Office 14 mit sich bringen wird:

  • Office Web Applications, d.h. die Anwendungen Excel, Word, PowerPoint und OneNote werden dann in einem Browser ausgeführt.
  • Aktualisierte Office Anwendungen für Windows Mobile
  • Verbesserte Unterstützung bei Mobilen Geräten wie z.B. beim IPhone

Insgesamt gehe der Trend hin zum mobilen Arbeiten auf kleinen, vernetzten Geräten. Microsoft arbeitet noch daran wie diese Unterstützung der Mobil Devices letztlich im Detail aussehen wird. Aber sicher ist dass dieser Trend voll auf die Bedürfnisse des großen Heers an Büroarbeiter und Selbstständigen abzielt, und immer weniger auf die Bedürfnisse der Anwendungsentwickler.

Das komplette Interview mit Video ist hier einsehbar: CNET Artikel

Office 14 wird dann nächstes Jahr als Office 2010 in den Regalen stehen.

AV 2009

Kategorie: Allgemein, Software | Keine Kommentare »

Quick-Tipp: Daten nach Excel exportieren

Freitag 27. Februar 2009 von Andreas Vogt

Auf die Schnelle die aktuellen Datensätze nach Excel rüberschieben wäre doch nicht schlecht, und beeindruckt doch sicher euren Chef – der von der Materie wieder keine Ahnung hat ;-)
Und wenn der wüsste wie einfach das geht…

Hier mal der ganze Code der dazu notwendig ist:

Dim oExcel As Object, i As Integer
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb

On Error Resume Next
Err.Clear
Set oExcel = CreateObject("Excel.Application")
If Err.Number <> 0 Then Set oExcel = CreateObject("Excel.Application")
On Error GoTo 0
With oExcel
    .Visible = True
    .Workbooks.Add
    .ActiveSheet.Name = "Arbeitsblatt1"
    Set rs = db.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
    For i = 0 To rs.Fields.Count - 1
        .Cells(1, i + 1) = rs.Fields(i).Name
    Next i
    .Range("A2").SELECT
    .Selection.CopyFromRecordset rs
End With
rs.close
set rs = Nothing
set db = Nothing
Set oExcel = Nothing

Da obige Methode late Binding ist, benötigt man keinen Verweiss auf Excel.
Mittels .Cells(zeile,spalte) wird die Spaltenüberschriften eingetragen, die aus dem Namen der Datenfelder kommen. .Range(“A2″).SELECT setzt den Cursor auf das Feld A2 in Excel, und mittels .Selection.CopyFromRecordset rs werden alle Daten im aktuellen Recordset auf einen Rutsch nach Excel kopiert.

AV 2009

Kategorie: VBA Code | Keine Kommentare »

Quick Tipp: Popup-Formulare positionieren

Sonntag 22. Februar 2009 von Andreas Vogt

Popup-Formular, d.h. Formulare mit der Eigenschaft Popup = ja, lassen sich mittig ausrichten indem man die Eigenschaft “Automatisch zentrieren” auf ja stellt. Will man aber z.B. mehrere Popup-Formular an definierter Stelle positionieren, dann muss man dafür schon ein Stückchen VBA-Code einsetzen.

Die entsprechende Anweisung dazu lautet:
Forms("Formularname").Move Links, Oben, Breite, Höhe
Die Angaben Links, Oben, Breite und Höhe sind in Twips anzugeben. Die Angabe des Wertes Links ist erforderlich, die restlichen Angaben sind Optional.

Die Maßeinheit Twip bedeutet 1/20 eines Inch-Punktes, was 1/1440 Inch (Zoll) entspricht.
Demnach ist 1mm gerundete 56,7 Twips.

Probiert es einfach mal aus. Wenn ihr aber zu große Werte eingebt, wird euer Formular nicht mehr zu sehen sein da es außerhalb dem sichtbaren Bereich “liegt”.

Ein anderer Anwendungsfall ist, dass ein Popup-Formular relativ zu einem anderen Formular oder einem Steuerelement auf einem anderen Fomular plaziert sein soll. Dies ist z.B. bei dem DatePicker der Fall, den ich in einem anderen Beitrag beschrieben habe.

Nachfolgend eine Prozedur die ein Popup-Formular öffnet und direkt unter einer Befehlsschaltfläche plaziert:
Den ganzen Beitrag lesen »

Kategorie: Formulardesign, VBA Code | Keine Kommentare »

Zeichnen in Formularen mit Lebans Picturebox-Klasse

Donnerstag 12. Februar 2009 von Andreas Vogt

Bekannter Weise gibt es für Formular-Objekte keine Zeichen-Befehler wie line() oder Circle(), dies ist den Berichts-Objekten vorbehalten. Das kann man ärgerlich finden oder nicht, ändern kann man das eh nicht. “Man” sucht also nach Alternativen – der Kunde will das schließlich.

Fündig wird man wie so oft bei Stephen Lebans, einem Access Enthusiast der sein Wissen bereitwillig teilt. Auf http://www.lebans.com/imageclass.htm findet man für Access 97 und 2000+ 2 Downloads namens PictureBoxA97.zip und PictureBoxA2K.zip.

Der Download besteht aus einer Beispieldatenbank die die Funktionsweise demonstriert. Für eigene Projekte sind die beiden Klassenmodele clsPictureBox und clsVertices relevant, die man am besten gleich in eine leere Access-Datei kopiert.

Meine Aufgabenstellung war, anhand von Konstruktionsangaben offene und geschlossene Grundrisszeichnungen darzustellen. Die Angaben waren Kundenspezifisch und bestehen aus Innenwinkel und Länge von Linien, also eine relative Polarkoordinaten. Ein Quadratischer Grundriss der Länge 1000 hat daher die folgenden Angaben:
(90/1000), (90/1000), (90/1000), (90/1000)
Gibt man noch eine Tiefe von 200mm vor, dann sieht die generierte Zeichnung so aus:

Den ganzen Beitrag lesen »

Kategorie: Formulardesign, VBA Code | Keine Kommentare »




Linktip: Tourenfahrer Mittelbaden/Südbaden