Service Pack 1 zu Visual FoxPro 7.0 Microsoft GmbH Seit kurzem sind zwei neue Downloads für Visual FoxPro 7.0 verfügbar. Zum einen das neue Service Pack 1 mit vielen Korrekturen zur ersten Version von Visual FoxPro und zum anderen das Zusatzprogramm VFPCOM zur Anbindung an COM-Ereignisse und Verwendung von ADO. Nachfolgend die Aufstellung der mit dem Service Pack 1 behobenen Fehler – eine erstaunlich lange Liste, die einen vermuten läßt, daß man ohne dieses Service Pack besser nicht weiter arbeitet <g>. Neue Download-Angebote Probleme, die das Service Pack 1 behebt Visual FoxPro Service Pack 1 Das Service Pack 1 für Microsoft Visual FoxPro 7.0 stellt die neuesten Aktualisierungen verbunden mit verschiedenen Erweiterungen und Stabilitätsverbesserungen in einem integrierten Paket zur Verfügung. Das Download enthält alle Unterlagen für die Aktualisierungsvorgänge. Dieses Service Pack umfasst auch eine Anzahl von anderen Änderungen, die entworfen wurden, um die Zuverlässigkeit und die Leistung von Visual FoxPro 7.0 zu verbessern. In der folgenden Liste sind die in Visual FoxPro 7.0 auftretenden Probleme aufgeführt, die im Service Pack 1 beseitigt sind: Eingabehilfen (Accessibility) Ein gebundenes Optionsfeld wird möglicherweise nicht angezeigt, obwohl es mit MSAA Accessible Event Watcher aktiviert wurde. Fataler Ausnahmefehler, wenn das Eigenschaftenfenster aktiviert wird und AccEvent-Viewer so festgelegt ist, dass vollständige Ereignisinformationen zu unsichtbaren/ausgeblendeten Fenstern angezeigt werden. Mit MSAA Accessible Event Watcher kann ein fataler Ausnahmefehler im Bearbeitungsfeld erscheinen. Fataler Ausnahmefehler, wenn der Objektkatalog gestartet wird und AccEvent-Viewer so festgelegt ist, dass vollständig ausgeblendete OBJ_LOCATION-Werteereignisse gezeigt werden Der Fokus für Optionsfelder wird in MSAA Accessible Event Watcher möglicherweise nicht angezeigt, wenn eine Symbolleiste vorhanden ist. VFPCOM für Visual FoxPro 7.0 Das Dienstprogramm VFPCOM für VFP 7.0 steht jetzt zum Download bereit. Mit VFPCOM können Sie die Interoperabilität von Visual FoxPro mit anderen COM- und ADO-Komponenten erweitern. Es handelt sich bei diesem Dienstprogramm um einen COM-Server mit zusätzlicher Funktionalität, wenn Sie ADO verwenden und mit Visual FoxPro 7.0-Anwendungen auf COMEreignisse zugreifen. 02-13 Service Pack 1 für VFP 7.0 FoxX-Professional Seite 1 Software für IFeel Logitech-Maus kann bewirken, dass Visual FoxPro 7.0 beim Startvorgang nicht mehr reagiert. Visual FoxPro 7.0 wird nach dem Start sofort beendet, wenn das Bildschirmsprachausgabe-Programm ausgeführt wird. Fataler Ausnahmefehler in einem Formular bei einer privaten Datensitzung und einem gebundenen RichText-ActiveX-Steuerelement Formulare: DO FORM in einer EXEDatei belässt ein wartendes Formular, bis der Prozess beendet wurde. Datenraster (Grid): Die Farben der Überschriften und einiger Rasterlinien wechseln in die Farbe der Fensterschriftart. Datenraster (Grid): Das Click-Ereignis und andere Ereignisse werden nur aufgerufen, wenn die Datenquelle (RecordSource) des Datenrasters Datensätze enthält. Ein Listenfeld mit mehr als 750 Einträgen lässt sich nur langsam freigeben, wenn mit der BILD-ABTASTE oder mit Pfeiltasten ein Bildlauf ausgeführt wurde. COM Zuweisen von SOAP connector.outputstream zu einer Variablen kann zum Absturz von IntelliSense führen. Fataler Ausnahmefehler mit CreateObjectEx() und Excel.Application. Fataler Ausnahmefehler bei FOR EACH-Verweis auf die Auflistung für Outlook-Ordnerelemente. Parameter, die über leere Platzhalter übergeben werden, haben den Standardwert NULL statt .F. Eine zweite Instanz des STDLL-Objekts verursacht bei nicht englischen Betriebssystemen einen fatalen Ausnahmefehler. Es ist nicht möglich, die Office-Add-InSchnittstelle IDTExtensibility2 aus msaddndr.dll zu implementieren. Visual FoxPro-Fehler -1073741819 in COM.dll, wenn in der SQL-Anweisung SELECT eine LIKE-Klausel verwendet wird. Steuerelemente Ein Zuweisen eines Objektverweises zu einer Eigenschaft mit der AssignMethode kann einen freien Verweis hinterlassen. Debugger Designer Formular-Designer: Fataler Ausnahmefehler bei ResetToDefault für eine leere Methode. Formular-Designer: ResetToDefault kann eine benutzerdefinierte Methode vollständig und nicht nur Code entfernen. Formular-Designer: Der Fehler "Datei ist nicht geöffnet” kann erscheinen und bewirken, dass Visual FoxPro eine unendliche Schleife ausführt, wenn ein Formular mit festgelegtem Haltepunkt gespeichert wird. Bearbeitungsfeld (EditBox): Bildlaufleisten in einem Bearbeitungsfeld-Steuerelement werden in einer kompilierten Anwendung zur Laufzeit nicht angezeigt. 02-13 Service Pack 1 für VFP 7.0 Fataler Ausnahmefehler, Absturz oder Visual FoxPro verschwindet, wenn der Mauszeiger im Programmverfolgungsfenster über dem Memofeld gehalten wird FoxX-Professional Seite 2 Datenbankmodul Der Fehler "Der Cursor kann nicht aktualisiert werden" kann beim Erstellen eines IDX-Indexes für eine Tabelle in der Datenbank (DBC) erscheinen, wenn die Tabelle schreibgeschützt, einbezogen oder NOUPDATE ist. Der Fehler " Der Cursor kann nicht aktualisiert werden" kann beim Indizieren einer Sicht erscheinen, wenn die Datenbank schreibgeschützt ist. Ein gefilterter Index verhindert möglicherweise, dass Datensätze mit passenden Daten angezeigt werden. Eine zweite TableUpdate()-Funktion nach einem Fehler, der die Folge des Fehlers " Die Eindeutigkeit des Indexes wird verletzt" ist, gibt .T. zurück und kann den Index beschädigen. Beim INDEX ON-Befehl kann ein fataler Ausnahmefehler erscheinen. GetFldState() gibt nach END TRANSACTION an, dass der zweite hinzugefügte Datensatz angefügt ist. Indizieren kann bei festgelegter Zwischenspeicherung (buffering) unter bestimmten Bedingungen bewirken, dass Visual FoxPro nicht mehr reagiert. Interner Konsistenzfehler beim Anfügen von Datensätzen an eine zwischengespeicherte (gepufferte) Tabelle, nachdem Datensätze gelöscht wurden. Interner Konsistenzfehler bei einem GOTO-Befehl für einen zwischengespeicherten Datensatz in einer Ansicht, der einen CDX-Index hat. Keine Freigabe des gesamten reservierten Speichers (Memory Leak) bei Funktionsaufruf in SELECT ... ORDER BY nach einem Fehler. SEEK(), INDEXSEEK() und LOOKUP() finden nicht vorhandene Datensätze, wenn SET KEY wirksam ist. 02-13 Service Pack 1 für VFP 7.0 SetFldState() lässt es nicht mehr zu, den Status für ein Feld mit einem Wert festzulegen, das durch den Standardwert festgelegt ist. USE … CONNSTRING bewirkt, dass die Klauseln NODATA und ALIAS ignoriert werden. IDE (Umgebung für interaktive Entwicklung) Codeänderungen können verloren gehen, wenn zwischen Lesezeichen gewechselt wird, die sich in unterschiedlichen Methoden befinden. Andockbare Fenster können abstürzen, wenn die Tabelle für interne Namen mehr als 32.000 Einträge umfasst. Ein angedocktes Überwachungsfenster oder eine angedockte Symbolleiste kann einen Absturz verursachen, wenn _Screen.Resize außer Kraft gesetzt wird. Fataler Ausnahmefehler, wenn das Eigenschaftenfenster aktiviert wird, nachdem ein Bericht gespeichert und geschlossen wurde. Fataler Ausnahmefehler, wenn im Eigenschaftenfenster geklickt wird, nachdem im Formular-Designer ein Datenraster (Grid) bearbeitet wurde. Fataler Ausnahmefehler bei einem Bericht in Seitenansicht, wenn das Eigenschaftenfenster und die Datenumgebung geöffnet sind. IntelliSense: fataler Ausnahmefehler beim Eingeben von = bei CreateObjectEx() mit ExcelEigenschaft mit früher Bindung. IntelliSense kann einen internen Konsistenzfehler verursachen, wenn ein CREATE SQL VIEW-Befehl bearbeitet wird. IntelliSense: fataler Ausnahmefehler C0000005 mit SourceSafe Automation. FoxX-Professional Seite 3 Fehler wegen unpassendem pushjmp/popjmp und fataler Ausnahmefehler, wenn der Befehl Formatieren bei geöffnetem IntelliSense-Manager aufgerufen wird. Ein Suchen in Rückwärtsrichtung im Dialogfeld Suchen mit einer bestimmten Platzhalterzeichenfolge kann einen fatalen Ausnahmefehler verursachen. Der Befehl Eigenschaften aus dem Menü Tabelle verursacht einen fatalen Ausnahmefehler, wenn eine Tabelle durchsucht wird, die sich nicht in der aktuellen Datensitzung befindet. Visual FoxPro-IDE oder Laufzeitanwendung verhält sich so, als wäre AlwaysOnTop wirksam. REPORT FORM ... ASCII fügt keine Leerzeichen mehr ein. XMLToCursor() konvertiert keine XML-Datumsangaben mit optionalen Teilsekunden und mit Zeitzone. Fataler XMLToCursor()Ausnahmefehler, wenn das Tag root bei attributbezogenem (Attribute-centric, attributzentriert) oder Raw XML fehlt. XMLToCursor() ergibt einen Syntaxfehler oder fatalen Ausnahmefehler, wenn XML sehr viele Spalten hat. XMLToCursor() fügt fälschlich eine Zeile hinzu, wenn ein Inlineschema verwendet wird. XMLToCursor() kürzt einem DBCS-System. Daten auf Sprache OLE DB-Provider CTOT() von XML-Datumszeichenfolge erfordert SET DATE YMD. "Operation aus mehreren Schritten erzeugte Fehler" ("Multiple-step operation generated errors"), wenn RS ausgeführt wird. Aktualisierung mit leerem DATE-Feld in FoxTable. Hinzufügen der Fähigkeit, mit einem Datenquellennamen (DSN, Data Source Name) eine Verbindung zu einem Provider herzustellen. CursorToXML() codiert Memofelder in CDATA-Abschnitten. CursorToXML() hat ein Schemaattribut IsDataSet. Fataler Ausnahmefehler und Absturz bei Code, der TEXT TO und SET TEXTMERGE mischt. Fataler Ausnahmefehler, wenn ein Verweis auf eine nicht vorhandene Auflistung ausgeführt wird. Ein Index, der mit ADOX erstellt wurde, enthält TRANSFORM() im Indexausdruck. Fataler Ausnahmefehler mit VAL()Funktion, wenn ihr ein Alpha-Zeichen übergeben wird. OLE DB-Provider-Eigenschaft für den Namen der Felderauflistung gibt keine korrekten Werte zurück. Fataler Ausnahmefehler, wenn beim Aufrufen von EDITSOURCE() deren dritter Parameter einen . (Punkt) enthält. IMPORT aus Excel-Datei verursacht den Fehler "Datentyp stimmt nicht überein" mit gefüllter Namenstabelle. Verminderte Leistung, wenn die LockType-Eigenschaft eines ADORecordSet-Objekts auf 4 (adLockBatchOptimistic) festgelegt ist. Der Provider kann fehlschlagen, nachdem er 512 Datensätze in einer Schleife in ADO aktualisiert hat. falsches JustPath() zeigt eine Zeichenfolge, die dbc/table enthält, fälschlich so an, als habe sie einen Pfad. 02-13 Service Pack 1 für VFP 7.0 FoxX-Professional Seite 4 Der Provider DBSCHEMA_TABLES ordnungsgemäß. durchläuft nicht einer vorhandenen Tabelle oder eines vorhandenen Cursors. Projekte A) Erstellungsfehler, wenn ein Projekt erstellt und dabei ein langer Parameter an NewObject() übergeben wird. Project.Files.Count wird nicht inkrementiert, wenn eine Datei über die Benutzeroberfläche hinzugefügt wurde. Mit dem folgenden Skript können Sie die IntelliSense-Datei aktualisieren. Fügen Sie den folgenden Code in eine neue PRGProgrammdatei ein, und führen Sie die Programmdatei aus. Project.Files.Count wird nicht aktualisiert, wenn eine Datei über die Benutzeroberfläche ausgeschlossen/aufgenommen wurde. Setupprogramm Die Product ID wird bei dem für Spanisch lokalisierten Visual FoxPro 7.0 nicht im Hilfedialogfeld Info angezeigt. Die in spanischer Sprache lokalisierte Visual FoxPro 7.0-Anwendung zeigt die Menüs und die Hilfe in Englisch mit einigen gebietsspezifischen Einstellungen an. Verbesserungen in Service Pack 1 XMLToCursor()-Funktion Eine neue nFlag-Einstellung wurde hinzugefügt, um eine vorhandene Tabelle oder einen vorhandenen Cursor als Ziel für XML angeben zu können: XMLTOCURSOR(XMLSource eExpression | cXMLFile [, cCursorName [, nFlags ]]) nFlag Beschreibung 8192 cCursorName verweist auf eine vorhandene Tabelle oder einen vorhandenen Cursor oder den Alias 02-13 Service Pack 1 für VFP 7.0 Update Intellisense * Skript zum Aktualisieren von IntelliSense-FoxCode-Tabelle * mit XMLToCursor() mit neuer nFlag-Einstellung. * Das Skript sollte in der PRGDatei so aussehen wie hier. Kopieren des Textes aus * Der Webbrowser könnte weitere leere Zeilen einfügen. * (Der Abstand zwischen TEXT...ENDTEXT ist kritisch.) LOCAL lcSaveArea,lcTipStr lcSaveArea=SELECT() SELECT 0 TEXT TO lcTipStr NOSHOW XMLTOCURSOR() nFlags Parameter (additiv): 4: Beibehaltung von Leerschritten in den Daten. Setzt das xml:spaceAttribut der XML-Daten außer Kraft. 512: Der erste Parameter ist ein Dateiname/eine Speichervariable, der/die eine gültige XML-Datei angibt. Ansonsten ist er ein Ausdruck, der XML zurückgibt, oder eine Speichervariable mit einer XMLZeichenfolge. 1024: Zeichen- und Memofelder im resultierenden Cursor werden mit der Option NOCPTRANS erstellt. Der Text oder die XML-Werte in den eingehenden Elementen werden nicht umgewandelt und byteweise in das Zeichen- oder Memofeld eingefügt. 2048: xsd:decimal-Typen mit totalDigits="19" und fractionDigits="4" zu Währungsfeld zuordnen und nicht zum Standard Numerisch. FoxX-Professional Seite 5 sind, muss aber mindestens übereinstimmende Spalte haben. 4096: base64-Entschlüsselung für binäre Memofelder deaktivieren. 8192: cCursorName verweist auf eine vorhandene Tabelle oder einen vorhandenen Cursor oder auf einen entsprechenden Alias für eine vorhandene Tabelle oder für einen vorhandenen Cursor. Der Cursor oder die Tabelle kann zusätzliche Spalten aufweisen, die keinem Element in der XML-Datei entsprechen. Die Datentypen in cCursorName werden erzwungen. Wenn eine Spalte beispielsweise als Logisch definiert ist und das entsprechende XML-Element Werte mit einem inkompatiblen Typ (Datum, DatumZeit, Gleitkomma, Numerisch, Währung usw.) enthält, führt der Versuch, diese Daten zu importieren, zu einem Fehler. Visual FoxPro gibt den Fehler “Datentyp stimmt nicht überein” zurück. ENDTEXT UPDATE (_FOXCODE) SET tip = lcTipStr WHERE ALLTRIM(Expanded)=="XMLTIP4" USE SELECT (lcSaveArea) B) Parameter nFlag Wenn nFlag (additiv) auf 8192 festgelegt ist, gelten folgende Regeln: Wenn cCursorName nicht gefunden wird, wird Fehler 1 zurückgegeben: "Datei '<Laufwerk><Pfad><Dateiname>' ist nicht vorhanden." Wenn cCursorName bereits Daten enthält, werden die aus der XML-Datei zu importierenden Daten an die vorhanden Daten angefügt. Wenn cCursorName eine leere Zeichenfolge ("") angibt, wird XML in die Tabelle oder den Cursor importiert, die oder der im aktuellen Arbeitsbereich geöffnet ist. Bei leerer Zeichenfolge oder wenn kein Parameter übergeben wurde und wenn im aktuellen Arbeitsbereich keine Tabelle oder kein Cursor geöffnet ist, wird der Fehler 52 zurückgegeben: "Es ist keine Tabelle im aktuellen Arbeitsbereich geöffnet." Elementnamen in der XML-Datei werden den Spaltennamen in cCursorName zugeordnet. Daten werden nur in Spalten importiert, die mit den Elementnamen in der XMLDatei übereinstimmen. Der Cursor oder die Tabelle darf weniger Spalten aufweisen, als in der entsprechenden XML-Datei vorhanden 02-13 Service Pack 1 für VFP 7.0 eine C) Einschränkungen Datentypen Für Datentypen Einschränkungen: gelten bei die folgenden Zeichen, Zeichen (binär), Memo und Memo (binär): Es werden alle Daten akzeptiert. Daten, die die Länge einer Zeichenspalte überschreiten, werden entsprechend gekürzt. Numerisch, Gleitkomma: Es werden numerische Daten mit und ohne Dezimalteil akzeptiert. Zahlen, die außerhalb des Visual FoxPro-Bereichs für den jeweiligen Typ liegen, werden entsprechend den aktuellen Visual FoxPro-Regeln gekürzt oder durch den Indikator für numerischen Überlauf (“*************”) ersetzt. Double: Es werden numerische Daten akzeptiert, die im Bereich des Visual FoxPro-Typs Double liegen. Zahlen, die außerhalb des Visual FoxPro-Bereichs für diesen Typ liegen, werden entsprechend den aktuellen Visual FoxPro-Regeln gekürzt. Währung: Es werden numerische Daten akzeptiert, die im Bereich des Visual FoxPro-Typs Währung liegen. Zahlen, die außerhalb des Visual FoxProBereichs für diesen Typ liegen, werden FoxX-Professional Seite 6 entsprechend den aktuellen FoxPro-Regeln gekürzt. Visual Integer: Es werden numerische Daten akzeptiert, die im Bereich des Visual FoxPro-Typs Integer liegen. Zahlen, die außerhalb des Visual FoxPro-Bereichs für diesen Typ liegen, werden entsprechend den aktuellen Visual FoxPro-Regeln gekürzt. Logisch: Es werden die Werte true, false, 1 und 0 sowie die Visual FoxProForm .T. und .F. akzeptiert. Datum: Es werden Werte akzeptiert, die im XML-Format date oder dateTime vorliegen. Visual FoxPro konvertiert XML-Werte im Format date/dateTime in entsprechende Visual FoxProDatumswerte. Nur der M/T/J-Teil (M/D/Y) eines XML-Wertes im Format date oder dateTime bleibt erhalten. DatumZeit: Es werden Werte akzeptiert, die im XML-Format date oder dateTime vorliegen. Visual FoxPro konvertiert XML-Werte im Format date/dateTime in entsprechende Visual FoxProDatumswerte. Genauigkeit, die über diejenige hinausgeht, die vom Visual FoxPro-Datentyp DatumZeit unterstützt wird, geht verloren. Wenn der XML-Code ein Schema enthält oder auf ein solches verweist und die Datentypen im Schema nicht zu den Datentypen der Tabelle oder des Cursors passen, werden die Datentypen der Tabelle oder des Cursors verwendet. Berichterstattung über fatale FoxProFehler Visual FoxPro 7.0 Service Pack 1 beinhaltet eine neue Unterstützung für die Berichterstattung über fatale FoxPro-Fehler. Wenn ein fataler Ausnahmefehler ausgelöst wird, wird ein Dialogfeld für die Fehlerberichterstattung angezeigt, das es Ihnen ermöglicht, Details zum Fehler (so auch den Status Ihrer Visual FoxProUmgebung) an Microsoft zu senden. Die 02-13 Service Pack 1 für VFP 7.0 Berichterstattung ist auf die vollständige Entwicklungsversion von Visual FoxPro 7.0 beschränkt und wirkt sich nicht auf Visual FoxPro 7.0-Laufzeitanwendungen aus. Es handelt sich dabei um das Fehlerberichterstattungssystem, das auch für Office XP, Visual Studio .NET und Windows XP verwendet wird. Sie können die Berichterstattung über fatale FoxPro-Fehler deaktivieren, indem Sie die Dateien DW15.EXE und DWINTL.DLL aus dem Visual FoxPro 7.0Stammverzeichnis entfernen. Diese Dateien wurden vom Service Pack 1 lediglich in dieses Verzeichnis kopiert; sie wurden nicht registriert. Installieren von Microsoft Visual FoxPro 7.0 Service Pack 1 Hinweis: Es gibt nur ein einheitliches Servicepack für sämtliche Sprachversionen von Visual FoxPro – deshalb braucht man nicht nach einer deutschen Version des Servicepacks zu suchen. Das Service Pack aktualisiert eine Vielzahl von Programmen und Bibliotheken. D) Vor dem Installieren Service Packs des Sie müssen Zugriff auf die originalen CDs von Visual FoxPro 7.0 oder auf das Netzwerk haben, von dem Sie Visual FoxPro 7.0 installiert haben, da Visual FoxPro 7.0 für sein Setupprogramm die Funktionen von Microsoft Windows Installer 1.2 verwendet. Windows Installer 2.0 (das mit Windows XP geliefert wird) ermöglicht es Ihnen, dieses Service Pack zu installieren, ohne dass die Originalmedien oder das Setupverzeichnis erforderlich sind. Wenn Sie nicht Windows XP, sondern eine andere Windows-Version verwenden, können Sie die Version von Windows Installer über folgende Webseiten aktualisieren: Windows Installer 2.0 Redistributable für Windows NT 4.0 und Windows 2000: FoxX-Professional Seite 7 http://www.microsoft.com/downloads/rele ase.asp?releaseid=32832 Windows Installer 2.0 Redistributable für Windows 98 und Windows Me: http://www.microsoft.com/downloads/rele ase.asp?ReleaseID=32831 E) Wenn das Ausführen von "VFP70SP1.msp" das Service Pack-Setupprogramm nicht startet Pack-Setupprogramm starten. Wenn für MSP-Dateien eine Dateizuordnung vorhanden ist, die nicht zu Windows Installer führt, wird bei dem Versuch, das Setupprogramm zu starten, VFP70SP1.msp mit dieser zugeordneten Anwendung geöffnet. In diesem Fall wird das Service Pack-Setupprogramm nicht ordnungsgemäß gestartet. Ein Ausführen von VFP70SP1.msp sollte Windows Installer aufrufen und das Service 02-13 Service Pack 1 für VFP 7.0 FoxX-Professional Seite 8