0

dbase から sql にデータをインポートしており、次の接続文字列を使用してデータを読み取っています。

      "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:\GS\Source;"
                    + "Extended Properties=dbase 5.0;User ID=Admin;Password=;"

データは正常に読み取られましたが、DELETED 行も含まれていることがわかりました。dbase によると、最初の文字としてアスタリスクがありますが、ファイルが除外されておらず、アスタリスクが列として表示されていないことがわかります。

では、この削除されたレコードなしでデータをロードするにはどうすればよいでしょうか?

4

2 に答える 2

2

実際には、削除されたレコードは内部的にフラグでマークされており、照会できる "*" ではありません。ただし、VFP にはこの削除されたフラグをテストする機能がありますが、実際に適用できるのは単一のテーブルから実行している場合のみであり、複数の結合ではなく、どのテーブルを調べているかわからないためです...例:

select * from YourTable where not deleted()

そうは言っても、VFP には、OleDB 経由で機能する可能性のある他の「環境」設定コマンドがいくつかありますが、実際にこれを試したことはありません。

接続が確立されて開いたら、次の ExecNonQuery を実行すると役立つ場合があります...

OleDbCommand oCmdTest = new OleDbCommand( "SET DELETED OFF", YourConnection ); OCmdTest.ExecuteNonQuery();

oCmdTest = new OleDbCommand( "Select * from YourTable", YourConnection );

そのままデータテーブルの結果セットに実行すると、うまくいくはずです。

もう1つの部分。Jet OleDB は使用しませんが、実際には Microsoft VFP OleDb ドライバーを使用します。

于 2011-11-25T00:14:12.057 に答える
1

dBase では、削除コマンド「pack all」を指定して、削除されたレコードが完全に削除されるようにする必要があります。

dBase にアクセスできる場合は、該当するファイルを使用してから、pack all コマンドを実行します。

于 2011-11-25T13:42:21.470 に答える