zurückzum übergeordneten Themazum untergeordneten Thema... weiter gehtsKontaktieren Sie uns ...Informationen / AGB... zurück zum AnfangDienstleistungen rund um die ITbesser gut beraten...Let the net workTele- Video und DatenkommunikationSoftwareentwicklung -auswahl und EinführungHardware - immer die richtige Wahl...


Dirk Burkamp Access FAQ

Access FAQ Version 6

von Dirk Burkamp Stand: 9-2005 Rev 1

Nutzungsbedingungen:


Die Benutzung des Access-FAQ ist kostenlos, jedoch ist jeder Nutzer verpflichtet seine Nutzung per eMail an mich anzuzeigen. (Ein Accounting wird durchgeführt) Eine Veränderung des vorliegenden Dokumentes bzw. der Datei darf nicht ohne Genehmigung des Autors erfolgen. Eine kommerzielle Nutzung ist nur mit urschriftlicher Genehmigung des Autors (Dirk Burkamp) zulässig. Dies gilt insbesondere fuer CD-ROM, Buch und andere Publikationen. Ich übernehme für die Korrekheit der Angaben keinerlei Verantwortung und übernehme insbesondere für direkte bzw. indirekte Folgeschäden keinerlei Haftung.
Diese Regelung wurde notwendig um CD-Brenner und Plagiatoren abzuhalten.

Alle Warenzeichen sind eingetragende Warenzeichen der jeweiligen Hersteller.

Das FAQ richtet sich in erster Linie an Access-Newbie's, die noch ihre ersten Schritte mit Access versuchen wollen. Grundsätzlich gilt, dass Access mit einer sehr umfangreichen Online-Hilfe im HLP-Format ausgestattet ist, jedoch gibt es immer wieder Fragen, die diese nicht oder nur unzureichend zu beantworten vermag.

Falls jemand Ergänzungen oder Hinweise zu diesem FAQ hat schicke er sie bitte an mich. Falls gewünscht, kann man sich unter dieser Adresse auch in die Verteiler-Liste eintragen lassen, die ich informiere, sobald ein neues FAQ herauskommt.

