2016-07-11 5 views
0

Ich bin am Ende meines Seiles zu diesem Thema. Der Versuch, ein FoxPro-Verzeichnis lokal gehostet zu verbinden, die Microsoft OLE DB Provider for Visual FoxPro 9.0 mit dem folgenden Code:VFPOleDb Schema zurückgegeben, aber keine Ergebnisse in C#

using (var con = new OleDbConnection(@"Data Source=C:\FoxDB;Provider=VFPOLEDB.1;")) 
{ 
    con.Open(); 
    using (var cmd = new OleDbCommand("select * from order", con)) 
    {    
     var dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
      Debug.WriteLine(dr["ord_id"]); 
     } 
    } 
} 

Ausführen des Codes nicht eine Ausnahme, aber es gibt keine Zeilen zurückgegeben. Das Schema wird erkannt und zurückgegeben, da 72 Felder vorhanden sind, wenn ich den Datenleser untersuche (ich habe dasselbe mit Datentabellen, Datensätzen, Datenadaptern usw. getan. Alle geben das Schema zurück, aber null Ergebnisse). gezogen in

ein SSIS-Paket Erstellen der gleichen Tabelle zuzugreifen und in eine MSSQL-Datenbank Ergebnisse in 3828 Datensätze ziehen. order.dbf auf der Festplatte 884KB ist, die mit dem SSIS zu Jive scheint Ergebnisse Ich habe in Mitleidenschaft gezogen.

Ich habe versucht, Collation Sequence zu der Verbindungszeichenkette, Machine und General ohne Wirkung hinzuzufügen.

Bitte sagen Sie mir, es ist etwas offensichtlich, dass ich vermisse!

UPDATE: Also gibt es anscheinend etwas, was ich über FoxPro nicht verstehe. Wenn ich den Befehlstyp in CommandType.TableDirect ändere und den Befehlstext in order umschalte, werden alle Zeilen zurückgegeben. Jeder Einblick würde geschätzt werden.

Antwort

1

Ich denke, das Problem ist nicht mit Foxpro, mit dem gleichen genauen Code testen, kann ich das Ergebnis erhalten (erstellt eine kostenlose Testtabelle in c: \ FoxDb). Stellen Sie sicher, dass Sie den neusten VFPOLEDB-Treiber verwenden. Es sieht so aus, als ob das Problem in deinem Tisch liegt.

BTW, um ein Schlüsselwort ist, sollten Sie besser schreiben als:

"select * from [order]" 

obwohl es funktionieren würde wie du (VFP ist verzeihend in dieser Hinsicht). Das Problem könnte auch in der Kollationssequenz liegen, die Sie verwendet haben (ich verwende nie Kollationssequenzen außer Maschine, sie sind auf Türkisch problematisch, ich erwarte dasselbe in einigen anderen Sprachen).

+0

Danke für die Antwort. Maschinen- und allgemeine Vergleiche ergaben dasselbe. Interessanterweise kann ich aus _certain_ Tabellen auswählen, aber keine anderen. Auch die Tabellen, aus denen ich nicht auswählen kann ... wenn ich die 'CommandText' -Eigenschaft auf nur' bestellen' und 'CommandType' auf' CommandType.TableDirect' verändere, kann ich alle Zeilen bekommen. Das bringt mir nicht viel Gutes, weil ich eine Where-Klausel brauche, aber ich fand es interessant. Oh, und die Version auf vfpoledb.dll ist 9.0.00.5815, die ich denke, ist die neueste. Auch versucht, Sie zu verbessern, aber ich habe nicht den Ruf, tut mir leid. – bphdpt

+0

Die endgültige Version von VFP ist 7423, daher ist möglicherweise eine neuere Version des Treibers vorhanden. –

+0

@ TamarE.Granor, AFAIK neuesten ist 9.0.00.5815. Wo finde ich 7423?
Wenn der Inhalt kein Geheimnis ist, können Sie diese Tabelle zippen und senden (dbf + cdx und fpt falls vorhanden - ich nehme an, es ist eine freie Tabelle). Wenn Sie an, cetin dot basoz bei deu dot edu dot tr –

Verwandte Themen