Session D-SP1

Microsoft Visual FoxPro 8.0
Service Pack 1 Readm

Mathias Gronau


Microsoft Visual FoxPro 8.0 Service Pack 1 Readme

Dieses Service Pack ist ein Update zur ursprünglich erschienen Version von Visual FoxPro 8.0. Es behandelt eine Vielzahl bekannter Probleme mit dem Produkt.

Dieser Artikel enthält die aktuellsten Informationen des Visual FoxPro-Produktteams. Zusätzliche Informationen über Visual FoxPro finden Sie auf der Visual FoxPro-Homepage unter http://msdn.microsoft.com/vfoxpro.

Installation des Visual FoxPro Service Pack 1

Beachten Sie bitte: Bevor Sie das Visual FoxPro 8.0 Service Pack 1 installieren können, müssen Sie Visual FoxPro 8.0 installiert haben. Das Service Pack kann nur mit der endgültigen Version von Visual FoxPro 8.0 installiert. Sie können damit keine bestehende Betaversion aktualisieren werden.

So installieren Sie das Service Pack

  1. Um während der Installation über eine Referenz zu verfügen, drucken Sie diese Datei aus.
  2. Auf der Downloadseite des Visual FoxPro 8.0 Service Pack 1 klicken Sie auf die Schaltfläche Download.
  3. Akzeptieren Sie die Lizenzvereinbarung. Dieser Schritt ist erforderlich, um das Service Pack herunterladen zu können.
  4. Wählen Sie, ob die Datei geöffnet oder auf dem lokalen Rechner gespeichert werden soll.
    Wenn Sie Öffnen wählen, wird Setup automatisch aufgerufen.

    Wenn Sie speichern wählen, wechseln Sie in das Verzeichnis, in dem Sie die Datei VFP80SP1.EXE gespeichert haben und klicken doppelt darauf, um das Setup des Service Packs zu starten.
  5. Folgen Sie den Anweisungen auf dem Bildschirm, um die Installation zu vollenden.

In Visual FoxPro 8.0 Service Pack 1 geänderte und hinzugefügte Dateien

Die folgenden Dateien wurden für Service Pack 1 aktualisiert:

VFP8.EXE
VFP8R.DLL
VFP8T.DLL
VFPOLEDB.DLL
RIBUILDR.APP
REDIST.TXT
TASKPANE.APP
VFP8ENU.DLL
VFP8CHT.DLL
VFP8CHS.DLL
VFP8KOR.DLL
VFP8RENU.DLL
VFP8RCHS.DLL
VFP8RCHT.DLL
VFP8RCSY.DLL
VFP8RDEU.DLL
VFP8RESN.DLL
VFP8RFRA.DLL
VFP8RKOR.DLL
VFP8RRUS.DLL
VFP8Runtime.MSM
VFPOLEDB.MSM
VFP8RCHS.MSM
VFP8RCHT.MSM
VFP8RCSY.MSM
VFP8RDEU.MSM
VFP8RESN.MSM
VFP8RFRA.MSM
VFP8RKOR.MSM
VFP8RRUS.MSM

Im Service Pack 1 behandelte Probleme

Die folgende Liste enthält die Fehler in Visual FoxPro 8.0, die in Service Pack 1 beseitigt sind:

COM

Klassen

