1

Visual Studio 2008 (vb.net) でプロジェクトに取り組んでいます。アプリは、Visual FoxPro データベース (dbc ファイル) からデータをインポートする必要があります。FoxPro の理由を聞かないでください。vfp である必要があり、データベースは別のアプリケーションによって毎日更新されます。したがって、他のデータベース形式は使用できません。

OleDb FoxPro ドライバー (最新バージョン) を介してデータベースに接続します。すべてが問題ありません(速度は別として)。必要なすべてのテーブル (dbf ファイル) からデータをインポートできます。それをデータセットにロードしてから、データセット自体を操作して、再接続に時間がかからないようにします (この段階でデータを読み取る必要があるだけです)。

問題は 、コードをコンパイルして実行すると、すべてのレコードが表示されないことです。

ただし、Releaseフォルダー ( binディレクトリ内) からコンパイルされたバージョンを実行すると、アプリはより多くのレコードを表示します。

さらに困惑しているのは、Visual FoxPro 9.0 で同じデータテーブル ファイルを開くと、VS2008 で表示されているデータしか表示されない (Realease バージョンでは表示されない) ことです。ただし、OpenOffice Calc で dbf を開くと、すべてのレコードが表示されます。つまり、アプリのリリース バージョンと同じレコードです。

私が最初に考えたのは、VFP 9 ですべてが表示されない場合、ファイルは別のバージョンの VFP で作成されたに違いないので、接続文字列を変更する必要があるということでした。しかし、コンパイルされたリリース バージョンがすべて正しいデータを表示するのはなぜでしょうか? 接続文字列は正常である必要があります。

別のアプリで自分の dbfs を確認するためにDBF Viewer Plusをダウンロードしましたが、すべてのレコードを表示することもできません。

なぜこのように振る舞うのか分かりません。また、アプリをテストするたびにアプリのビルドを作成する必要があるため、かなり面倒です。

Windows Vista で開発しています。

お世話になりました!

4

3 に答える 3

1

数年間foxproを使用していませんでしたが、以前はdbfファイルの「機能」であり、レコードを削除しても、ファイルを「パック」するまで実際には消えません。レコードが削除されたことを示すフラグを設定するだけで、ファイルのほとんどの foxpro ビューはそれに応じてそれを除外しますが、それでもそこにあり、oledb 接続からは見えます。

編集:別の可能性は、使用しているインデックスです-「一意」を指定すると、特定のビューの「重複」レコードの1つを除くすべてが除外されます

于 2009-11-21T18:19:12.270 に答える
0

経験上、プロバイダーがこのように振る舞うのを見たことがないと言えます。

VFP は、場合によっては非自明な方法で表示されるものに影響を与える「フィルター」を設定できます。それらは DBC に保存されている可能性があります。他のアプリケーションがフィルターを設定している可能性はありますか?

ただし、アプリを実行する場所によってデータが異なる理由がよくわかりません。これにより、何か他のことが起こっていると思います。

可能であれば、VFP9 開発環境のコピーを取得し、その中で DBC を開くことをお勧めします。これにより、さらに多くの作業を進めることができます。

于 2009-11-24T21:56:42.430 に答える
0

開発環境が別のデータセットを見ている可能性はありますか? 開発環境の接続文字列または DSN 設定が異なりますか?

リック・シューマー VFP MVP

于 2009-11-28T17:45:39.040 に答える