Access-News & Downloads
Access-Helpline
Spotlight: Personal-, Belegungs- und Zeitpläne endlich grafisch darstellen Die perfekte Access-Erweiterung für Planungen aller Art: Sie geben in einer Tabelle lediglich Start- und Enddatum der einzelnen Vorgänge wie Belegungen, Vermietungen, Urlaub usw. ein und erhalten als Ergebnis ein übersichtliches Balkendiagramm. Mit wenig Aufwand integrieren Sie den Plan in Ihre eigenen Datenbanken, wobei eine Fülle von Anwendungen denkbar ist:
Belegungsplan für Access Download-Tipp: So vermeiden Sie doppelte Datensätze Das Erfassen von doppelten Datensätzen gehört zu den alltäglichen Problemen vor allem bei der Eingabe von Adressen. Arbeiten dann auch noch mehrere Mitarbeiter beispielsweise in der Auftragsannahme, sind die unerwünschten Zwillinge in Ihrer Datenbank vorprogrammiert und müssen später mühsam entfernt werden. Wie aber können Sie die Doppel bereits bei der Eingabe möglichst effektiv erkennen? In unserer kostenlosen Techinfo stellen wir Techniken vor, mit denen Sie in Zukunft die Datenerfassung noch effizienter gestalten können, weil doppelte Datensätze bereits während der Eingabe erkannt werden. Sie erhalten dazu fertige VBA-Lösungen, die Sie direkt in Ihre Datenbanken einbinden können:
News: SQL-Server 2005 live erleben Nach fast 5 Jahren steht in Kürze das nächste große Update des Microsoft SQL-Server an. Wenn Sie sich detailliert mit der neuen Version auseinandersetzen wollen, könnte die Technical Summit Tour 2005 für Sie interessant sein, die in den nächsten Wochen noch in Berlin, Bremen, Bochum, Hanau, Stuttgart, München und Zürich Station macht: Weitere Informationen zur Technical Summit Tour 2005 Microsoft bietet auf der eintägigen Veranstaltung unter anderem 5 Vorträge an, die sich mit verschiedenen Aspekten der kommenden SQL-Server-Generation widmen. Techinfo: Daten vom SQL Server in Excel verarbeiten Versionen: Excel 2000, 2002/XP und 2003, SQL Server Um Daten von einem SQL Server in Excel zu verarbeiten, können Sie die benötigten Informationen beispielsweise aus einer externen Datei importieren oder per ODBC verknüpfen. Häufig müssen Sie aber per VBA bestimmte Anpassungen oder Berechnungen vornehmen, so dass anschließend noch ein Makro gestartet werden muss. Alternativ können Sie den kompletten Import vom SQL Server mit anschließender Weiterverarbeitung auch per VBA realisieren. Sie sparen so nicht nur zusätzliche Arbeitsschritte und den Umweg über eine externe Datei oder eine Verknüpfung, sondern haben gleichzeitig auch volle Kontrolle über alle ablaufenden Aktionen. Wie eine solche Lösung in Kombination mit ADO umgesetzt wird, verrät die deutschsprachige Techinfo unter der folgenden Adresse: Daten vom SQL Server in Excel verarbeiten
Schriftartenauswahl leicht gemacht, Teil 2 Versionen: Access 2003, 2002/XP, 2000 und 97 Nachdem wir im ersten Teil die Basisroutinen für die Erstellung einer Liste verfügbarer Schriftarten vorgestellt haben, geht es im Folgenden noch um einige Erweiterungen. Das wichtigste ist zunächst eine Sortierung der Schriftartenliste, die von "CreateFontList()" im globalen Array "arrFontNames()" abgelegt wurde. Die Sortierung erfolgt mit einem einfachen "QuickSort", den Sie wie folgt in die Lösung einbauen:
ByVal intLowBound As Integer, _ ByVal intHighBound As Integer) Dim varMidBound As Variant, varTmp As Variant Dim intX As Integer, intY As Integer If intHighBound > intLowBound Then varMidBound = _ FontList((intLowBound + intHighBound) \ 2) intX = intLowBound intY = intHighBound Do While intX <= intY If FontList(intX) >= varMidBound And _ FontList(intY) <= varMidBound Then varTmp = FontList(intX) FontList(intX) = FontList(intY) FontList(intY) = varTmp intX = intX + 1 intY = intY - 1 Else If FontList(intX) < varMidBound Then intX = intX + 1 End If If FontList(intY) > varMidBound Then intY = intY - 1 End If End If Loop SortFontList FontList(), intLowBound, intY SortFontList FontList(), intX, intHighBound End If End Sub
..... SortFontList arrFontNames(), 1, intNumFonts CreateFontList = intNumFonts ..... End Function
Damit ein Listen- oder Kombinationsfeld mit der Schriftartenauswahl gefüllt werden kann, benötigen Sie noch eine Callback-Funktion. Dabei handelt es sich um eine interessante alternative Möglichkeit, Listen- oder Kombinationsfelder mit Daten zu füllen. Zu diesem Zweck geben Sie den Namen der Callback-Funktion in der Eigenschaft "Herkunftstyp" an und löschen den Inhalt der Eigenschaft "Datensatzherkunft". Access ruft dann beim Öffnen des Formulars die Callback-Funktion mehrmals auf, um auf diesem Weg den Inhalt für das Listen- oder Kombinationsfeld abzufragen. Die Callback-Funktion greift in der Regel auf ein globales Array zurück und ermittelt daraus die gewünschten Inhalte. Gehen Sie zunächst wie folgt vor:
lngID As Long, _ lngRow As Long, _ lngCol As Long, _ intCode As Integer) As Variant Dim R As Variant Select Case intCode Case acLBInitialize R = CreateFontList() Case acLBOpen R = Timer Case acLBGetColumnCount R = 1 Case acLBGetRowCount R = intNumFonts Case acLBGetValue R = Trim$(arrFontNames(lngRow + 1)) End Select FontListCallback = R End Function Während der Initialisierung des Formulars ruft Access diese Callback-Funktion mehrmals mit verschiedenen Parametern (acLBInitialize, acLBOpen, acLBGetColumnCount, acLBGetRowCount, acLBGetValue) auf. Je nach Parameter initialisiert die Funktion dann zunächst die zu verwendende Datenbasis (acLBInitialize), liefert die gewünschten Informationen zum Layout der Liste (acLBGetColumnCount, acLBGetRowCount) oder liefert Daten für die Liste aus der zuvor initialisierten Datenbasis (acLBGetValue).
Private Sub lstFonts_AfterUpdate() MsgBox Me.lstFonts End Sub Im dritten und letzten Teil dieses Tipps zeigen wir nächste Woche auf dieser Basis einige praktische Lösungen in Form einer automatischen Schriftanpassung für Formulare und eine als Bericht realisierte Schriftartenübersicht.
Haben Sie Fragen zu Access 2003, 2002/XP, 2000 oder 97? Dann wenden Sie sich mit einer genauen Problembeschreibung (bitte keine Datenbanken schicken!) an: access-helpline@smarttools.de Unser Redaktionsteam wählt in jeder Ausgabe Fragen aus und beantwortet Sie an dieser Stelle im Newsletter. Mehrzeilige Inhalte über Textfelder im Bericht ausgeben Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Gibt es eine Möglichkeit, in einem als Rechnungsformular realisierten Bericht im gleichen Datensatz eine 2. Zeile in einem Textfeld auszugeben? Bei einem Datensatz mit verschiedenen Feldern habe ich im Feld "Bezeichnung" mitunter zu wenig Platz. Der Inhalt wird dann einfach abgeschnitten. Dort sollte bei Bedarf automatisch eine 2. Zeile hinzugefügt werden, um den gesamten Feldinhalt darstellen zu können. Die Eigenschaften "Vergrößerbar" und "Verkleinerbar" für das Textfeld habe ich bereits auf "Ja" eingestellt, es funktioniert aber nicht! G. Siems ANTWORT: Die Änderungen der Eigenschaften "Vergrößerbar" und "Verkleinerbar" für das Textfeld alleine reichen nicht aus. Sie müssen gleichzeitig diese beiden Eigenschaften auch für den Detailbereich - oder den Bereich des Berichtes, in dem das Textfeld eingesetzt werden soll - einstellen, damit Access auch hier den beispielsweise für ein zu vergrößerndes Textfeld notwendigen Platz schaffen kann:
Feldinhalte mit führenden Nullen speichern Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Wir verwenden in einer Datenbank ein Textfeld mit einer Länge von 7 Zeichen. Wenn über ein Formular zum Beispiel "12" eingegeben wird, soll das Ergebnis als "0000012", also mit einer entsprechenden Anzahl führender Nullen, in der Tabelle gespeichert werden. Wie lässt sich das automatisieren? Unsere Versuche über entsprechende Format- und Eingabeformat-Einstellungen führten leider nicht zum Erfolg. W. Gering ANTWORT: Format- und Eingabeformat-Einstellungen schaffen hier keine Abhilfe, da sie lediglich festlegen, wie ein Feldinhalt angezeigt wird oder einzugeben ist - auf die tatsächliche Speicherung der Eingabe in der Tabelle haben diese Einstellungen nur bedingt Einfluss. Sie können zwar das Eingabeformat auf "0000000" einstellen, aber dann muss beispielsweise die Zahl "12" immer als "0000012" mit der entsprechenden Anzahl führender Nullen eingegeben werden. Eine Automatisierung beziehungsweise das Auffüllen mit einer entsprechenden Anzahl Nullen lässt sich nur per VBA realisieren:
Dim strEingabe As String On Error Resume Next strEingabe = Me.txtTest If Err <> 0 Then Beep Me.txtTest.SetFocus Exit Sub End If On Error GoTo 0 While Len(strEingabe) < 7 strEingabe = "0" + strEingabe Wend Me.txtTest = strEingabe End Sub Diese Anweisungen lesen zunächst die aktuelle Eingabe aus dem Textfeld in eine Zeichenkette "strEingabe" ein. Kommt es dabei zu einem Fehler, weil beispielsweise die Eingabe gelöscht wurde und das Feld auf "NULL" steht, geben wir einen akustischen Hinweis aus und verlassen die Routine. Andernfalls fügen wir in einer Schleife solange führende Nullen am Anfang der Zeichenkette hinzu, bis die gewünschte Länge - hier "7" - erreicht ist. Abschließend speichern wir die geänderte Zeichenkette in der Tabelle.
Verknüpfte Tabellen auflisten Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Gibt es eine einfache Möglichkeit, nur verknüpfte Tabellen und deren Ursprungsdatenbanken aufzulisten? B. Meyer ANTWORT: Erstellen Sie eine neue Abfrage und wählen Sie das Menü Ansicht-SQL an. Geben Sie im SQL-Editor die folgenden Anweisungen ein: SELECT Name, ForeignName, Database FROM MsysObjects WHERE MSysObjects.Type=6; Lassen Sie die Abfrage ausführen und es werden alle gewünschten Informationen angezeigt. In der versteckten Tabelle "MSysObjects" hält Access Informationen zu allen Objekten der Datenbank fest, unter anderem auch zu verknüpften Tabellen. Diese können über den Typ "6" identifiziert werden. "Name" liefert den Namen, so wie er bei der Verknüpfung definiert wurde bzw. wie er im Datenbank-Fenster angezeigt wird, "ForeignName" den Namen der Tabelle, so wie er in der Ursprungsdatenbank festgelegt ist und per "Database" ermitteln Sie schließlich den Pfad/Dateinamen der Ursprungsdatenbank.
Outlook-Tipps kostenlos per E-Mail SmartTools Outlook Weekly bietet jede Woche Tipps, aktuelle Infos und Download-Links für Outlook 2003, 2002/XP, 2000 und 98:
Um SmartTools Access Weekly abzubestellen, senden Sie einfach das Kommando "unsubscribe" an die Adresse access-weekly-html-request@smarttools.de Bitte beachten Sie, daß das Kommando im Nachrichtentext stehen muß (nicht im Betreff) und Sie keine Mail im HTML-Format senden dürfen. Weitere Informationen zur Verwaltung der Liste erhalten Sie mit dem Kommando "help" an dieselbe Adresse.
|