IDE

  • Die Befehlsausführung ist zwischen allen Prozessen serialisiert.
  • IDBCreateSessionImpl::CreateSession prüft nicht den Rückgabewert von IID_IObjectWithSite und bewirkt einen schweren Ausnahmefehler.
  • InterlockedCompareExchange und InterlockedExchangeAdd nutzen nicht den Multithreading-Schutz.
  • CFGInitFailed() in Visual FoxPro OLE DB Provider (VFPOLEDB.dll) zeigt die MessageBox.
  • Verbesserungen der Threads für den Visual FoxPro OLE DB Provider.
  • Stellen Sie die Leseeinstellungen des OLE DB Providers für ENGINEBEHAVIOR und TABLEVALIDATE in der CONFIG.FPW ein.
  • Speicherleck in VFPOLEDB.dll.
  • SET ENGINEBEHAVIOR betrifft alle Verbindungen des gleichen Clients.

    Anderes

  • Es tritt ein schwerer Ausnahmefehler auf, wenn der Programmcache gefüllt ist.
  • Wenn etwas abstürzt, kann der Dialog Fatal Exception mehrfach angezeigt werden.
  • Bei SET NOTIFY CURSOR OFF verhält sich _TALLY so, als währe es zusätzlich.
  • Enthält ein InstallShield Express Setup Mischmodule (MSM) sowohl von Visual FoxPro 7.0 als auch von 8.0, erscheint beim Erstellen des Setups eine Fehlermeldung.
  • Der Fehler „Array dimensions are invalid“ tritt auf, wenn in einem Array auf eine Zeile hinter der 4906ten zugegriffen wird.

    Verbesserungen in Service Pack 1

    Das Visual FoxPro 8.0 Service Pack 1 enthält in folgenden Bereichen Verbesserungen:

  • Neue Eigenschaften für die bessere Behandlung von Updatekonflikten in der Klasse CursorAdapter.
  • Zusätzliche Optionen für den Befehl SET TABLEVALIDATE.

    Neue Funktonalitäten in CursorAdapter

    Visual FoxPro 8.0 Service Pack 1 enthält zusätzliche Eigenschaften für die Klasse CursorAdapter, um Updatekonflikte besser behandeln zu können. Dazu gehören die Eigenschaften ConflictCheckType und ConflictCheckCmd.

    Die Eigenschaft ConflictCheckType

    Die Eigenschaft ConflictCheckType gibt an, ob die Prüfungen auf Konflikte während einer Update- oder Löschoperation durchgeführt werden. Steht zur Design- wie zur Laufzeit zum Lesen und Schreiben zu Verfügung.

    CursorAdapter.ConflictCheckType [ = nValue]

    Parameter

    nValue

    Legt einen Wert fest, mit dessen Hilfe festgestellt wird, die die Konfliktprüfungen durchgeführt werden. Die folgende Tabelle enthält die Werte für nValue.
    nValue Beschreibung
    0 Keine Prüfung (Vorgabewert)
    1 Im Modus, in dem einzelne Datensätze aktualisiert werden, wird die Prüfung auf Updatekonflikte während einer SQL UPDATE oder DELETE-Operation durchgeführt. Tritt ein Konflikt auf, besonders, wenn weniger als ein Datensatz von den Befehlen betroffen ist, die in den Eigenschaften UpdateCmd und DeleteCmd angegeben sind, wird der Fehler „Update conflict (Error 1585)“ zurückgegeben.
    2 Im Modus, in dem einzelne Datensätze aktualisiert werden, wird während einer SQL UPDATE oder DELETE-Operation auf die Eindeutigkeit des Schlüssels geprüft. Ist mehr als ein Datensatz von den Befehlen betroffen ist, die in den Eigenschaften UpdateCmd und DeleteCmd angegeben sind, geben Sie die Nachricht „Warning: The key defined by the KeyField property for table "alias" is not unique. (Error 1495)“ zurück.
    3 Führt die in Einstellung 1 und 2 dargestellten Prüfungen aus.
    4 Hängen Sie den in der Eigenschaft ConflictCheckCmd angegebenen benutzerdefinierten Befehl an die Befehle in den Eigenschaften UpdateCmd und DeleteCmd an.

    Bemerkungen

    Die Eigenschaft ConflictCheckCmd

    Die Eigenschaft ConflictCheckCmd enthält eine Referenz auf einen benutzerdefinierten Befehl, wenn die Eigenschaft ConflictCheckType auf 4 steht. Sie kann zur Design- wie zur Laufzeit lesen und geschrieben werden.

    CursorAdapter.ConflictCheckCmd [ = cValue]

    Parameter
    cValue

    Legt die Referenz auf einen benutzerdefinierten Befehlsstring fest, der an die Befehle angehängt wird, die in den Eigenschaften UpdateCmd und DeleteCmd für die Prüfung von Aktualisierungs- oder Löschkonflikten festgelegt sind. Vorgabewert für cValue ist ein Leerstring (““).

    Bemerkungen

    Vergleichen Sie dazu den Abschnitt Bemerkungen von ConflictCheckType.

    Beispiel

    SQL Server: ConflictCheckCmd="IF @@ERROR=0 AND @@ROWCOUNT!=1 RAISERROR (' Update conflict or non-unique key.', 16, 1)"

    Native: ConflictCheckCmd="CheckConflict()"

    FUNCTION CheckConflict()

    IF _tally<1

    ERROR(1585)

    ELSE

    IF _tally>1

    ERROR(1495)

    ENDIF

    ENDIF

    ENDFUNC

    Verbesserte Funktionalität von SET TABLEVALIDATE

    Visual FoxPro 8.0 Service Pack 1 enthält zusätzliche Optionen für den Befehl SET TABLEVALIDATE, mit deren Hilfe Sie die Überprüfung der Tabelle während verschiedener Datenoperationen besser steuern können. Aktualisierungen an diesem Befehl, die im Service Pack 1 neu sind, sind in rot dargestellt.

    SET TABLEVALIDATE TO [nLevel]

    Parameter

    nLevel

    Legt die Stufe der Tabellenprüfung als Summe der angegebenen Bitwerte fest, die in der folgenden Tabelle beschrieben werden. Wenn Sie nLevel nicht angeben, wird die Tabellenprüfung auf die Stufe 3 (Vorgabewert) gesetzt.
    Bit Bitwerte (additiv) Beschreibung
    0 1

    Wenn eine Tabelle geöffnet ist, wird der Datensatzzähler geprüft.

    Beachten Sie bitte: Der Header der Tabelle (.dbf) ist während der Prüfung gesperrt. Dies kann zu einer verringerten Skalierbarkeit führen, wenn Tabellen für den gemeinsamen Zugriff geöffnet sind, beispielsweise durch den Aufruf von USE TableName SHARED, oder wenn für eine nicht geöffnete Tabelle der Befehl SQL SELECT, UPDATE, INSERT oder DELETE eingesetzt wird und SET EXCLUSIVE auf OFF steht.

    1 2 Der Datensatzzähler wird geprüft, wenn Datensätze angehängt (oder eingefügt) und auf die Festplatte geschrieben werden.
    2 4

    Unterdrücken des Fehlers „File is in use (Error 3)“, wenn der Header für eine Operation zum Öffnen nicht gesperrt werden kann. Erfordert, dass das erste Bit gesetzt ist (Ausführen der Prüfung des Datensatzzahlers, wenn die Tabelle geöffnet ist).

    Der Befehl USE, der die Tabelle öffnet, versucht nur ein Mal, den Header zu sperren. Ist er bereits gesperrt, führt Visual FoxPro eine strikte Prüfung aus entsprechend der Einstellung des Befehls SET TABLEVALIDATE auf 1. Andernfalls unterdrückt Visual FoxPro die Anzeige des Fehlers „File is in use“ und führt eine Headerprüfung im Stil von Visual FoxPro 7.0 aus.

    3 8 Der Header der Tabelle (.dbf) wird geprüft, bevor die Einfügeoperation auf der Festplatte gespeichert und der Header geändert wird. Dies betrifft Einfügeoperationen.

    Bemerkungen

  • Steht SET TABLEVALIDATE auf 0, wird keine Tabellenprüfung ausgeführt.
  • SET TABLEVALIDATE enthält keine Funktionalität für eine Reparatur. Es werden lediglich die Integritätsprüfungen durchgeführt, die in nLevel angegeben sind.
  • SET TABLEVALIDATE betrifft keine temporären Dateien oder Cursor.
  • Ist eine Tabelle exklusiv geöffnet, ignoriert Visual FoxPro die Einstellung des vierten Bits (Prüfen des Headers der Tabelle (.dbf) vor einer Einfügeoperation…=.

    Aktualisierungen an IntelliSense

    Um Ihre IntelliSense-Datei zu aktualisieren, können Sie das folgende Skript einsetzen, indem Sie den Code in eine neue Programmdatei (.prg) kopieren und die Datei ausführen:

    * Script for updating IntelliSense FoxCode table with new SET
    * TABLEVALIDATE settings. Make sure the script appears in your PRG file as
    * it does below. Copying the text from your Web browser might add extra
    * empty lines (spacing within TEXT...ENDTEXT is critical).
    LOCAL lcSaveArea,lcTipStr
    lcSaveArea=SELECT()
    SELECT 0
    USE (_FOXCODE) SHARED
    TEXT TO lcTipStr NOSHOW
    SET TABLEVALIDATE TO [nLevel]

    nLevel Values (additive):

    1 - When a table is opened, the record count is validated. *
    2 - When records are appended (or inserted) and written to disk, the record count is validated.
    4 - Suppress “File is in use” error (Error 3) if header cannot be locked for table open operation. **
    8 - Check DBF header before append is saved to disk and the header is modified. This affects insert operations. Note:

    No table validation is performed for value of 0.

    * The table (dbf) header is locked during validation, which can impact scalability for shared/multi-user scenarios.
    ** Requires nLevel value of 1 to also be set.

    ENDTEXT

    UPDATE (_FOXCODE) SET tip = lcTipStr WHERE UPPER(ALLTRIM(Expanded))=="SET TABLEVALIDATE"
    USE
    SELECT (lcSaveArea)

    Neue Funktionalität des Task Pane Proxy Servers

    Der Task Pane Manager enthält jetzt Optionen, um die Proxy Server-Einstellungen zu steuern, der von Task Panes benötigt wird, die Ihre Inhalte über XML Webdienste beziehen. Wenn Sie auf die Schaltfläche Optionen klicken und das Element Task Pane Manager auswählen, werden Sie eine neue Seite Proxy Server-Optionen bemerken. Diese Seite enthält die folgenden Optionen:

    Verschiedene Änderungen des Verhaltens

    =Iif(Used(<tablename>) and !Empty(Field(<fieldname>, <tablename>, 1)),Field(<fieldname>, <tablename>, 1), <fieldname>)

    =FIELD( <tablename>, <fieldname>, 1)