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 »
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 »
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:

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 »
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.

Link zum Anbieter: www.anwendertage.de/sql09
AV 2009
Kategorie: Events und Trainings |
Keine Kommentare »
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 »
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:
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »