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
-
Um während der Installation über eine Referenz zu verfügen,
drucken Sie diese Datei aus.
-
Auf der Downloadseite des Visual FoxPro 8.0 Service Pack 1 klicken Sie
auf die Schaltfläche Download.
-
Akzeptieren Sie die Lizenzvereinbarung. Dieser Schritt ist erforderlich,
um das Service Pack herunterladen zu können.
-
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.
-
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
-
Automation – Die Übergabe eines Array an das ADO RecordSet
AddNew als Referenz erzeugt den Fehler „The class file () associated
with this field cannot be found - class association cleared”.
-
Server – Beim Aufruf einer Methode von einem zweiten Server aus,
der in einer MTDLL unter COM+ instantiiert wurde, tritt der Fehler „Unknown
Error” auf.
-
Server – Fehler mit COM Codebook in COM+.
-
Server – Rückgabe eines nicht typgebundenen Elementarray schlägt
fehl.
Klassen
-
Collection – Der Aufruf der Methode AddProperty eines Elements,
das einer Collection hinzugefügt wurde, bewirkt, dass die Prozedur
eine Objektreferenz zurückgibt.
-
Combobox – Die Auswahl funktioniert nicht richtig, wenn die Quelle
der Einträge mehr als 512 Elemente umfasst.
-
Combobox – Ein Wert mit einem Et-Zeichen (&) fügt dem angezeigten
Wert ein zweites Et-Zeichen hinzu.
-
Editbox – C5 fatal exception error tritt auf, wenn eine Editbox
mit einem Feld vom Typ Zeichen als Datenquelle aktualisiert wird.
-
Form – Zur Design- und zur Laufzeit tritt ein Fehler auf, wenn der
Wert einer Eigenschaft die Methode eines Objekts referenziert, das sich
nicht im Gültigkeitsbereich befindet.
-
Form – F5 verfolgt das Ereignis KeyPress des Formulars nicht, wenn
die Eigenschaft Closable des Formulars auf .F. gesetzt ist.
-
Form – Das Menü Steuerelemente enthält unter Windows NT
4.0 falsche Hotkeys.
-
Grid – Fatal Exception Error tritt auf, wenn eine Spalte in Containerobjekt
enthält.
-
Grid – Die Spalten werden zur Design- wie zur Laufzeit nicht korrekt
angezeigt, wenn die Eigenschaft RightToLeft auf .T. gesetzt ist.
-
Grid – Die Eigenschaft HighlightForeColor erscheint weiß,
wenn sie auf schwarz gesetzt ist.
-
Grid – Ist die Eigenschaft AllowCellSelection auf .F. gesetzt, deaktiviert
sie die Eigenschaft Cancel der Befehlsschaltfläche.
-
Grid – Mit einem CursorAdapter-Objekt wird zweimal ein Fehler angezeigt
und das Formular schließt unerwartet.
-
Grid - Fatal Exception Error tritt auf, wenn ein Grid mit einigen Textspalten
geöffnet wird und Active Accessibility aktiviert ist (OBJ_SHOW).
-
Grid – wird nicht aktualisiert, wenn er sich innerhalb eines Pageframes
auf einer nicht aktiven Seite befindet.
-
Grid – Das Ereignis MouseUp verhält sich nicht konsistent,
wenn auf eine Trennlinie im Header geklickt oder doppelgeklickt wird und
die Eigenschaft AllowAutoColumnFit gesetzt ist.
-
Header – Eine programmgesteuert definierte Headerklasse in einer
.EXE-Datei wird nicht gefunden, es sei denn, die .PRG-Datei, die die Definition
enthält, befindet sich im gleichen Verzeichnis wie die .EXE.
-
Label – Das Setzen der Eigenschaft Caption auf eine vorgegebene
Eigenschaft mit einem leeren Wert, also beispielsweise .Caption=’thisform.tag’,
erzeugt den Fehler „There is not enough memory to complete this
operation.”
-
Label – Wird die Größe eines Labels verändert, tritt
der Fehler “There is not enough memory to complete this operation”
auf und Visual FoxPro verschwindet.
-
Listbox – Ist die Eigenschaft RowSourceType auf 8 gesetzt, tritt
ein Speicherleck auf.
-
Pageframe – Fatal Exception Error tritt auf, wenn ein Formular geschlossen
wird, nachdem auf eine Seite geklickt wurde, in der die Eigenschaft PageOrder
gesetzt ist.
-
Pageframe – Ist die Eigenschaft TabOrientation eines Pageframes
auf 2 gesetzt, bewirkt das Benutzen der Pfeiltasten für das Wechseln
zwischen den Tabs auf einem Formular mit Themes ein Speicherleck und Visual
FoxPro stürzt unweigerlich ab.
-
Textbox – Der Fehler „Not a character expression” tritt
auf, wenn der Wert einer Textbox geändert wird, in der ein Element
eines Arrays als Datenquelle gesetzt ist.
-
XMLAdapter – Ignoriert die Eigenschaft XMLNamespace, es sei denn,
XMLName ist nicht leer und schlägt beim Parsen des XML fehl.
-
Verschiedene – Die Methode setzt den Wert der bestehenden Eigenschaft
auf .F., wenn kein neuer Wert übergeben wurde.
-
Verschiedene – Der Fehler „Variable not found” oder
„data type is invalid for this property” tritt auf, wenn die
Eigenschaft Caption eine Variable referenziert, die sich nicht im Wirkungsbereich
befindet.
-
Verschiedene – Wird ein Leerstring als Caption angegeben, wird keine
leere Caption angezeigt, sondern der Objektname.
-
Verschiedene - Fatal Exception Error tritt auf, wenn ein Objektarray auf
mehr als 32.767 Elemente dimensioniert wird.
-
Verschiedene - Fatal Exception Error tritt auf, wenn die benutzerdefinierten
Eigenschaften FontBold und FontItalic hinzugefügt werden und diese
dann im Eigenschaften-Fenster gesetzt werden.
-
Verschiedene - Fatal Exception Error tritt auf, wenn in der Methode Destroy
eine freigegebene Variable erneut definiert wird.
-
Verschiedene - Fatal Exception (buffer overrun) Error tritt auf, wenn
eine abgeleitete Methode mit einer Parameterliste geändert wird,
die mehr als 256 Zeichen lang ist.
Daten/Engine
-
Auto Increment – Funktioniert mit APPEND FROM nicht richtig.
-
CursorAdapter – Fügen Sie Funktionalität hinzu, um Updatekonflikte
im CursorAdapter zu behandeln.
-
CursorAdapter – Unterstützt der ODBC-Treiber oder OLE DB Provider
die Stapelverarbeitung nicht, schlägt auch ein einzelnes Update fehl,
wenn die Eigenschaft UpdateType auf 2 gesetzt ist.
-
CursorAdapter – Schlägt beim Update einer .MDB mit Länge
Null, ohne Felder oder mit mehr als 255 Memofeldern in ADO fehl.
-
CursorAdapter – Schlägt in ADO die Aktualisierung einer Tabelle
in einer Funktion TABLEUPDATE() fehl, führt dies dazu, dass auch
die weiteren Aufrufe von TABLEUPDATE() fehlschlagen.
-
CursorAdapter – Wenn der OLE DB Provider beim Füllen der Collection
Parameters fehlschlägt, ist er nicht in der Lage, dem Objekt ADODB.Command
einen Leerstring als Parameter zu übergeben.
-
CursorAdapter – Es ist möglich, die Funktion TABLEREVERT()
aufzurufen, obwohl TABLEUPDATE() ausgeführt wird.
-
CursorAdapter – Die Funktion TABLEUPDATE() übergibt nicht an
lokale Cursor, wenn Buffering auf 5 gesetzt und der Datensatz im Ereignis
AfterInsert geändert wurde.
-
CursorAdapter – Der Prozess des Beziehens von Daten durch ADO versetzt
den Tabellenpuffer in einen nicht korrekten Zustand.
-
Engine – Der Fehler „Index does not match the table“
tritt bei einem GO TOP in einem tabellengepufferten Cursor auf, nachdem
BEGIN TRANS und ROLLBACK aufgerufen wurden.
-
Engine – Der Fehler „Record is not in index“ tritt während
eines SCAN oder während des Springens durch die Datensätze auf.
-
Engine – Der Fehler„Table has no index order set“ tritt
bei einem geöffneten tabellengepufferten Cursor auf, der einen Datensatz
enthält, dessen Felder geändert wurden.
-
Engine – Der Befehl SEEK mit der Klausel ORDER DESCENDING bewegt
den Datensatzzeiger nicht zum richtigen Datensatz, wenn SET NEAR auf ON
steht.
-
Engine – Der Befehl SEEK findet alte und neue Daten mit optimistischer
Tabellenpufferung.
-
Engine – Der Fehler „Index does not match the table...(Error
114)“ tritt auf, wenn die Funktion TABLEUPDATE() auf einem tabellengepufferten
Cursor mit gepufferten Änderungen aufgerufen und der Befehl REINDEX
eingesetzt wird.
-
Engine – Ein Speicherleck tritt auf, wenn mit der Funktion SQLEXEC()
Parameter als Referenzen übergeben werden.
-
Engine – Ein Speicherleck tritt auf, nachdem SQL INSERT oder SQL
UPDATE einen Fehler hervorgerufen hat.
-
Engine – Die Funktion SQLGETPROP() enthält ein Speicherleck.
-
Engine – Wird in der Mitte einer Transaktion ein SQL INSERT aufgerufen,
tritt ein schwerer Ausnahmefehler auf.
-
Engine – Der Aufruf der Funktion SQLSTRINGCONNECT() ohne Parameter
ruft einen Fehler hervor, statt wie in Visual FoxPro 7.0 einen Dialog
anzuzeigen.
-
Engine – Im SQL Pass-Through Asynchronous Batch-Modus werden alle
Ergebnissätze auf einmal abgerufen.
-
Engine – Der Befehl COPY TO mit mehr als 255 Feldern ruft einen
schweren Ausnahmefehler oder einen Berichtsfehler hervor.
-
Engine – Die Funktion REQUERY() auf einer parametrisierten Ansicht
schlägt fehl, wenn sie mit einem Gleichheitszeichen (=) begonnen
wird.
-
Engine – Nach dem Aufruf von TABLEUPDATE() und ROLLBACK in einer
lokalen Ansicht tritt beim Befehl GOTO TOP der Fehler „Index does
not match the table“ auf.
-
ODBC – Beim Versuch, im SQL Server eine ungültige Eigenschaft
einzustellen, erscheint eine falsche Fehlermeldung.
-
ODBC – Die Verbindung wird nicht unterbrochen, wenn der Leerlauf-Timeout
aufgetreten ist.
-
ODBC – Die Übergabe einer großen Variablen an den SQL
Server ODBC-Treiber kann einen schweren Ausnahmefehler hervorrufen.
-
ODBC – Verbindung für den gemeinsamen Zugriff schlägt
bei der Übergabe eines Parameters oder im asynchronen Modus fehl.
-
SET TABLEVALIDATE – SET TABLEVALIDATE TO setzt TABLEVALIDATE auf
einen falschen Wert.
-
SET TABLEVALIDATE – Hinzufügen eines neuen Bit, um den Fehler
„File is in use“ zu unterdrücken, wenn nLevel auf 1 gesetzt
ist.
-
SET TABLEVALIDATE – Es tritt kein Fehler auf, wenn ein Datensatz
hinzugefügt wird, SET TABLEVALIDATE auf 2 gesetzt ist und der Datensatzzähler
niedriger ist als er sein sollte. Der neue Datensatz überschreibt
bestehende Daten.
-
SQL – UPDATE und DELETE sind nicht Rushmore-optimiert, wenn die
Zieltabelle gepufferte Änderungen enthält.
-
SQL – Der Fehler „Fields are incompatible“ tritt auf,
wenn SELECT…UNION auf eine Fox 2.x-Tabelle ausgeführt wird.
-
SQL – Die JOIN-Syntax liefert manchmal falsche Ergebnisse.
-
SQL – INSERT INTO … SELECT … FROM … WHERE …
beachtet die Klausel WHERE nicht.
-
SQL – CREATE/REMOVE TABLE im DBC schlägt in einer Mehrbenutzerumgebung
fehl.
SQL – Änderungen in Fehlermeldung und –nummer mit nicht
ausbalancierten INSERT INTO … SELECT FROM-Anweisungen.
IDE
-
SCREEN – Es tritt ein schwerer Ausnahmefehler auf, wenn die IDE
minimiert und wiederhergestellt wird, nachdem dem Ereignis _SCREEN.Resize
ein Hook zugeordnet und wieder entfernt wurde.
-
Debugger – Ein schwerer Ausnahmefehler tritt auf, nachdem Werte
im Fenster Locals für die Eigenschaft eines geschlossenen modalen
Formulars geändert wurden.
-
Debugger – Ist der Aufrufstack oder das Fenster Locals nicht geöffnet,
tritt ein schwerer Ausnahmefehler auf, nachdem Sie in das Fenster Trace
zurückgekehrt sind.
-
Debugger – Ein schwerer Ausnahmefehler tritt auf, nachdem die Programmausführung
wieder aufgenommen wurde mit einem großen Array im Watch-Fenster.
-
Debugger – Ein schwerer Ausnahmefehler tritt auf beim Kopieren eines
Ausdrucks in das Watch-Fenster.
-
Editor – Ein kritischer Ausnahmefehler tritt auf, wenn während
der Änderung einer gespeicherten Prozedur im Kontextmenü wird
der Eintrag „Definition anzeigen“ oder „Verweis nachschlagen“
gewählt wird.
-
Editor – Ein kritischer Ausnahmefehler tritt auf, wenn Code aus
dem Kontextmenü heraus auskommentiert wird.
-
Menüs – Ein schwerer Ausnahmefehler tritt auf, wenn nach der
Änderung eines Berichts einer der Befehle PUSH MENU, POP MENU oder
SET SYSMENU TO DEFAULT aufgerufen wird.
-
Menüs – Ein schwerer Ausnahmefehler tritt auf, wenn nach dem
Schließen des Debuggers SET SYSMENU TO DEFAULT aufgerufen wird.
-
Menüs – Ein schwerer Ausnahmefehler tritt auf, wenn SET SYSMENU
SAVE aufgerufen wird, während der Berichts-Designer geöffnet
ist.
-
Dialog Optionen – Suchpfadeinstellungen, die im Tab Dateiablage
im Dialog Optionen vorgenommen und als Vorgabewert gespeichert wurden,
bleiben für spätere Visual FoxPro-Sitzungen nicht erhalten.
-
Berichts-Designer – Die Schaltfläche Schließen erscheint
nicht unter Windows NT 4.0, wenn das Vorschaufenster maximiert ist.
-
Assistent für referenzielle Integrität – Generiert einen
Fehler „Missing expression“.
-
Task Pane – Ein schwerer Ausnahmefehler tritt auf, wenn sich die
Seite Community während eines Startprogramms nicht mit einem Webdienst
verbinden kann.
-
Task Pane – Das Fenster Community kann sich nicht verbinden, wenn
IE konfiguriert ist, einen Proxy zu nutzen.
-
Toolbars – Schwarze und weiße Toolbars können zu einem
schweren Ausnahmefehler führen.
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
-
ConflictCheckType und ConflictCheckCmd werden für native, ODBC-
und ADO-Datenquellen eingesetzt. Beim Einsatz von ADO sollte der CursorAdapter
für die SQL UPDATE- und DELETE-Operation ein ADO Befehlsobjekt
einsetzen. Andernfalls beachtet Visual FoxPro ConflictCheckType und
ConflictCheckCmd nicht.
-
Beim Ausführen einer TABLEUPDATE()-Operation im Stapel beachtet
Visual FoxPro die Einstellungen 1, 2 und 3 für ConflictCheckType
nicht.
-
Es ist empfehlenswert, die Einstellungen 1, 2 und 3 nicht zu verwenden,
wenn die Eigenschaften UpdateCmd und DeleteCmd mehr als einen Befehl
enthalten. In diesem Szenario ist das Verhalten des CursorAdapters vom
ODBC-Treiber oder OLE DB Provider abhängig und kann zu unerwarteten
Ergebnissen führen.
-
Die Einstellungen 1, 2 und 3 für ConflictCheckType könnten
fehlschlagen, wenn der ODBC-Treiber oder OLE DB Provider nicht zur Verfügung
steht, um die erforderliche Funktionalität bereitzustellen, oder
die Funktionalität ist durch den Treiber, Provider oder die Backend-Konfiguration
deaktiviert. Beispielsweise deaktiviert SET NOCOUNT ON im SQL Server
die Funktionalität und verhindert, dass CursorAdapter Aktualisierungen
vornimmt, wenn ConflictCheckType auf 1, 2 oder 3 steht.
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:
-
Keinen Proxy Server einsetzen. Keine expliziten Proxy Server-Einstellungen
für XML Webdienst-Aufrufe vornehmen, die für das Lesen der Inhalte
verschiedener Task Panes vorgenommen werden, beispielsweise das Fenster
Community.
-
Die folgenden Proxy Server-Einstellungen verwenden. Ist dies ausgewählt,
stehen die folgenden Optionen für die manuelle Steuerung der Einstellungen
des Proxy Servers zur Verfügung:
-
Adresse Gibt die Adresse des Proxy Servers an, zum Beispiel http://myproxyserver,
der für die Verbindung zum Internet eingesetzt wird.
-
Port Legt den Port des Proxy Servers fest, beispielsweise 80, der
für die Verbindung zum Internet eingesetzt wird.
-
Anwender Legt eine optionale Benutzernamen-Einstellung fest, wenn
dieser erforderlich ist, um sich einzuloggen.
-
Passwort Legt eine optionale Passwort-Einstellung fest, wenn diese
erforderlich ist, um sich einzuloggen.
Verschiedene Änderungen des Verhaltens
-
Der Einsatz des Befehls APPEND FROM mit einem Autoinkrement-Feld generiert
für dieses Feld jetzt neue Werte. Die neuen Werte werden automatisch
sequentiell auf der Basis des letzten generierten Wertes generiert. Dies
geschieht unabhängig davon, ob im Befehl APPEND FROM oder APPEND
FROM ARRAY Werte für das Autoinkrement-Feld angegeben sind.
-
Ein Befehl SEEK mit einem Parameter ORDER nutzt jetzt das vorgegebene
Schlüsselwort ASC oder DESC für den Indextag. Das vorherige
Verhalten war nicht kalkulierbar und fußte auf der vorherigen Einstellung
des Schlüsselworts DESCENDING oder ASCENDING für den Befehl
SEEK.
-
Wird ein Tabellenfeld eines DBC mit einem Ausdruck für Caption auf
ein Formular gezogen, enthält die resultierende Caption Label jetzt
den folgenden Ausdruck:
=Iif(Used(<tablename>) and !Empty(Field(<fieldname>,
<tablename>, 1)),Field(<fieldname>, <tablename>, 1), <fieldname>)
-
In der originalen Version von Visual FoxPro 8.0 lautete der generierte
Ausdruck:
=FIELD( <tablename>, <fieldname>, 1)