Aufgrund der Menge, der ständig an mich gerichteten Fragen, bin ich dazu übergegangen diese nur zu beantworten, falls ich die Lösung gerade im Kopf habe, ansonsten verschimmelt die eMail-Anfrage bis zum jüngsten Gericht. (Also wenn ihr nicht innerhalb von zwei Wochen etwas gehoert habt, tut es mir leid!)
Ihr werdet merken, dass ich nicht gerade ein Access-Fan bin, jedoch hoffe ich einigen von Euch im immerwährenden Kampf mit diesem Winzigweich - Produkt weiterzuhelfen. Nur wenige der Tips und Tricks wurden ausgetestet, also falls jemand von Euch Fehler bemerkt informiert er mich bitte. Insbesondere möchte ich an dieser Stelle darauf hinweisen, dass bei den Tests keinerlei Überprüfung vorgenommen wurde, ob der Tip auch fuer alle Access-Versionen gilt.
Dieses FAQ ist eine Sammlung häufig gestellter Fragen zur Datenbank Access. Teilweise wurden diese in der Newsgroups de/comp/datenbanken/* sowie /comp/databases/ms-access als auch /microsoft/public/access/* gestellt und beantwortet. Ich habe diese Antworten zum Teil ausgewertet und überarbeitet.
Uebrigens:
Die FAQ haben zur Zeit in etwa 1000 Besuche pro Woche.


Inhaltsverzeichnis


Informationen zu Access


    **** N E U ****
  • Wo finde ich Informationen zur API Programmierung?
    Daniel Appleman, Visual Basic Programmer's Guide to the Win32 API, New York (: Ziff Davis Press) 1996, 1997
    Hier werden alle API-Aufrufe, die von Visual Basic Programmierern (und somit auch von Access Programmieren) genutzt werden können, erklärt und mit VB-Deklaration vorgestellt (viel besser als im entsprechenden api32.txt von VB) Das Büchlein ist nicht wirklich ein Schnäppchen (ca. 120 Mark), aber jede einzelne davon Wert: Es ist das definitive Nachschlagewerk für alle VBA Programmierer!


  • Wo finde ich Informationen zum Datenbankdesign unter Access?
    Prof. Dr. Manfred Sommer: Datenbankdesign für Access 7.0/2.0. Bonn 1996. International Thomson Publishing. DM 79,00. ISBN 3-8266-0268-4
    CD-ROM incl. Testversion von ERWin Ausfuehrliche Informationen unter dieser Adresse!


  • Wo finde ich Access-Informationen im Usenet?
    Schau doch mal im Dejanews News-Verzeichnis nach.
    Dort lassen sich ueber die gesamten News Anfragen/Recherchen durchfuehren und prima Personenprofile erstellen.


  • Gibt es ein Access-FAQ?
    Ja, gibt es. DAS Access FAQ sind die sogenannten MS-Knowledge Bases (KB).
    Diese gibt es auf dem amerikanischen Microsoft-Server bzw. werden diese in Deutschland von Link everything Online gemirrort.
    Abgesehen von diesem kenne ich noch das Access-FAQ von T.Dehyle. (siehe nützliche Links)


  • Wo finde ich Beispieldatenbanken für Access?
    In der als Beispiel mitgelieferten NORDWIND.MDB findet man häufig die Antwort auf seine Fragen. Diese Datenbank enthält eingentlich alles was man benötigt. Es gibt jedoch noch diverse Access CD's auf denen man ganze Ansammlungen von Codebeispielen, Datenbanken, Tools sowie Erweiterungen findet.
    Eine frei erhältliche Adressdatenbank für Acc 2.0 stellt Udo Eberhardt zur Verfügung. (200kb)


  • Gibt es Buchtitel/CD-ROM Publikationen zu Access?
    Ja, eine Menge. Z.B.
    BÜCHER:
    natürlich gibt es die Standard-Bücher "Erstellen von Anwendungsprogrammen" sowie das auch im ADT enthaltene "Sprachverzeichnis Access 2.0"
    - Access Developer's Handbook, Getz, Litwin and Reddick
    - Das grosse Buch zur Access 2.0 Programmierung, Jürgen Bär/Irene Bauder, Data Becker
    Enthält etwa 400 Seiten zur Makro-Programmierung und 600 zur VBA-Programmierung
    - Access 2.0 Programmierhandbuch,Manfred Hoffbauer, Sybex
    - Professionelles Datenbank-Design mit Access 2.0, Tiemeyer/Konopasek, Vieweg. Dieses Buch enthaelt eine Einführung in Access 2.0 und behandelt die Programmierung von Datenbanken recht ausführlich. (Fuer den Programmieranfaenger!)
    - Anwendungsentwicklung mit Access 2.0, Said Baloui, Markt und Technik (ISBN 3-87791-704-6)
    - Access 2-Supertricks, Uwe Janke, Markt und Technik (ISBN 3-87791-763-1)
    Eher fuer die Anwendungsentwicklung geeignet. - Wise Man's Access 1.1, Ullstein-Sybex Anleitungen fuer schnelle Ergebnisse (ISBN 3-548-41006-5)
    - Access fuer Window '95, Microsoft-Press
    soll einen guten Ueberblick ueber Access geben!
    CD-ROM:
    - Access 2.0 Instant Datenbanken, Addison-Wesley (incl. Access-Service Pack) Dieser Titel ist laut AWL nicht mehr im Handel verfuegbar soll jedoch im Sommer 97 in einer neuen Version erscheinen
    - Der Access Doktor



Access Installation, Distribution etc.


    **** N E U ****
  • Wie gross ist ein mit der ODE fuer Access 97 distributierter Diskettensatz?
    Ca. 9 Disketten. (8 fuer die Runtime, 1 fuer die DB)!


  • Gibt es wie bei Delphi eine Enterprise-CS Version?
    Nein, denn Access ist urspruenglich als eine Single-User/Single-Station Datenbank fuer Dummuser gedacht gewesen. Das hat sich allerdings in den folgenden Versionen ein wenig geaendert.


  • Welche Versionen von Access existieren?
    Es gibt bisher die Versionen 1.0, 1.1, 2.0 für Windows 3.1x und 7.0 sowie Access '97 für Windows '95. Zu jeder Version existieren diverse Bugfixe (genannt Service-Packs).


  • Was sind Unterschiede zwischen Access 1.0 -> 2.0 -> 7.0?
    Access 1.0 und 2.0 laufen mit Windows 3.1x. Access 7.0 laeuft nur unter Windows 95.
    Access 7.0 hat eine höhere Performance benötigt jedoch wesentlich mehr RAM. Ausserdem stuertzt Access 7.0 den Postings in diversen Gruppen nach zu urteilen wesentlich haeufiger ab als die Version 2.0
    Beachte den Installationshinweis bei gleichzeitiger Installation!
    In der Regel ist der Anwendungscode von Version zu Version inkompatibel, so dass in im Falle eines Versionswechsel eine Nachbearbeitung der Anwendungen erfolgen muss.


  • Wie kann ich Access 7.0 und Access 2.0 gleichzeitig auf meinem Rechner installieren?
    Ich erhielt viele Reaktionen auf die 1. Version des FAQ,das folgende Loesung vorschlug:
    Installieren Sie Windows '95 und starten Sie dann neu bis zur Eingabeaufforderung. Installieren Sie nun Windows 3.xx in einem anderen Verzeichnis und nehmen sie auf jeden Fall alle Aenderungen der AUTOEXEC und CONFIG-Dateien von Hand vor.
    Nun können Sie in Windows '95 Access 7.0 und in Windows 3.xx Access 2.0 installieren!
    Mir wurde geschrieben das diese Variante genausogut funktioniert:
    1. Installiere Access 7.0
    2. Waehle Custom Setup und installiere die Access 2.0 Version in ein anderes Verzeichnis als die 7.0 Version.
    Diese Variante funktioniert manchmal Aufgrund eines Windoof-Problem irgendwie nicht. Eine Neuinstallation von Win95 schafft in der Regel abhilfe.


  • Nachdem ich Access 7.0 installiert habe wird auch fuer meine Access 2.0 Datenbanken standardmaessig Access 7.0 aufgerufen?
    Tja, das Ei hat Euch die Installationsroutine von Access 7.0 gelegt. Da beide Anwendungen ihre Datenbankdateien mit der Endung .MDB versehen wird die alte Verknuepfung aufgeloest.
    Abhilfe schafft das Einfuegen eines neuen Vorganges fuer den Dateityp .MDB. Der Vorgang heisst bei mir "mit Access 2.0 oeffnen" und ruft das Executable von Access 2.0 auf.
    Eine automatisierte Variante ist ein Shareware-Tool von PK-Solutions, dass automatisch den Datenbanktyp feststellt und die entsprechende Anwendung startet. (Download moeglich)


  • Was ist der Unterschied zwischen MSACCESS.EXE und MSARN200.EXE?
    MSACCESS.EXE ist das Executable der Access-Vollversion und MSARN200.EXE ist Runtime-Version des ADT fuer Access 2.0!


  • Was sind die Systemvorraussetzungen fuer Access 2.0?
    Hardware:
    Offiziell wird Access 2.0 mit einer Mind.-Konfiguration von 6 MB und optimal mit 12 MB angeboten, allerdings ist das IMHO utopisch!
    Erfahrungen mit 2.0:
    386/33 Prozessor und 8 MB RAM. unakzeptierbar langsam.
    486/66 Prozessor und 8 MB RAM. gerade akzeptabel.
    486/66 Pozesssor und 16 MB RAM. laeuft gut.
    P60 Prozessor und 8 MB RAM. langsamer als 486/66 mit 16 MB RAM.
    P60 Prozessor und 16 MB RAM. laeuft toll.
    P133 Prozessor und 32 MB RAM. Wenig Verbesserung
    P166 Prozessor und 32 MB RAM. Kaum Verbesserung

    Gute Festplattenwerte bzw. ein schnelles Netzwerk sind natuerlich entscheidende Werte fuer ein Datenbank-System.

    Software:
    Windows 3.1x oder höher


  • Kann ich den Cache von Access mit der MaxBufferSize-Einstellung in der MSACC20.INI im Abschnitt [ISAM] verändern?
    Jein...
    Ja, nur in dem Fall falls Access auf Fremdformatdatenbanken im ISAM-Format arbeiten muss. (z.B. DBASE-Dateien)
    Nein, da Access im Regelfall mit der Jet-Enginge arbeitet.


  • Wo bekomme ich eine Demo von Visual Basic?
    Eine Demo der Version 4.0 findet sich hier!


  • Kennt jemand einen leichten Weg um nach einer Umbenennung alle Referenzen auf eine Tabelle, eine Abfrage bzw. ein Feld zu ändern?
    Für Access 2.0 gibt es ein shareware Utility das globale Namensänderungen vornimmt. Man findet repl2.zip unter
    Jumbo Shareware
    CSU-SM Shareware Archive !


  • Ist es mit Access möglich EXE's zu erzeugen?
    Nein! Es gibt keinen Access-Compiler. Falls EXE's gewüscht werden muß auf eine Compiler-Sprache ausgewichen werden.


  • Wie kann ich mein Access-Programm distributieren ohne das die Empfänger Access kaufen müssen?
    Für Access 2.0 , 7.0 ,'97 gibt es das sogenannte Access Developers Toolkit (ADT). In der '97 Variante heißt es jetzt Office Developer Edition und enthaelt dann auch Word und Excel. Dies enthält eine ohne Lizenzgebühren verteilbare Runtime-Version von Access die sich nur geringfügig von der Originalversion unterscheidet.
    Diese Runtime-Version hat allerdings den Nachteil, das bereits die kleinste Access-Anwendung (2.0) einen Installationssatz von 3 Disketten benötigt und das das ADT ca. 1000 DM kostet. Dafür erhält man unter anderem einen zusätzlichen Satz Handbücher den Hilfecompiler und eine Installationsroutine (SETUP-Wizard) sowie verschiedene Access-OCXe. (Vorsicht: Beachte die eingeschraenkten Lizenzbedingungen mancher OCXe!)


  • Was ist beim ADT zu beachten?
    Das ADT kann nicht automatisch unter fuer Access 2.0 unter Windows 95 installiert werden. Besser ist es eine WfW-Version parallel zu halten und unter dieser die Distribution zu erstellen.


  • Ich habe mit dem ADT unter Windows 95 erstellte Disketten auf einem Windows 3.xx Rechner installiert. Nun laeuft Windows 3.xx nicht mehr. Was kann ich tun?
    Disketten fuer einen 3.xx Zielrechner sollten auf jeden Fall auch auf einem dem Zielrechnersystem entsprechenden Windows erstellt werden, da ansonsten falsche Systemdateien eingeschrieben werden!
    (Siehe auch KNB-Artikel: Q130399)


  • Was kann ich mit Access machen?
    Eigentlich kann man jede kleinere Datenbankanwendung damit erstellen. Grundsätzlich gilt für den Access-Entwickler: "Alles ist machbar. Manches leider nur mit einem sehr hohem Aufwand"


  • Wie erstelle ich Access-Anwendungen?
    Eigentlich erstellt man die erste Access-Anwendung mit der Erzeugung einer eigenen Datenstruktur, jedoch wird man schnell versuchen immer wiederkehrende Arbeiten zu automatisieren und ich eine angepasste Oberfläche zu schaffen. Dies geschieht durch die Generierung der Formulare und der Erzeugung verschiedener Makros. Bei näherer Beschäftigung mit den Makros stellt man bald fest, daß diese absolut unzureichend sind und wird in die Access-Basic Programmierung einsteigen.
    Mein Tip an Leute mit Basic-Kenntnissen: Vergesst direkt die Makros und programmiert alles in VBA (Visual Basic for Applications) selbst.


  • Warum überhaupt in Access und nicht gleich in Visual-Basic programmieren?
    Weil die Erstellung unkritischer Datenbankanwendungen in Access um ein vielfaches schneller möglich ist. Die gesamte Grundfunktionalität einer Datenbank ist bereits vorhanden und muß nicht erst programmiert werden.



Access Programmierhilfen, Bibliotheken, OCX, VBX etc.


    **** N E U ****
  • Ich suche eine AddIn mit dem der Benutzer zwischen mehreren Datenbanken hin- und Herwechseln kann.
    So etwas hat Stephan Niemann geschrieben.
    Er bietet den Wizard auf seiner Homepage und in diesen FAQ (für Acc2.0) zum Download an.
    (Wizard.MDA mit kurzer Beschreibung als ZIP gepackt 16kb)


  • **** N E U ****
  • Ich suche ein natuerlichsprachliches Abfragemodul fuer Access und Visual Basic?
    So etwas bietet ELFSoft an. www.elfsoft.com


  • **** N E U ****
  • Wie kann ich den noch freien Speicher feststellen ?
    Mit dieser Funktion des Kernel API.

    
    Declare Function GetFreeSpace Lib "Kernel" (ByVal wFlags As Integer) As Long
    
    Function GetFreeSpaceByte ()
    
        GetFreeSpaceByte = GetFreeSpace(0)
    
    End Function
    
    


  • **** N E U ****
  • Wie kann ich jeden zehnten Datensatz einer Tabelle auswaehlen?
    
    
     Dim i As integer
    
     Dim DB As Database
    
     Dim DS As Dynaset
    
     Set DB = CurrentDB()
    
     Set DS = DB.CreateDynaset("Tabelle")
    
     i = 0
    
     Do While Not DS.EOF
    
             i = i + 1
    
             if i Mod 10 = 0 then
    
                     ' um jeden 6. auszuwaehlen einfach die 10 durch 6 ersetzen
    
                     ' ...
    
             end if
    
             DS.MoveNext
    
     loop
    
     DS.Close
    
    


  • **** N E U ****
  • Wie kann ich Text in Memofeldern formatieren?
    Es gibt von der Firma FMS ein Produkt namens "Total Access Memo" als OCX Steuerelement. Bei einem Doppelclick auf ein Memofeld oeffnet sich dann ein kleiner Editor mit Bearbeitungsfunktionen.
    Probleme soll es bei der Übernahme bestehender Memofeld-Inhalte geben.
    Preis ab 99$


  • **** N E U ****
  • Wie entwickele ich eine Anwendung mit einer mehrsprachigen Benutzeroberflaeche?
    Mit Hilfe des International Application Kit. (Findet man auf dem Microsoft Server)!


  • Wie kann ich alle Dateien einer bestimmten Extension nacheinander abarbeiten?
    Mir der Funktion Dir$ koennen diese Daten ausgelesen werden. Diese Codebeispiel zeigt eine moegliche Anwendungsform:

    wildcard = "*.mdb" ' Beispiel Wildcard fuer alle .mdb Dateien
    Treffer = Dir(wildcard) ' Ersten Treffer suchen.
    If Len(Treffer) > 0 Then ' ...wenn gefunden...
    Do
    AKTION ( Treffer ) ' Aktion auf dieser Datei ausfuehren
    Treffer = Dir ' Naechsten Treffer suchen ...
    Loop Until Len(Treffer) = 0' ... solange noch Treffer gefunden werden.
    Else
    ' Keine Dateien mit diesem Wildcard gefunden!
    End If


  • Ist es möglich Grafikformate wie JPEG oder GIF in Access-Formularen anzeigen zu lassen?
    Es gibt diverse OCXe die dieses leisten z.B.:
    GPImange Ver. 1.0 JPG/GIF/BMP, 100$ angeblich sehr schnell
    von GrafPonents, Fax: 404.685.4027
    NED Image OCX Control, 199$ (Homepage NED)


  • Gibt es für Access 2.0 eine Möglichkeit der Darstellung von Karteikarten, so wie bei den Optionen unter Winword im Menü Extras?
    Ja. Es gibt ein TAB.OCX (bzw. TAB2.OCX), das allerdings in der Performance nicht gerade berauschend sein soll.
    Die neueste Version liegt in Andrew Miller's Verzeichnis.


  • **** N E U ****
  • Gibt es die Möglichkeit Beschriftungen hochkant zu erzeugen?
    Ja. Es gibt für Access 2.0 ein OLE-Custom Control SPINLBL.OCX, mit dem es möglich ist es Label um eine bestimmte Gradzahl zu drehen. Auch RoText von Mabry Software soll das leisten.
    Es gibt anscheinend Probleme mit diesem OCX unter Win '95.


  • Wie rufe ich diese Standard-Dialoge ("Datei auswaehlen", "Drucker auswaehlen" etc.) auf?
    Es gibt im MS-ADT ein COMMDLG32.OCX. Dieses und einige DLLs enthalten die gewünschten Routinen!


  • Warum funktioniert die Benutzung von OCX-Funktionen nicht bei den Anwendern meiner Anwendung?
    Vielleicht hast Du die zugehörigen DLLs nicht mitverteilt?
    Z.B. muessen mit dem COMMDLG32.OCX die DLLs MFC40.DLL, MSVCRT40.DLL, OLEPRO32.DLL installiert werden und das OCX muss richtig registriert werden.


  • Wie kann ich eine Listbox mit Mehrfachauswahl realisieren?
    Es gibt fuer Access 2.0 ein MSLB.OCX fuer eine Multi-Select-Box!



Programmierung Tips & Tricks


    **** N E U ****
  • Wie kann ich mit Access Feiertage berechnen?
    Jörg Ackermann stellt hier eine Access DB zum Download zur Verfügung mit der die Berechnung der Feiertage moeglich ist.
    Außerdem gibt es darin eine Prozedur PRV_IsFeiertag, mit der man ein Datum von 1900-2099 in einem bel. Bundesland oder bundesweit daraufhin prüfen kann, ob's ein Feiertag ist.
    Aufruf: If PRV_IsFeiertag(#30.03.97#, 14) Then......... prüft den 30.03.97 in Sachsen.
    Parameter im Deklarationsteil des Moduls !


  • **** N E U ****
  • Wie kann ich mit Access Basic die Grafikauflösung feststellen?
    Mit dem API-Call GetSystemMetrics!
    
    
    Declare Function GetSystemMetrics Lib "user32" (By Val nIndex As Long) As Long
    
    
    
    Sub Auflösung
    
    
    
    Const Breite = 0
    
    Const Höhe = 1
    
    
    
    MsgBox GetSystemMetrics(Breite)
    
    MsgBox GetSystemMetrics(Höhe)
    
    
    
    End Sub
    
    
    So funktioniert das fuer Windows '95, fuer 3.xx muss die Bibliothek natuerlich "user" statt "user32" heissen! oder ganz komfortabel mit Hilfe des Artikels ID: Q113458 in der KB.


  • **** N E U ****
  • Wie kann ich aus Access 7.0 aufgrund einer URL einen Browser starten?

    Private Sub btnGotoURL_Click()
    On Error GoTo btnGotoURL_Click_Error

    Dim StartDoc As Long
    If Not IsNull(Me!URL) Then
    StartDoc = ShellExecute(Me.hWnd, "open", Me!URL, "", "C:\",SW_SHOWNORMAL)
    Else
    MsgBox "Diese Dokument wurde nicht gefunden.",vbInformation
    End If

    Exit Sub

    btnGotoURL_Click_Error:
    MsgBox "Error: " & Err & " " & Error
    Exit Sub


  • Wie kann ich zur Laufzeit (in der Datenblattansicht) die Spaltengroesse einer Spalte aendern bzw. die ganze Spalte ausblenden?
    Benutze die Eigenschaften ColumnHidden und ColumnWidth !


  • Wie kann ich selektierten Text bearbeiten?
    Bei Textfeldern gibt es die Eigenschaften SelStart und SelLength. Verbunden mit String-Funktionen ist eine Manipulation von ausgwählten Textstellen möglich!


  • Wie kann ich mit Access FTP machen?
    Eine einfache (aber nicht besonders elegante) Loesung ist es ein einfaches Befehlzzeilen orientiertes FTP-Programm zu benutzen und alle FTP Befehle als ein ASCII-Text in ein Skript zu schreiben.
    Dann muss man das FTP Programm nur noch mit shell() starten und als Paramter den Dateinamen des Skriptes übergeben!
    Z.B. bei Benutzung des mitgelieferten Win95 FTP
    Shell("ftp.exe -s:transfer.scp Server-Name")

    transfer.scp=
    account
    password
    ascii
    get soundso
    close


  • Wie bestimme ich die Datensatznummer des aktuellen Datensatzes?
    Mit der undokumentierten Recorset Eigenschaft: absolutepostion

    Dim tabelle As Recordset
    Dim dsnr as integer
    Set tabelle = Me.recordsetclone
    tabelle.bookmark = Me.bookmark
    dsnr = tabelle.absoluteposition + 1 ' +1 da bei 0 begonnen wird
    Gueltig fuer 2.0 und 7.0


  • Wie rufe ich einen File-Selection Dialog auf?
    In diesem Code-Schnipsel finden Sie ein Beispiel 4,36kb!
    Leider nur fuer Access unter Win 3.xx


  • Wie bestimme ich den Pfad des Verzeichnisses in dem die Datenbank liegt?
    Mithilfe der CurrentDB Eigenschaft .Name!
    Dieser Codeschnipsel ist fertig 0,98kb


  • Wie kann ich alle Module einer Datenbank speichern?
    Mit diesen Codestuecken von Chris Juengling (dAUG):
    1,20kb fuer Access 2.0
    1,40kb fuer Access 7.0


  • Wie kann ich jedem Datensatz einen Bearbeiterstempel aufdruecken?
    In einer Multiuser-Datenbank kann folgender Code im Ereignis "nach Aktualisieren" helfen:

    Me![Bearbeiterfeld] = CurrentUser ()


  • Ich moechte die Aenderungen eines Datensatzes nur nach Bestaetigung des Benutzers speichern?
    Beim Speichern eines DS treten in MS-Access folgende Ereignisse ein:
    1. Before Update
    2. After Update
    3. After Insert (falls es ein neuer Datensatz war!)

    Das Ereignis "Before Update" kann man abfangen, indem man eine Ereignisprozedur anlegt. Die sieht dann etwa folgendermassen aus:


    Sub Form_BeforeUpdate (cancel as integer)
    cancel = true 'Datensaetze nie speichern
    End Sub

    Nach diesem Prinzip kann der Benutzer seine Aenderungen gar nicht mehr speichern. Die Prozedur braucht also eine Erweiterung:
    Eine globale Variable gibt an, ob gespeichert werden darf. Normalerweise ist dies nicht der Fall, deswegen wird diese Variable mit false initialisiert. (False ist Default-Wert.) Nur wenn der Benutzer den Speichern-Button drueckt, wird die Variable auf True gesetzt, und der DS wird mit Hilfe von Docmd DoMenuItem gespeichert. Das komplette Programm muss also etwa folgendermassen aussehen:


    'Deklarationsteil des Formular-Moduls
    '------------------------------------
    Option Compare Database
    Option Explicit

    Dim fJetztSpeichern As Integer

    'Ereignisprozedur des Buttons
    '----------------------------
    Sub btnSpeichern_Click()

    'Flag setzen
    '-----------
    fJetztSpeichern = True

    'Datensatz speichern
    '-------------------
    DoCmd DoMenuItem 1,2,3,4 'Bitte Hilfe zu Hilfe nehmen, um die richtigen Zahlen zu finden

    End Sub

    'Ereignisprozedur Before Update
    '------------------------------
    Sub Form_BeforeUpdate(Cancel As Integer)
    If Not fJetztSpeichern Then
    Cancel = True
    End IF
    End Sub

    Das Codebeispiel bezieht sich auf Access 2.0 und muss fuer spaetere Access - Versionen angepasst werden.


  • Wie kann ich feststellen ob die Datenbank in der Runtime MSARN200.EXE laeuft?
    Die Funktion SysCmd( SYSCMD_RUNTIME ) liefert True wenn die DB in der Runtime gestartet wurde.


  • Wie kann ich mit Access die COM-Schnittstellen ansprechen?
    Lese in der MS-KB Artikel:Q93696 nach! Die Loesung sind Windows-API Funktionen.


  • Ich habe eine Tabelle mit extrem vielen Feldern die ich in einer Aktion bearbeiten möchte. Ich will aber nicht jeden Feldnamen einzeln angeben?
    Durchlaufe die Feldliste des Recordset und fuehre die Aktion fuer jedes Feld einzeln aus.

    For i = 0 To mein_recordset.fields.count - 1
    meine_aktion ( myrs.fields(i).name )
    Next


  • Welche Steuerzeichensequenz muß man in der Zwischenablage verwenden damit die Daten richtig eingefügt werden können?
    Chr$(13)+Chr$(10)


  • Wie verhindert man das eine weitere Instanz von Access gestartet wird?
    Ueber ein 2. Programm das zuerst ueber API Aufrufe prueft ob Access bereits in der Taskliste enthalten ist und falls ja zu dessen Hauptfenster wechselt.
    Benutze den API-Aufruf GetModuleUsage() um festzustellen ob msaccess.exe gestartet ist, wenn ja stelle ueber den API-Aufruf FindWindow() den Window Handle (dessen Klassen-Name ist 'OMain') fest. Zu guter Letzt rufe BringWindowToTop() mit diesem Handle als Parameter auf.
    Dieses Programm muss allerdings in einer anderen Umgebung als Access gestartet werden. (z.B. Visual-Basic)


  • Wie kann ich auf die Spalten einer List- bzw. Combobox zugreifen?
    Ueber die Eigenschaft column(spalte) kann auf die Spalten zugegriffen werden. Der Spaltenindex beginnt bei 0. (d.h. 1. Spalte = 0 usw.).
    Beispiel: wert = name_listbox.column(spalten_nr)


  • Wie finde ich aus Access heraus das Aenderungs-Datum und die Bearbeitungs-Zeit einer Datei heraus?
    Das ist in der KB Article ID:Q124392 beschrieben!


  • Wie kompaktiere bzw. repariere ich eine Access-Datenbank aus einer Anwendung heraus?
    Kompaktier- und Repairutility!

    Link wurde nicht getestet

    Der Author des Programm:
    Chui Shuin, Phoon (Trisha)
    Homepage


  • Wie filtere ich bestimmte Datensaetze heraus die ueber ein Datum einem bestimmten Zeitraum zugeordnet werden können?
    Angenommen das Datensatzfeld heisst [eingabedatum] und im aktuellen Formular wurde in die Felder [von] und [bis] der Zeitraum eingetragen, dann ist der Abfragestring:

    "[eingabedatum] between " & clng(me![von]) & " and " & clng(me![bis])
    Mit der Umwandlung des Datum in die interne Long-Darstellung vermeidet man die Formatierung der Daten gemaess mm/dd/yyyy.


  • Wie stelle ich fest ob ein Formular geladen ist?
    Function FormIstGeladen (MeinFormularName As String)
    On Error Resume Next
    FormIstGeladen = (SysCmd(SYSCMD_GETOBJECTSTATE, A_FORM, MeinFormularName) <> 0)
    End Function



  • Wie verpasse ich dem aktuellen Datensatz nach Bearbeitung einen Zeitstempel?
    Setze folgenden Code als BeforeUpdate-Ereignis des Eingabe-Formular ein.

    Me!DasZeitstempelFeld = Now()


  • Wie aendere ich softwareseitig den Standarddrucker?
    Karsten Pries hat mir dankenswerterweise ein fertiges Code-Modul zur Verfuegung gestellt das durch Torben Koch im Usenet veröffentlicht wurde. Ich habe das Modul durch wenige Kommentare und eine Funktion ergaentzt.
    Das Modul sollte ueber Neu/Text_laden importiert werden.
    Die Funktion KernelGetPrinterList stellt eine Druckerliste zur Verfuegung die zum Beispiel in einer Combo-Auswahl dem Benutzer angeboten werden kann.
    Druckerauswahl-Modul 3,90 KB


  • Wie gebe ich einen Bericht auf verschiedene Drucker aus?
    s. softwareseitiges aendern des Standarddruckers!


  • Wie kann ich testen ob ein Steuerelment in einem Formular existiert?
    Indem Du auf die Objekteigenschaft .visible zugreifst. Falls bei diesem Zugriff ein Fehler auftaucht ist das Objekt nicht vorhanden!


  • Wie kann ich das Icon eines Button zur Laufzeit aendern?
    Eine unschöne Lösung ist es mehrere verschiedene Buttons auf der gleichen Position im Formular zu erzeugen. Je nach verschiedenen Ereignissen macht man die verschiedenen Buttons sichtbar bzw. unsichtbar. (.visible)!


  • Wie kann ich aus einem aktuellen Datum die Anzahl der Tage im aktuellen Monat berechnen?
    Function TageImMonat(AktDatum)
    Dim NaechsterMonat, EndeDesMonat
    NaechsterMonat = DateAdd("m", 1, AktDatum)
    EndeDesMonat = NaechsterMonat - DatePart("d", NaechsterMonat)
    TageImMonat = DatePart("d", EndeDesMonat)
    End Function

    siehe auch MS-KB: Functions for Calculating & Displaying Date/Time Values


  • Wie kann ich aus Access 2.0 heraus Dateien kopieren?
    Nur fuer Access 2.0
    Du musst die File-Funktionen in der MSAU200.DLL benutzen!
    In den Deklarationen:

    Declare Function msau_libCopyFile Lib "MSAU200.DLL" Alias "#4" (ByVal lpszSrc As String, ByVal lpszDest As String) As Long
    Dim rueckgabe As Long
    rueckgabe = msau_libCopyFile("Quelldatei", "Zieldatei")

    Das Verfahren wird auch im KB Artikel ID: Q102671 beschrieben.
    eine andere Variante ist es die Funktion lzCopy aus lzExpad.dll zu benutzen. d28025


  • Wie waehle ich automatisch die erste Zeile einer Listbox aus?
    [MeineListBox].ItemData(0)


  • Wie lösche ich eine temporaere Abfrage?
    Wenn diese mit CreateQueryDef angelegt wurde ist folgender Code notwendig:
    Access 2.0: DoCmd DeleteObject A_QUERY, "DieAbfrage"
    Access 7.0: DoCmd.DeleObject acQuery, "DieAbfrage"


  • Wie kann ich Benutzer- bzw. Gruppeninformationen überprüfen?
    Das wird für Access 2.0 in der KB in Article Q123079 beschrieben.


  • Wie tauscht man mit Access Daten zwischen der Zwischenablage aus?
    Das wird für Access 1.0 in KB Article Q96900 und für 2.0 in QQ94162 beschrieben. Die Funktionen heissen ClipBoard_GetData() und ClipBoard_SetData(). Das ganze wird mit API Aufrufen erledigt!


  • Wie rufe ich aus Access ein anderes Programm auf?
    rueckgabewert = Shell("c:\access\msaccess.exe c:\access\andere.mdb", 1)


  • Wie kann ich aus einer DB-Anwendung eine andere DB öffnen?
    Vorsicht: Diese Variante fuehrte schon zu Zeitsynchronisations-Fehlern. Um eine andere Datenbank aus Access heraus zu öffnen muss man ein Objekt im Datenbank-Fenster auswaehlen und dann den Befehl "Datei öffnen" aufrufen.

    DoCmd SelectObject A_TABLE, "EineTabelle", True
    SendKeys "%DF~Neue.mdb~"


  • Ist es möglich in einer Abfrage eine globale Variable abzufragen?
    JEIN. Nur ueber einen Umweg. Die Variable wird als Ergebnis einer Funktion zurueckgegeben und der Funktionsaufruf wird in der die Abfrage eingebunden.


    Function GlobaleVariable() as variant
    GlobaleVariable = --Hier die Variable eintragen--
    End Function


  • Wo finde ich Informationen zu MS-Graph?
    INF: Microsoft Graph VBA Help File Available on MSL
    Article ID: Q128364


  • Wie kann ich verhindern das der Anwender in einem Formular einen Datensatz loescht?
    Durch eine kleine Ereignisprozedur im 'Beim Loeschen' Ereignis:

    Sub Form_Delete (cancel As Integer)
    cancel = True
    End Sub
    Ein Loeschen wuerde dadurch ignoriert.


  • Wie kann ich eine Umgebungsvariable abfragen?
    Angenommen es wurde die Umgebungsvariable UVariable mit einem Werteintrag wie folgt belegt

    set UVARIABLE="WERTEINTRAG"
    In Access kann diese dann so abgefragt werden
    uvariable$ = Environ$("UVARIABLE")
    Das ist im übrigen auch eine Moeglichkeit bestimmte Benutzerinformationen innerhalb der Anwendung abzufragen.


  • Wo finde ich Algorithmen zur phonetischen Suche?
    In der Zeitschrift c't - Magazin fuer Computertechnik
    Ausgabe 5/95, S. 294 ff. - 'Aehnlichkeiten gesucht' beschreibt den sog. Shift-And-Algorithmus
    Ausgabe 10/88, S. 126 ff. - Nicht woertlich genommen beschreibt den Soundex- und den Bickel-Algorithmus
    In der Zeitschrift "Office und Database" 12/95 hat Wilfried Faerber einen solchen Algorithmus fuer VBA vorgestellt.



Technische Fragen


    **** N E U ****
  • Was ist bei Access und Novell zu beachten?
    Fuer die Erzeugung der LDB Datei benoetigt der Benutzer CREATE Rechte.


  • **** N E U ****
  • Wie bekommt man bei Access die System-Signaltoene für "Kritischer Abbruch", "Hinweis", "Frage"?
    Indem man bei MsgBoxen die entsprechenden Icons (Fragezeichen, Ausrufezeichen, Stopschild) auswählt.


  • **** N E U ****
  • Wie kann ich die Daten der LDB-Datei auslesen?
    Mit dem Programm JETLOCK.EXE das sich auf dem FTP-Server von Microsoft findet.


  • **** N E U ****
  • Wie kann ich den Splash-Screen bei Access modifizieren?
    Man kann bei Access '95 den Splash-Screen von Microsoft durch ein eigenes Bild ersetzen, indem man im Verzeichnis der MDB-Datei eine BMP-Datei mit dem Namen der MDB-Datei speichert.
    (Also datenb.mdb datenb.bmp)

    In Access 2.0 geht das auch mit einem Eintrag in der msacc20.ini. In der einzufuegenden Section lassen sich der Splash-Screen, die Titelzeile des Hauptfensters und das zu benutzende Icon angeben.

    z.B.

    [Run-Time Options]
    TitleBar=Ueberschrift
    StartupScreen=Bild.bmp
    Icon=Symbol.ico


    Indem man eine Bitmap der Groesse 1x1 angibt, kann man das Startbild so gut wie abschalten ! ;-)


  • **** N E U ****
  • Wie lang darf ein Feld vom Typ Memo sein?
    Inclusive aller Steuerzeichen (Zeilenumbrueche etc.) 64000 Zeichen.
    Alles was laenger ist geht verloren. (z.B. bei Concatenierung)


  • **** N E U ****
  • Wie kann man sich die LDB-Dateiinformationen anzeigen lassen?
    Mit dem Programm ldbview.exe soll dies möglich sein. Suche auf www.filez.com Das Problem ist das schon abgemeldete Benutzer in der LDB stehen bleiben bis auch der letzte Benutzer abgemeldet ist, was insbesondere zu der Fehlinformation fuehren kann das noch andere Benutzer die DB benutzen obwohl man als einziger darauf zugreift.


  • **** N E U ****
  • Wie kann ich mit Access eMails versenden?
    Benutze die VB API des MAPI SDK! (Funktioniert mit MS-MAIL 3.x)


  • Wie benutze ich einen Touchscreen zusammen mit Access?
    Sehr einfach (!) ohne besondere Programmierung, da die meisten Touchscreens als Windows kompatibles Zeigergerät implementiert werden. Mein Finger ist die Maus. Nur beim Formulardesign sollte man auf schön grosse Buttons achten!


  • Wo finde ich Informationen zur Replikation?
    Michael Kermesz nimmt in seiner Diplomarbeit "Virtuelles Buero" eine ausfuehrliche Beschreibung dieser Funktionalitaet vor!


  • Wo finde ich Informationen zum Thema WWW-Anbindung von Access?
    Michael Kermesz bespricht in seiner Diplomarbeit "Virtuelles Buero" dieser Funktionalitaet.


  • Wie bringe ich Access dazu auf die Abarbeitung eines Shell-Prozesses zu warten ?
    Informationen hierzu finden sich im KB Artikel Q99940 !


  • Wieviele Datensaetze koennen in eine Listbox eingetragen werden?
    65535 Stueck (in HEX FFFF)!


  • Wieviele Datensaetze koennen in eine Drop-Down Combobox eingetragen werden?
    65535 Stueck (in HEX FFFF)!


  • Ich kann den Tabellen-Assistenten nicht oeffnen wenn dieser gleichzeitig von einem anderen Benutzer benutzt wird (Access unter Netware)?
    Das ist leider kein Problem von Netware, sondern eines von Access fuer das es auch keine zufriedenstellende Loesung gibt!
    Peinlich insbesondere wenn dieses Problem erst waehrend einer Schulung auffällt.


  • Warum braucht Access so lange um die Ergebnisse eines SQL Statement (ausgeführt auf einem CS System) anzuzeigen?
    Leider werden fuer ein Join zuerst alle Daten heruebergeschaufelt und erst dann verknuepft. Das dauert halt ein bisschen auf einem PC!


  • Wie kann ich verhindern das ein einziger abstuerzender PC meine im Mehrbenutzerbetrieb laufendende Datenbank zerschießt?
    Gar nicht, da Access kein Client-Server-System darstellt und daher solche Funktionalitäten nicht vorgesehen sind. Eine Umstellung auf einen SQL-Server sollte Abhilfe schaffen.


  • Ich benutze eine .MDB-Datenbank und sperre einen Datensatz A. Warum koennen die Benutzer der DB auf manche der ungesperrten Datensätze nicht zugreifen?
    Die JetEngine benutzt dummerweise page-locking, d.h. es wird immer die gesamte Speicherseite gesperrt in der sich der gesperrte DS befindet.
    Eine Speicherseite ist IMHO 2kb gross und daher ist die Kollisionswahrscheinlichkeit ziemlich hoch. Ein schmutziger Trick das Pagelocking zu umrunden ist es einen einzelnen Datensatz auf 2kb aufzublähen. (Das habe ich aber noch nicht ausprobiert! Und es duerfte Probleme mit MEMO-Feldern geben)


  • Wie setzte ich ein Zaehler-Feld zurueck, so daß er wieder bei 0 anfaengt?
    Lösche alle Datensaetze der Tabelle und kompaktiere die Datenbank!


  • Wie wandele ich ein Zahl-Feld in ein Zaehler-Feld um?
    Pech gehabt! Nichts laesst sich in Zaehler-Felder umwandeln!


  • Wie dokumentiere ich eine DB in Access?
    Zum einen gibt es die Möglichkeit den integrierten Datenbank-Dokumentierer aus den Add-Ins zu gebrauchen. Dieser ist jedoch aeusserst unkomfortabel.
    Es gibt von MS eine Anwendung die sich StructureWizard nennt. Der Dateiname im FTP-Server ist wx1050.exe. Dieser Wizard erzeugt Tabellen die mit den eruierten Informationen geüllt werden und dann zur Weiterverarbeitung benuetzt werden können.
    Von PK-Solutions gibt es einen Help File Generator der aus den gesammelten Informationen ein Windows-HLP File als Ausgabe erzeugt.
    Desweiteren gibt es eine Vielzahl voll-komerzieller Produkte diverser Hersteller.


  • Was ist eine .LDB-Datei?
    Diese Datei wird in einer Mehrbenutzerumgebung verwandt um die Verwaltung der konkurrierenden Zugriffe zu steuern. Die Datei wird jedoch auch beim öffnen einer .MDB-Datei in einer Einzelplatzumgebung angelegt.
    Sollte die .MDB in einer Mehrbenutzerumgebung verschoben werden empfiehlt es sich die zugehörige .LDB-Datei mit zu verschieben.
    Die .LDB-Datei kann nicht gelöscht werden falls ein Benutzer die zugehörige .MDB-Datei geöffnet hat. In einer Einzelplatzumgebung können die .LDB-Dateien gelöscht werden.


  • Tips fuer die Anwendungsentwicklung?
    - Entwickelt in der Zielauflösung der Grafikkarte. Eine nachtraegliche Aenderung der Formulare auf die eventuell kleinere Auflösung ist sehr muehsam.
    - Beendet möglichst viel Code Makros und Eigenschaften eines Formulars bevor andere Bearbeitet werden
    - Beginnt mit dem Datenmodell. Ein sauberes Design erspart eine Heidenarbeit.


  • Was sollte ich bei der Programmierung mit Access Basic beachten?
    -Benutzte keine Variablennamen die reservierte Worte darstellen.
    -Benutze keine deutschen Funktionsaufrufe sondern das englischsprachige Aequivalent. Damit werden spätere Konvertierungsschwierigkeiten vermieden.


  • Was versteht man unter Trennung von Daten und Programmen?
    Das Trennung bedeutet, daß alle Tabellen und Relationen in einer Datenbank DATEN.MDB gehalten werden. Alle anderen Objekte werden in der Datenbank PROGS.MDB gehalten. In diese werden alle Tabellen aus der DATEN.MDB eingebunden.
    Diese Trennung ermöglicht ein Update der Anwendung ohne das die Datenbasis aus der Vorgänger-DB importiert werden muß.
    Hinweis: Alle Programmtabellen (Auswahllisten etc.) sollten natürlich in der PROGS.MDB gehalten werden.


  • Warum wird meine Datenbank nicht kleiner obwohl ich Datensätze gelöscht habe?
    Weil Access den Platz für den Datensatz bis zur nächsten Komprimierung reserviert hält.
    Ein schoenes Beispiel ist der Vergleich mit einem vollen Lagerhaus aus dem eine Palette herausgefahren wird. Die Lagermenge ist kleiner geworden, aber das Lager ist nicht mitgeschrumpft! ;-)


  • Gibt es eine Beschreibung der physikalischen Struktur von .MDB Dateien?
    Diese Beschreibung ex. IMHO nicht. Falls jemand eine findet möchte er mich bitte sofort benachrichtigen.


  • Was sind die Haupt-Probleme von Access-Anwendungen?
    1. Performance
    2. Datensicherheit
    3. Wartung
    4. Dokumentierbarkeit



ODBC & SQL, Externe Datenquellen


    **** N E U ****
  • Wo bekomme ich einen BTRIEVE ODBC Treiber?
    Smithware.com!


  • **** N E U ****
  • Wie komme ich mit Delphi 1.0 ueber BDE 2.5 an eine Access Datenquelle?
    Die Access 2.0 ODBC-Datenquelle heisst "Access 2.0 für MS Office", BDE verträgt leider keine Umlaute. Benenne in der ODBC.INI und ODBCINST.INI (im Windows-Verzeichnis) die Datenquelle um in " ... fuer ...", dann sollte es gehen!


  • **** N E U ****
  • Wie kann ich unter Unix (Linux,Sun) ODBC benutzen?
    Es gibt ein Packet namens iODBC (intrinsic ODBC) von Jin, Ke kejin@empress.com, verfügbar unter der GNU General Public License
    Verfügbar unter ftp.uni.bochum iODBC!


  • Was ist bei Access 2.0 und ODBC zu beachten?
    Unterberichte koennen in Acc2.0 nicht auf eingebundenen ODBC Tabellen basieren. Bei Unterformularen soll dieses mit Trickserei moeglich sein. (s.KB) Man arbeitet im allgemeinen am besten mit PassThrough Queries. (s. Hilfe)


  • Ist im Transaktionskonzept von Access ein Rollback möglich?
    Nein. Die einzige Moeglichkeit die man hat ist ein UNDO ueber die Ansteuerung eines Menübefehles.
    DoCmd DoMenuItem A_FORMBAR, A_EDITMENU, A_UNDOFIELD, , A_MENU_VER20


  • Wie und wo kann ich den ODBC-Timeout ändern?
    Im Menü Abfrageentwurf->Ansicht->Eigenschaften->ODBC-Timeout!


  • Gibt es ODBC Treiber um auf Cobol-ISAM Dateien zuzugreifen?
    Versucht es mal unter: Parkway Software Schoenstr. 58 81543 Munich Germany Phone +49 89 6518 034 Fax +49 89 6518 161 CompuServe 100612,2614


  • Wie kann ich aus Word auf Access-Datenquellen zugreifen?
    Die guenstigste Loesung ist sicherlich ueber ODBC. Eine DDE-Verbindung waere moeglich aber IMHO nicht sinnvoll. Im Microsoft Word Developer's Kit gibt es die WBODBC.DLL um ODBC Zugriffe aus Word-Makros heraus zu realisieren. Dabei muss noch nicht einmal eine Instanz von Access gestartet werden.


  • Wo bekomme ich SQL-Server?
    Es gibt SQL-Server diverser Hersteller.
    Die Luxusversion ist sicherlich Oracle
    Eine angeblich sehr stabile aber preisguenstige Loesung soll Quadbase sein. Auf deren Webseite kann man eine 2-Benutzer Demo-Lizenz anfordern.
    Natuerlich gibt es noch den MS-SQL-Server, Sybase SQL-Server.


  • Gibt es einen Ersatz fuer das buggy MS ODBC?
    Ja, das Intersolv ODBC!


  • Wie kann ich die ODBC Zugriffe protokollieren?
    Mit dem Tool ODBC-Agent von Leading Edge-Software kann man alle ODBC-Calls protokollieren. Inkl. aller Paramter, User-ID und Kennworte im Klartext. (Falls jemand eine FTP oder WWW-Adresse fü dieses Tool entdeckt schickt er diese bitte an mich!)


  • Wo bekomme ich ein ODBC-Spy-Tool?
    bei Syware fuer 49$, diesen Link habe ich allerdings noch nicht getestet.
    TracePlus32/ODBC fuer ODBC 32 erhaelt man hier.


  • Wo bekomme ich Informationen zu ODBC?
    Microsoft Press hat das Buch "Inside ODBC" herausgegeben. Gute Informationen inkl. einer Treiberdiskette mit der aktuellen ODBC-Treiberversion!


  • Ist es möglich die Access-Database Engine über ODBC als Backend für andere Datenbankfrontends zu nutzen?
    Grundsätzlich Ja, jedoch ist die Jet-Engine etwas langsam.
    Z.B. ist ein exklusiver Mehrfachzugriff in diesem Modus mit SQLWindows nicht zu realisieren.


  • Wieso schlägt die Tabelleneinbindung nach dem Verschieben der DATEN.MDB fehl?
    Weil die Pfad-Angabe zur DATEN.MDB in den Einbindungsdaten der PROGS.MDB mit abgespeichert wird. Die Tabellen müssen erst mit dem Tabellen-Einbindungs-Manager neu eingebunden werden.


  • Wie löse ich das Problem der erneuten Tabelleneinbindung bei der Distribution meiner Anwendung?
    In der NORDWIND.MDB gibt es dazu ein Beispiel.
    Allgemein: Es werden nacheinander die Pfadangaben zu den einzelnen Tabellen aktualisiert.


  • Wie konvertiere ich MS-Cardfile-Dateien nach Access 2.0?
    Diese muessen zu erst in Textdateien umgewandelt werden die dann in Access 2.0 eingelesen werden können. Die Umwandlung ist in KB-Article ID: q75492 beschrieben!
    (Was ist mit dem Article q98797)


  • Wie importiere ich eine Access 7.0 Datenbank nach Access 2.0?
    Da der Access 7.0 Objektumfang groesser ist als der von Access 2.0 gar nicht!
    Du hast die Möglichkeit eine Access 7.0 Tabelle nach 2.0 zu exportieren, dabei wird man allerdings alle nicht in 2.0 vorgesehenen Dateneigenschaften verlieren!


  • Wie importiere ich eine Datenbank nach Access deren Format Access nicht lesen kann?
    EIgentlich gibt es nur den Weg diese DB in ein Format zu exportieren das Access lesen kann (z.B. DBASE IV etc.) und diesen Export nach Access zu importieren!
    Ich empfehle diese Datenbank wenn moeglich in ein durch Trennzeichen formatierten Text zu exportieren, da hierbei die meisten Daten erhalten bleiben.


  • Warum sind meine Tabellennamen bei einem DBASE-Export ploetzlich gekuertzt?
    Weil DBASE nur 8 Zeichen lange Tabellennamen zuläßt.


  • Wie konvertiere ich eine Paradox 5.0 Datenbank nach Access 2.0?
    Microsoft Access 2.0 kann Paradox 5.0 Tabellen nicht direkt importieren. Speichere die Paradox 5.0 Tabelle im Paradox 4.0 Format ab und lese diese Datei mit Access 2.0 ein.
    Paradox 5.0 Tabellen können von Microsoft Access 7.0 direkt eingelesen werden. !


  • Was ist Datanorm?
    Ein bestimmtes Dateiformat das haeufig im Datentransfer genutzt wird. VORSICHT: Es existieren verschiedene Versionen des Dateiformat.
    Das Format kann nicht direkt nach Access importiert werden.


  • Wo finde ich das AVON der Telekom AG? (Amtliche Vorwahlnumern)
    Die Firma Quantum stellt das Vorwahlverzeichnis auf ihrem WWW-Server zur Verfügung!



Datenbankdesign


    **** N E U ****
  • Wie bekomme ich eine Strukturdarstellung meiner Datenbank?
    In der Preisklasse 5000-8000 DM gibt es Programme wie StarDesignor und ERWin beide von Logikworks. Eine Eingeschraenkte Version von ERWin gibt es auch auf der CD-ROM des Buches Datenbankdesign mit Acess 2.0/7.0 von Prof. Manfred Sommer, ITP-Verlag!


  • Wie kann man es erreichen das zwei Feldinhalte einzeln mehrfach, jedoch kombiniert nur einfach vorkommen duerfen?
    Die Loesung ist es beide Felder als Primaerschluessel zu definieren. (Beide Zeilen markieren und mit dem Button zum Primaerschluessel machen). In den Feldeigenschaften jeweils "Duplikate=Ja" einstellen.
    Ein doppeltes Vorkommen der Feldkombination ist durch die Primaerschluesseleigenschaft untersagt.


  • Wie erzeuge ich eine Verknuepfung zwischen einem Zaehler und einem Zahlfeld?
    Da beim direkten Weg gemeldet wird das beider Felder vom gleichen Typ sein muessen, machen wir es doch einfach so. Tragen sie im Datentyp des Zahlfeld Long-Integer ein!


  • Wie kann ich ein Zaehler-Feld mit einem bestimmten Wert starten lassen?
    Wenn Sie mit der Zahl 1000 starten moechten erzeugen sie eine temporaere Tabelle mit nur einem Zahl Feld. Im Eigenschaftenfeld waehlen Sie Long-Integer aus. Der Name des Zahlfeld muss dem Namen des Zaehlerfeld genau entsprechen. Geben Sie nun in der Datenansicht die Zahl 999 (bzw. Startzahl-1) ein. Entfernen Sie nun zeitweilig alle Primaerschluesseleigenschaften in der Tabelle deren Zaehler Sie manipulieren wollen. Erfernen Sie auch alle Regeln die ein NULL verhindern. Erzeugen und starten Sie nun eine Anfuegeabfrage um die temporaere Tabelle an die Haupttabelle anzufuegen. Loeschen Sie jetzt den erzeugten 999er Record in der Haupttabelle.
    Das wares !!


  • Gibt es gute ER-Diagramm Zeichenprogramme?
    ER-Diagramme kann man mit Corel-Flow 2.0 (kommerziell) oder auch dem Edge-Diagrammer Pacestar (shareware, kommerziell) zeichen!



Formulardesign


    **** N E U ****
  • Wie kann ich die Groesse der Schrift in einer MsgBox aendern?
    Eigentlich gar nicht. Man kann nur die Schriftgrösse systemweit in den Einstellungen der Systemsteuerung waehlen.
    Ein beliebter Trick ist es die jeweilige MsgBox als Formular nachzubilden und dann hat man alle Moeglichkeiten die man braucht.


  • **** N E U ****
  • Welche Steuerzeichensequenz muß man in einem Label verwenden damit ein Zeilenumbruch erzeugt werden kann?
    Chr$(13)+Chr$(10)


  • Wie kann ich in einem Bezeichnerfeld das kaufmännische Und darstellen?
    Durch Doppelschreibung &&!


  • Wie kann ich ein Feld dynamisch an den aktuellen Textinhalt anpassen?
    Mit dieser Funktion ist eine Anpassung moeglich.

    Laenge = Len(Me!Feld)
    Me!Feld.width = 200 * Laenge


  • Wie kann ich Barcodes erzeugen?
    Benutze einfach einen Barcode True-Type Font. Einfach die .TTF-Datei einspielen und dann als Textfeld mit diesem Zeichensatz in ein Formular einbauen!


  • Wie kann ich einen Button mit Text und einem Icon gleichzeitig belegen?
    Dies funktioniert leider nur auf einem Umweg.
    1. Erzeuge eine Bitmap aus dem Icon
    2. Lade diese in Paintbrush oder ein anderes Grafikprogramm ein und schreibe den Text dazu
    3. Belege den Button mit der so erzeugten Bitmap
    Aus GUI-Design Gründen ist solch eine Doppelbelegung nicht zu empfehlen, da diese Verwirrung stiftet und nicht Style-Guide konform ist.


  • Wie kann ich die Hintergrundfarbe eines Button aendern?
    Gar nicht, da das Object Button keine Hintergrund-Eigenschaft besitzt. Es gibt eigentlich nur die Möglichkeit den Button mit einer farbigen Bitmap zu belegen die nach o.a. Weise angefertigt wurde!


  • Wie bekommt man eine mit ***** verdeckte Kennworteingabe hin?
    1. Erzeuge ein Texteingabefeld
    2. Stelle in den Eigenschaften des Feldes unter 'Eingabeformat' das Format Kennwort ein


  • Wie zwinge ich den Benutzer dazu mit einem Formular immer in der maximierten Ansicht zu arbeiten?
    1. Trage in jedes 'Formular oeffnen' Ereignis den folgenden Code ein:

    Sub Form_Open(Cancel as Integer)
    DoCmd Maximize
    End Sub

    2. Nimm folgende Formulareinstellungen in der Entwurfsansicht vor um zu verhindern, dass der Benutzer die Fenstergroesse veraendert.
    Min Schaltflaeche Nein
    Max Schaltflaeche Nein
    Systemmenuefeld Nein



Bedienung


  • Wie gebe ich in einem Memofeld einen Zeilenumbruch ein? Bei [RETURN] springt Access immer auf das naechste Feld.
    Mit der Tastenkombination [STRG]+[RETURN]!



Berichtdesign


    **** N E U ****
  • Wie kann mann Tabellen mit variabler Zeilenhoehe drucken?
    Das Problem ist das bei der Eigenschaft vergrösserbar alle Rahmen der nicht gedehnten Felder nicht mit vergrössert werden.
    Karsten Pries stellt in den FAQ eine Loesung zur Verfügung


  • **** N E U ****
  • Wieso erhalte ich fuer jede korrekte Seite eine leere Seite?
    Haeufig ueberschreitet irgendein Objekt die Seitengroesse. Das Objekt (bzw. der Rest) wird dann auf der naechsten Seite dargestellt.
    Dies kann auch fuer ein unsichtbares Objekt gelten das dann natuerlich zu einer leeren Seite fuehrt!


  • **** N E U ****
  • Wie kann ich Eigenschaften eines Berichtobjektes beim Ausdruck aendern?
    So etwas muss ueber das Ereignis OnPrint realisiert werden.


  • Warum schieben sich nebeneinander angeordnetet Objekte nicht zusammen obwohl ich die Eigenschaft "verkleinerbar" auf Ja gesetzt habe?
    Die Eigenschaft bezieht sich nur auf die vertikale Ausdehnung eines Feldes. Eine Horizontale Ausdehnungsberücksichtigung kann durch concatenation der beiden Feldinhalte geschehen.


  • Wie kann ich eine seitenorientierte Zwischensumme in einem Bericht erzeugen?
    Das geht über einen Trick:
    Erzeuge ein unsichtbares Feld im Detailbereich mit der Option "Laufende Summe"+"über alles". (Dieses Feld muss an das zu summierende Datenfeld gebunden sein!!!)
    Fuege im Seitenfuss ein sichtbare Feld ein welches auf den Inhalt des unsichtbaren verweißt.
    =[unsichtbares_Summenfeld])
    Da man jedoch meistens auf der letzten Seite keine Zwischensumme mehr auswerfen moechte nehme man:
    =wenn(Seite=Seiten;NULL;[unsichtbares_Summenfeld])
    !


  • Wie kann ich die Seitenzahlen eines Berichtes der eine Datensatzgruppierung enthält nach jeder Gruppe wieder mit 1 anfangen lassen?
    Die Antwort findest Du in MS-ACC-KB Artikel q131937!


  • Was sind die maximalen Groessen/Abmessungen eines Berichtes?
    Fuer Access 7.0:
    Breite des Formulars oder Berichts 55,87 cm (22 Zoll)
    Hoehe eines Bereichs 55,87 cm (22 Zoll)
    Hoehe aller Bereiche zuzueglich der Bereichskoepfe (in der Entwurfsansicht) 508 cm (200 Zoll)


  • Wie kann ich Variablenwerte in meinen Bericht einbauen?
    In der Reporteigenschaft "BeimOeffnen" koennen z.B. ungebundene Textfelder gesetzt werden. Das Codebeispiel aendert zur Laufzeit den Berichtsnamen.

    Me![Titel].caption = "Ein neuer Berichtsname"



Fehler, Bugfixes etc.



    **** N E U ****
  • Gibt es eigentlich ein Bugfix zu Access '95?
    Ja! ;-) Access 97 ! Scherz beiseite siehe eine Frage weiter.


  • **** N E U ****
  • Bugfix fuer Access 95?
    Siehe KB-Artikel Q151186. (Updates fuer die JetEngine DLL's)
    Q143163 (Probleme mit der JetEngine und NT)
    Q158933 (Fehlermeldung "Isn't Index in this table")


  • **** N E U ****
  • Warum bekomme ich bei der Addierung von Stringfeldern nichts zu Gesicht?
    Weil String + NULL = NULL ist und String & NULL = String ist! ;-)


  • **** N E U ****
  • Gibt es Probleme mit Access 2.0 und Win95(b)?
    Das Problem ist der Fehler in der IO.SYS in Win95(b). Es gibt auch einen Bugfix von Microsoft.


  • **** N E U ****
  • Welche Fehler beseitigt das Update der JetEngine auf Version 3.51?
    Beim komprimieren von Datenbanken unter Access '97 treten faelschlicherweise folgende Fehlermeldungen auf. Deren Ursache wird beseitigt.
    3197 The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time.
    3343 Unrecognized database format 'databasename.mdb'.
    3015 'databasename.mdb' isn't an index in this table. Look in the Indexes collection of the TableDef object to determine the valid index names.


  • **** N E U ****
  • Ich bekomme beim Aufruf von Access '97 die Fehlermeldung " Microsoft Access kann nicht gestartet werden, da auf diesem Computer keine entsprechende Lizenz vorliegt."?
    Eine Antwort verrät der KB-Artikel ID: Q141373 !


  • **** N E U ****
  • Meine Datenbank ist defekt und laesst sich nicht mehr reparieren, was ist zu tun?
    Die einzige Moeglichkeit die jetzt noch bleibt ist eine neue Datenbank zu erzeugen und in diese alle noch nicht defekten Objekte der alten DB zu importieren.


  • **** N E U ****
  • Meine Access 7.0 Datenbank ist ploetzlich um einige Megabyte groesser, warum?
    Eine Antwort auf diese Frage ist noch nicht bekannt. Nach intensiver Benutzung kann die Datenbank ploetzlich krebsartig anwachsen. (Bsp. 1,9MB zu 78MB oder 68MB zu 324MB).
    Das Problem wird i.d.R. durch Reparieren und Kompaktieren der Datenbank behoben.


  • Was ist beim Access Einsatz unter Windows NT zu beachten?
    Installieren Sie moeglichst alle erhaeltlichen Service-Packs fuer NT. Das minimiert das Auftreten der allgemeinen Schutzverletzungen! (s.u.)


  • Was beachte ich bei Windows NT und Access 7.0?
    Es gibt einen Bugfix fuer die JetEngine. Die Dateien MSJT3032.DLL, MSWNG300.DLL, MSAJETFS.DLL sollen aktualisiert werden. Naeheres unter Artikel Q151186


  • Wo finde ich eine Liste der Access 2.0 Fehlermeldungen?
    So eine Liste findet sich im KB Artikel Q115846.


  • Warum wird ein Fenster nicht mehr angezeigt?
    Es kann eventuell ausserhalb des sichtbaren Bildschirmbereiches liegen.
    Versuchen Sie das Fenster ueber die Windowstastenkombinationen 'blind' zu verschieben bis Sie es wieder sehen koennen!


  • Beim Import groesserer ASCII-Dateien nach MS-Access soll es Probleme geben?
    Im Usenet wurden Probleme beschrieben, das die Umlaute der ersten Datensaetze richtig konvertiert wurden, jedoch mit steigender Satznummer Konvertierungs-Fehler auftraten!
    Wer etwas darueber weiss moechte sich bitte bei mir melden!
    Der Fehler soll sich nur auf Access 2.0 beziehen.

    Und schon haben wir eine Antwort:
    Das gleiche Problem trat auf. Bei jedem Konvertierungsversuch traten die Fehler bei den gleichen DS auf. Loeschte man die ersten 100 DS traten die Fehler bei anderen DS auf.
    Das Einspielen des Access Service-Pack 11/94 loest das Problem.


  • Was bedeutet der Fehlercode 3252 ?
    Ein Formular, dessen zugrundeliegende Abfrage eine benutzerdefinierte Funktion enthaelt, die versucht, die Eigenschaft 'DatensatzgruppeDuplizieren' einzustellen oder abzurufen, kann nicht geoeffnet werden!


  • Gibt es ein Osterei in Access 2.0?
    Ja!
    Erzeuge eine neue Datenbank mit den folgenden Tabellen
    Tabellenname: A
    Tabellenname: CC
    Tabellenname: E
    Tabellenname: SS
    dann rufe Hilfe/Info aus und halte [STRG]+[SHIFT] gedrueckt und klicke mit der rechten Mousetaste zweimal auf das Schluesselsymbol.
    BTW: Es ist schwer Access dann wieder zu beenden ;-)
    Diesen Tip habe ich auf der Ostereierseite gefunden.


  • Wie breche ich eine Endlosschleife in Access ab?
    Wenn man einen "MsgBox-Debug" programmiert hat, kann es sein das alle Eingaben abgefangen werden. Aber mit [STRG]+[BREAK] läßt sich das meistens wieder abbrechen!


  • Wieso laesst Access soviele Elemente meines Berichtes weg wenn ich diesen in RTF exportiert habe?
    Weil das RTF-Format viele Formatierungen ueberhaupt nicht kennt und deshalb die Schnittmenge beider Formate exportiert wird!


  • Warum verliert mein Access 2.0 unter Windows 95 die Formateinstellung Fett bei Textfeldern?
    Diese ist nicht verschwunden sondern wird nur nicht soo fett dargestellt! ;-)


  • Nach einer Neuinstallation eines HP-Druckertreibers (HP5) kommt aus Access auf den HP4-Druckern nur noch Muell an?
    Ein Download einer aktualisierten Treiberversion von HP beseitigt i.d.R. die Probleme.


  • Wieso bekomme ich einen "Out Of Memory" Fehler bei der Konvertierung von Access 2.0 nach 7.0 Datenbanken?
    Dieser Fehler ist bereits bei Microsoft bekannt und soll in der naechsten Version von Access behoben werden. Er tritt bei Benutzung von seeeehr vielen Modul basierten Objekten (Formulare, Reports, Module) auf.
    Die einzige Möglichkeit den Fehler zu umgehen ist es die Module in eine Bibliotheks-Datenbank einzusetzen.


  • Wodurch entsteht der Fehler "Query Too Complex"?
    Gewöhnlich tritt dieser Fehler waehrend des Startens von Reports unter Access 1.x oder 2.0 auf. Er hat damit zu tun das jede Sektion des Report eine interne temporäre Abfrage erzeugt die dann alle zusamen compiliert werden. Die Compilation findet im 64K Segment des Speichers statt. Wenn in diesem Speicherbereich ein Fehler auftritt wird die o.a. Meldung erzeugt.
    In Access 7.0 gibt es das 64K-Limit nicht mehr, jedoch gibt es ebenso eine dynamische Speichergrenze fuer diese Aktionen!


  • Was ist Fehler 1064?
    JET_errCantBuildKey -1064 Can't build key for this sort order.


  • Ich möchte den Feldinhalt eines Feld "Name" aendern aber es funktioniert nicht, warum?
    Weil "Name" unter Access ein reserviertes Wort darstellt. Vermeiden Sie die Benutzung reservierter Worte.



Abkürzungs- und Synonym-Verzeichnis:

    ABSZEß schimpfender Ausruf eines Access-Programmierers (med. eitriges Geschwür)
    ADT Access Developers Toolkit
    API Advanced Programming Interface
    BMP Bitmap
    CS Client Server
    CSCW Computer Supported Cooperative Work DB Daten-Bank
    DBMS Daten-Bank Management System
    DLL Dynamic Link Library (Datei Extension)
    ER Entity Relationship
    FAQ Frequently Asked Questions
    GPF General Protection Fault (zu dtsch. Allgemeine Schutzverletzung)
    GIF Graphics Interchange Format
    GUI Graphical User Interface
    HLP Help (Windows Helpfile-Datei Extension)
    ISAM Index Sequentiell Access Method
    KB Knowledge Base
    KB Kilo Byte
    KI Künstliche Intelligenz
    MDB Microsoft Database (Datei Extension fuer Access Datenbanken)
    MS Microsoft oder auch Maso/Sado
    MSL Microsoft Software Library
    ODBC Open Database Connectivity (spöttisch auch open data bug collection genannt!)
    ODE Office Developers Edition
    OLE Object Linking and Embeding (oder Ausruf eines Torreros ;-) )
    OO Object Orientiert
    RTF Rich Text File Format
    SQL Standard Query Language
    TIF Taged Image Format
    TTF True Type Font
    UI User Interface = Benutzerschnittstelle
    VBA Visual Basic for Applications
    WFM Workflow Management
    WMF Windows Meta File (Datei Extension)

andere nützliche Links: