Session D-OLE
Der Microsoft OLE DB Provider
für Visual FoxPro 8.0
Mathias Gronau
Der Microsoft OLE DB Provider für Visual FoxPro 8.0
Dieses Dokument enthält die aktuellsten Informationen vom Microsoft
Visual FoxPro-Team und damit mehr aktualisierte Informationen als die Onlinehilfe.
Informationen über neue Features seit früheren Versionen des Providers
finden Sie unter „What’s New in Microsoft OLE DB Provider for
Visual FoxPro 8.0“.
Um die neuesten Informationen über den Microsoft OLE DB Provider für
Visual FoxPro zu erhalten, besuchen Sie die Visual FoxPro-Homepage unter http://msdn.microsoft.com/vfoxpro.
Wichtige Informationen vor der Installation
Die Installation des
Microsoft OLE DB Providers für Visual FoxPro 8.0 auf einem Rechner,
auf dem eine frühere Version des Providers vorhanden ist, bewirkt,
dass die frühere Version ersetzt wird. Wenn Sie die frühere Version
des Providers beibehalten wollen, müssen Sie diese umbenennen, bevor
Sie mit der neuen Installation fortfahren. So benennen Sie den Provider
mit dem Windows Explorer um:
-
Beenden Sie alle Anwendungen, die auf den Provider zugreifen könnten,
beispielsweise den IIS oder alle Desktop-Anwendungen, die den Provider
einsetzen.
-
Öffnen Sie das Verzeichnis …\Program Files\Common Files\System\Ole
DB.
-
Klicken Sie mit der rechten Maustaste auf vfpoledb.dll, wählen
Umbenennen und ändern Sie den Namen in vfpoledb_save.dll.
-
Um die gesicherte Version wiederherzustellen, löschen Sie
diese Version oder benennen Sie sie um und benennen anschließend
vfpoledb_save.dll in vfpoledb.dll um. Es sollte nicht erforderlich sein,
den Provider erneut zu registrieren, zumindest dann nicht, wenn Sie die
vorhergehende Version nicht deinstalliert haben.
Systemvoraussetzungen
Der Visual FoxPro OLE DB Provider stellt
die folgenden minimalen System-Voraussetzungen:
-
Prozessor: Pentium
-
RAM: 64 MB (128 MB oder mehr empfohlen)
-
Freier Festplattenspeicher: 2 MB für minimale Installation,
4 MB für vollständige Installation
-
Betriebssystem: Microsoft Windows XP, Microsoft Windows
2000 mit Service Pack 2 oder höher, Windows ME oder Windows 98.
-
Software: Microsoft Data Access Components (MDAC) Version
2.6 oder höher.
Beachten Sie bitte: Eine Installation auf Windows NT 4.0 wird nicht unterstützt.
Neuigkeiten
In diesem Abschnitt sind alle Neuigkeiten dieser Version
des Microsoft OLE DB Providers für Visual FoxPro aufgelistet.
Neue
oder geänderte Funktionalitäten
Im Folgenden werden neue
Verhaltensweisen vorgestellt, sowie Verhaltensweisen, die das Verhalten
Ihrer Anwendungen betreffen können.
-
SYS(3099) In dieser Version wurden an der Visual
FoxPro SQL-Engine verschiedene Änderungen vorgenommen. Das führte
dazu, dass Teile der SQL-Syntax, die in der Version 7.0 akzeptiert wurden,
in 8.0 nicht mehr funktionieren. Damit Sie in solchen Fällen mit
der alten Syntax arbeiten können, wurde der Funktion SYS(3099) folgendes
hinzugefügt:
-
SYS(3099, 70) && zur Version 7 kompatibel
-
SYS(3099, 80) && zur Version 8 kompatibel
-
Um diesen Wert im Provider zu einzustellen, führen Sie
die Funktion mit dem erforderlichen Parameter aus. Sie können
diese Funktion auch in gespeicherten Prozeduren einsetzen, um die
Stufen der SQL-Kompatibilität entsprechend einzustellen. Eine
Zusammenfassung der Änderungen folgt.
-
Der Einsatz der Klausel DISTINCT in einer SQL-Anweisung, die
ein Memo- und/oder ein General-Feld enthält, wird nicht länger
unterstützt. Stattdessen können Sie einen Memofeld-Ausdruck
innerhalb einer Funktion wie PADR() oder ALLTRIM() verpacken. Zusätzlich
können Sie jetzt keine UNION-Klausel mit einem Memofeld einsetzen,
es sei denn, dass auch die Klausel ALL enthalten ist. Ist in diesem
Szenario ein Memo- oder Generalfeld eingesetzt, wird jetzt ein Fehler
generiert.
-
Beispiel: SELECT DISTINCT * FROM Labels && schlägt jetzt
fehl, da Labels.dbf ein Memofeld enthält.
-
Die Behandlung der Klausel GROUP BY (und der dazu gehörenden
Klausel HAVING) hat sich geändert. Als Beispiel konnten Sie in
der Version 7.0 die folgende Syntax verwenden:
SELECT cust_id,
country FROM Customer GROUP BY country
Diese Anweisung konnte
zu nicht eindeutigen Ergebnissen führen, da eines der Felder
(cust_id) in der Klausel GROUP BY nicht angegeben wurde. In Version
8 wird jetzt wie im SQL Server ein Fehler generiert. Beachten Sie:
Sie können in die Feldliste eine Aggregat-Funktion aufnehmen,
ohne dass diese in der Klausel GROUP BY vorhanden sein muss. Beispiel:
SELECT COUNT(cust_id), country FROM Customer GROUP BY country
Außerdem werden Memo- und Generalfelder in GROUP BY nicht unterstützt,
es sei denn in einem Ausdruck: Beispiel: SELECT last_name,LEFT(notes,100)
AS notes2 from employee GROUP BY last_name, notes2
-
Die folgende neue Funktionalität könnte in Visual FoxPros Konfigurationsdatei
Config.fpw eingesetzt werden (die Datei Config.fpw muss sich im gleichen
Verzeichnis wie der Provider befinden):
-
ENGINEBEHAVIOR Gibt die Einstellung der Kompatibilität
für die Engine an. Beachten Sie, dass dieser Befehl SYS(3099)
gleicht, aber in der Konfigurationsdatei Config.fpw eingesetzt werden
kann.
-
Beispiel: Gibt an, dass Visual FoxPro den Befehl SQL SELECT
so behandelt wie in den Versionen vor Visual FoxPro 8.0.
-
Gibt an, dass Visual FoxPro den Befehl SQL SELECT wie in Version
8.0 vorgesehen behandelt.
-
TABLEVALIDATE Gibt die Stufe der auf der Tabelle durchzuführenden
Prüfung an. Sie können TABLEVALIDATE einsetzen, wenn
Sie eine niedrigere Stufe der Tabellenintegritätsprüfung
als die Voreinstellung wünschen.
-
Beispiel: TABLEVALIDATE=<nLevel>
-
nLevel gibt die Stufe der Prüfung der Tabelle an. Ist der
Wert ausgelassen, ist der Vorgabewert für nLevel 3. Hier
eine Liste der Werte für nLevel:
-
0 Führt keine Tabellenprüfung aus.
-
1 Prüfen des Datensatzzählers, wenn eine
Tabelle geöffnet wird.
Beachten Sie: Der Dateiheader der Tabelle ist während
der Prüfung gesperrt. Dies kann zu einer verminderten Skalierbarkeit
führen, wenn Tabellen zum gemeinsamen Zugriff geöffnet
werden, beispielsweise durch den Aufruf von USE tableName SHARED,
oder wenn ein SQL INSERT, UPDATE oder DELETE für eine nicht
geöffnete Tabelle aufgerufen wird und SET EXCLUSIVE auf
OFF steht.
-
2 Prüfen des Datensatzzählers beim Anlegen
von Datensätzen und wenn diese auf die Festplatte geschrieben
werden.
-
3 Prüfung wie für nLevel=1 und nLevel=2
beschrieben (Vorgabe).
-
Die folgende Konfigurationseinstellung wird jetzt auch in der Datei
Config.fpw unterstützt:
-
MVCOUNT stellt die maximale Anzahl der Variablen
ein, die der Visual FoxPro Provider (in gespeicherten Prozeduren)
verwalten kann. Nähere Informationen zu diesem Thema finden
Sie auf MSDN im Artikel „Special Terms for Configuration
Files“. Beachten Sie, dass der Vorgabewert für MVCOUNT
auf 16384 erhöht wurde.
-
Beachten Sie, dass die oben stehenden drei Konfigurationseinstellungen
durch den Provider nur beim Lesen der Datei Config.fpw festgestellt
werden.
-
Wenn Sie den Verbindungsstring für einen Visual FoxPro OLE DB Provider
einrichten, können Sie statt einer Datenquelle einen bestehenden
Visual FoxPro ODBC Data Source Name (DSN) angeben. Der Provider nutzt
die Datenquelle, die im DSN angegeben ist und erweitert ihn in einen passenden
Provider Verbindungsstring. Existiert als Beispiel ein DSN mit Namen „VFP_Northwind“,
können Sie sich mit folgendem Verbindungsstring verbinden: „Provider=VFPOLEDB.1;
DSN=VFP_Northwind;“
-
Die Funktion GETENV() wird durch den OLE DB Provider nicht länger
unterstützt.
-
Gespeicherte Prozeduren können auf zwei Arten aufgerufen werden:
-
myProc(param1, param2,…) && Dies ist die konventionelle
Aufrufsyntax von Visual FoxPro
-
Exec myProc param1, param2,…&& Die alternative Syntax.
Beachten Sie, dass beim Einsatz von ADO oder ADO.NET diese Form erforderlich
ist, wenn CommandType auf StoredProc gesetzt ist.
-
Beim Einsatz des CommandTypes StoredProcedure in ADO.NET müssen
Sie eine der folgenden Vorgehensweisen wählen:
-
Stellen Sie CommandText auf den Namen der gespeicherten Prozedur
ein, ohne irgendwelche Klammern zu verwenden. Anschließend
fügen Sie der Collection Parameters die Parameter hinzu.
-
Stellen Sie CommandText auf den Namen der gespeicherten Prozedur
ein, wobei Sie die Parameter wie bei der Visual FoxPro-Syntax
in Klammern setzen. Sie können bei diesem Vorgehen die Collection
Parameters nicht verwenden, um die Werte der Parameter zu speichern.
-
Beim Einsatz des CommandTypes StoredProc in ADO:
-
Setzen Sie CommandText auf den Namen der gespeicherten Prozedur
mit allen Klammern und Platzhaltern (?) für jeden gesendeten
Parameter. Anschließend erstellen Sie Parameterobjekte,
die an Stelle der Platzhalter verwendet werden.
-
Setzen Sie CommandText, wobei Sie die konventionelle Aufrufsyntax
von Visual FoxPro verwenden.
-
Beachten Sie auch, dass das Schlüsselwort „EXEC“ durch
ADO und ADO.NET automatisch zugeordnet wird und nicht erforderlich ist,
es sei denn, CommandType enthält einen anderen Wert als StoredProc.
Die Dokumentation
Lesen Sie den Eintrag „What’s New in Visual FoxPro 8.0“,
um eine vollständige Auflistung aller neuen Features zu erhalten.
Features
Dieser Abschnitt enthält die aktuellsten Informationen
über Features, die in dieser Version von Visual FoxPro enthalten sind.
-
Wenn Sie Tabellen aus dem Visual Studio .NET Server Explorer in
die VS IDE Oberfläche ziehen, müssen Sie am generierten SelectCommand
Änderungen vornehmen Sie müssen beispielsweise die doppelten
Anführungszeichen löschen oder die passende SQL-Anweisung von
VFP über ConfigureDataAdapter eingeben. Der DataWizard erstellt aktuell
keine Update-/Insert-/Delete-Anweisungen diese müssen Sie
selbst konfigurieren.
-
Arbeitet der Provider mit einem SQL Server als „verbundenem
Server“ zusammen, unterstützt er nur Abfrageoperationen. Update-Operationen
(Update/Insert/Delete) werden nicht unterstützt.
-
Der Einsatz der Klausel DISTINCT in einer SELECT SQL-Anweisung,
die Memo- oder Generalfelder enthält, wird nicht länger unterstützt.
Stattdessen können Sie einen Memofeldausdruck in einer Funktion wie
PADR() oder ALLTRIM() verpacken. Außerdem können Sie die Klausel
UNION nicht länger mit einem Memofeld einsetzen, es sei denn, es
ist auch die Klausel ALL enthalten. Wird in diesem Szenario ein Memo-
oder Generalfeld verwendet, wird jetzt ein Fehler generiert. Lesen Sie
den Abschnitt zu SYS(3099) in diesem Artikel, um weitere Details zu erfahren.
-
Wenn Sie einen Tabellennamen via ADO nur an den Provider übergeben,
müssen Sie CommandType auf adCmdTable setzen.
Gelöste Probleme
Hier noch eine Liste mit Artikeln aus der Microsoft Knowledge Base, die
sich mit Problemen der aktuellen Version des VFP Providers (Versionen 7.0.0.9265
und 7.0.0.9465) befassen. Diese Probleme sind in der im Web verfügbaren
Version des Providers gelöst.
BUG: VFP OLE DB Provider Only Works
with CHAR Command Parameters
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q321631
BUG: Error Selecting Empty VFP Memo w/.NET OleDbDataAdapter
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q326544