Quick-Tipp: Makros dokumentieren

By , 31. Mai 2011

Makros sind bekanntermaßen schlecht handlebar, keine Dokumentation, keine Parameter etc. Doch was die Dokumentation angeht da kann man sich mit einem Trick behelfen, indem man die Methode Application.SaveAsText verwendet. Nachfolgendes Beispiel zeigt wie man es einsetzt:

Sub test()
    If Not macro_output Then
        MsgBox "keine Makros zum Dokumentieren gefunden!", vbInformation + vbOKOnly
    Else
        MsgBox "Alle Makros dokumentiert. Ausgabepfad:" & vbCrLf & _
        CurrentProject.Path & "\", vbInformation + vbOKOnly
    End If
End Sub
Public Function macro_output() As Boolean
    Dim i As Long
    Dim strMacroName As String

    For i = 0 To CurrentProject.AllMacros.Count - 1
        strMacroName = CurrentProject.AllMacros(i).Name
        Call Application.SaveAsText(acMacro, strMacroName, _
                                    CurrentProject.Path & "\" & strMacroName & ".txt")
    Next
    
    If i > 0 Then macro_output = True
End Function

In einer For-Schleife werden alle Makros durchlaufen und der Makroname ermittelt. Danach der Makroname als Parameter bei Application.SaveAsText verwendet. Über den boolschen Rückgabewert kann man z.B. eine Ausgabe in der aufrufenden Prozedur steuern.

Die Ausgabe-Datei im txt-Format sieht z.B. so aus:

Version =196611
ColumnsShown =3
Begin
    MacroName ="MeinMakro"
    Condition ="A=1"
    Action ="OpenTable"
    Argument ="tblVorgaenge"
    Argument ="2"
    Argument ="2"
End

Ein paar Zeilen erklärenden Text darunter und das Makro ist dokumentiert.

Bis dahin
Andreas Vogt ©2011

Korrelationsanalyse mit Access

By , 25. Mai 2011

Bei der Auswertung einer Punktewolke sucht man die Punkt-Steigungs-Formel einer Geraden die den Zusammenhang zwischen zwei Zahlenmengen darstellt. Mittels dieser Formel – die allseits aus dem Schulunterricht bekannt sein dürfte – lassen sich zuverlässige Schätzwerte für zukünftige Rechenwerte berechnen da man annimmt dass diese dann nahe der Gerade liegen. Gesucht wird die Geradensteigung m sowie den Durchstoßpunkt der Geraden auf der Y-Achse:

Bevor man mit der Berechnung der Werte beginnt, sind die Mittelwerte der Koordinaten xquer und yquer zu berechnen. Das geht einfach indem man die Summer der Messwerte durch deren Anzahl teilt.
Die Steigung m berechnet sich aus dem Quotient der Summe von xi-xquer mal yi-yquer und der Summe von xi-xquer im Quadrat. Die nachfolgende Abbildung verdeutlicht das:

Der Durchstoßpunkt b der Y-Achse ermittelt sich durch die Differenz von yquer und dem Produkt von m und xquer:


Read more »

Erstes BarCamp in der „Internethauptstadt“ Karlsruhe

By , 24. Mai 2011

Ein Barcamp ist eine neuartige Tagungsform mit offener Struktur, deren Inhalte und Ablauf von den Teilnehmern selbst entwickelt werden. Themen von Barcamps sind in aller Regel im Bereich Web 2.0, Internetmarketing, Softwareentwicklung, Anwenderberichte etc. zu finden. Das erste Barcamp fand 2005 statt.

Am 18. und 19. Juni treffen sich Entwickler, Berater, Designer, Netzwerktechniker und viele andere Sparten mehr, zum ersten Barcamp in den Räumen der CAS Software AG in Karlsruhe.
Im Gegensatz zu konventionellen Tagungen ist dieses Barcamp eine reine Non-Profit Veranstaltung und wird von ehrenamtlichen Helfern durchgeführt. Dieser interaktive Wissensaustausch ist meiner Meinung nach eine echte Bereicherung in der Tagungswelt und ist sicherlich einen Besuch wert.

Informationen sowie Anmeldung (sofern es noch freie Plätze gibt) auf www.barcamp-karlsruhe.de
Und wer mag kann mich dort an beiden Tagen treffen.

Bis dahin
Andreas Vogt © 2011

Accessblog auf Twitter lesen

By , 20. Mai 2011

Auf Twitter erfahrt ihr viele News und Hinweise auf neue Artikel hier im Blog.
Klickt einfach auf den Twitter-Button und ihr gelangt direkt zur AccessBlogde Twitterseite.
Wenn euch gefällt was ihr seht – bislang gibts erst wenige Tweets – dann klickt einfach auf Folgen und ihr bekommt automatisch auf eure Startseite meine Tweets.

Wir sehn uns auf Twitter
Andreas Vogt ©2011

rosige Zeiten für Microsoft Access?

By , 19. Mai 2011

In einer aktuellen Veröffentlichung der Software Initiative Deutschland wird von einer Analyse von Geschäftsprozess-Veränderungen berichtet, welche unter anderem als Ergebnis hervorbrachte, dass zur Zeit jeder dritte Geschäftsprozess auf eine Access Anwendung beruht.

Diese Prozesse laufen zumeist autark in den Fachabteilungen ab, ohne dass die IT-Abteilung davon Kenntnis erlangte bzw. informiert wurde. Da zeigt sich dass Microsoft Access durchaus Qualitäten als Rapid Aplication Development-Tool aufweist.

Die Ursache der Kluft zwischen IT-Abteilung und Fachabteilung sei die immer höhere Geschwindigkeit, mit der die Geschäftsprozesse angepasst werden müssen, deren die IT-Abteilung nicht mehr nachkommt. Da die Fachabteilungen trotzdem funktionieren müssen wird eben verstärkt zur Selbsthilfe gegriffen mit den der Fachabteilung zur Verfügung stehenden Mitteln – und das ist nun mal in aller Regel Microsoft Office. Der Autor der Veröffentlichung prognostiziert weiter, dass diese Kluft ständig sich vergrößern wird und ein Ende noch nicht abzusehen sei . Seine Einschätzung geht sogar so weit dass bald rund 80% aller Geschäftsprozesse der deutschen Konzernwelt auf Excel und Access basieren werden.

Es ist noch nicht so lange her dass Access-Anwendungen vorallem in den großen Betrieben und Konzernen als Verpöhnt galten. Sicherlich herrscht diese Meinung bei vielen ITlern noch vor, doch da wird bzw. muss ein Umdenken stattfinden, denn die Integration von Fachabteilung spezifischen Access-Anwendungen in die IT-Abteilung erhöhen spürbar Sicherheit und Qualität der Anwendungen.

Und auch Microsoft muss dieser Entwicklung mit innovativen und sichereren Access-Versionen gerecht werden – mit der Veröffentlichung von Access 2010 wurde bereits schon ein großer Schritt in diese Richtung getan. In Zukunft wird es wohl ein steigender Bedarf an Schulungen in den Betrieben geben, und auch das Heer von freiberuflichen Softwareentwickler – zu denen auch ich gehöre – wird von dieser Entwicklung profitieren.

Sogesehen könnte die Access-Zukunft schon rosig werden.

Bis dahin
Andreas Vogt ©2011

Quelle: www.softwareinitiative.de

Office 2010 Update SP1 Ende Juni

By , 18. Mai 2011

Wie von Cris Downs gestern am 17.5. 2011 veröffentlicht, wird das geplante Update SP1 für Ende Juni 2011 erwartet. Das Update wird für alle Office 2010 Anwender empfohlen.

Das Update erhöht die Sicherheit und erhöht die Leistungsfähigkeit. Bekannte Highlights im Update sind:

  • Problem bei Export nach Excel behoben.
  • Verbesserte Leistung bei Formularen mit eingebetteten Bildern.

Quelle: http://blogs.office.com/b/microsoft-access/archive/…

Selektive Datensätze – oder wie zeige ich Datensätze seitenweise an

By , 10. Mai 2011

Eine bekannte Problematik ist, wie man viele Datensätze so anzeigt, dass immer nur eine bestimmte Anzahl sichtbar wird, gleichzeitig aber Seitenartig geblättert werden kann.
Aus der PHP/MySQL Welt ist die Möglichkeit bekannt in einer Abfrage die Datensätze mittels dem Limit Operator die Anzahl und die Startposition der Datensätze einzustellen. Diese Möglichkeit gibt es in Access leider nicht – man kann sich aber behelfen.

Möchte man z.B. die sortierten Datensätze 31 bis 40 darstellen, lässt sich das dadurch bewerkstelligen, indem man die Top 40 Datensätze nimmt, und von diesen in umgekehrter Reihenfolge die Top 10 Datensätze nimmt. Jetzt hat man die Datensätze 40……bis 31 in umgekehrter Reihenfolge. Auf diese Menge wendet man eine äußere Abfrage an die absteigend aufsteigend sortiert und schon hat man die richtige Ergebnismenge in der korrekten Reihenfolge.

In meinem Beispiel verwende ich ein Unterformular in Datenblattansicht, 4 Buttons zur Navigation und 1 Bezeichnungsfeld als Datensatzanzeiger. Es werden immer 10 Einträge pro Seite angezeigt.

Zuerst werden in einem Modul Globale Variablen deklariert:

Global sumDS As Long
Global start As Long

Dann benötigt man eine Prozedur die die Datenherkunft des Unterformulars einstellt:

Private Sub setQuery(start As Long, Optional perpage As Long = 10)
    Me!ufo1.Form.RecordSource = "SELECT tblKfzKennzeichen.ID, tblKfzKennzeichen.Kennzeichen, tblKfzKennzeichen.Bezirk " & _
                                "FROM tblKfzKennzeichen " & _
                                "WHERE (((tblKfzKennzeichen.ID) In (Select Top " & perpage & " ID From (Select top " & start & " ID From tblKfzKennzeichen) Order By ID Desc))) " & _
                                "ORDER BY tblKfzKennzeichen.ID;"

    Me.DSAnzeiger.Caption = "Eintrag " & start - (perpage - 1) & " bis " & start
    Me!ufo1.Form.Requery
End Sub

Read more »

Daten aus Tabelle einer Webseite importieren

By , 5. Mai 2011

Der nachfolge Artikel zeigt wie man den Quelltext einer Webseite erhält, mittels DOM Bereiche im Quelltext ermittelt und wie man aus einer HTML-Tabelle Daten auch Formatiert ausliest.

Zuerst also benötigen wir den Seitenquelltext einer bestimmten Webseite. Dazu muss zuerst ein Verweiss auf die Microsoft HTML Object Library gesetzt werden, damit die entsprechenden Objekte und Funktionen zur Verfügung stehen:

1. Objekte deklarieren:

Dim objHTML As New HTMLDocument
Dim objDoc As New HTMLDocument
Dim objBody As HTMLBody

2. Seitenquelltext laden und Body extrahieren:

Set objDoc = objHTML.createDocumentFromUrl("http://yourwebsite.com/table1.htm", vbNullString)
Warten 1
Set objBody = objDoc.body

Es sieht vieleicht etwas merkwürdig aus, 2 gleiche Objekte und dann noch eine Warten-Funktion.
Man denkt sich vieleicht das man doch direkt
Set objBody = objHTML.createDocumentFromUrl(„http://yourwebsite.com/table1.htm“, vbNullString).body
schreiben könnte, aber das haut nicht hin. Der Grund liegt an der Ladezeit wie die Webseite den Seitenquelltext liefert. Dieser muss zuerst komplett geladen sein, bevor davon der Body extrahiert werden kann. Auch die zwei HTMLDocument Objekte sind notwendig, die Zuweisung ins selbe Objekt wäre hier nicht zulässig.
Read more »

OfficeFolders theme by Themocracy