問題タブ [jet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
debugging - Microsoft JET SQLクエリログまたは「顧客のプログラムをデバッグするにはどうすればよいですか?」
問題:
最大の顧客が作成したプログラムを使用して、注文の受け取り、輸送の予約、その他の注文関連の作業を行います。プログラムを使用する以外にチャンスはありません。お客様は、プログラムの問題に関して非常にサポートしていません。私たちはプログラムと一緒に暮らす必要があります。
現在、このプログラムは2人以上のユーザーで使用するとほとんどの場合非常に遅いので、カーテンの後ろを見て問題の原因を見つけようとしました。
私がこれまでに見つけたプログラムについてのいくつかのポイント:
- それはVB6.0で書かれています
- これは、1人のユーザーのマシン上のフォルダーにあるパスワードで保護されたAccess-DB(Access 2000 MDB)を使用します。
- そのフォルダはネットワーク上で共有され、他のすべてのユーザーによって使用されます。
- msjet40.dllバージョン4.00.9704を使用してアクセスと通信します。ADOだと思いますか?
また、Process Monitorを使用してファイルアクセスを監視し、プログラムが非常に遅い理由を調べました。プログラムがアイドル状態の場合でも、mdbファイルに対して何千もの読み取り操作を実行しています。もちろん、ネットワーク上ではこれは非常に遅いです。
プロセスモニタートレースhttp://img217.imageshack.us/img217/1456/screenshothw5.png
本当の質問:
読み取りアクティビティの原因となるクエリを監視する方法はありますか?設定できるトレースフラグはありますか?JET DLLをフックしますか?プログラムがいくつかの高価なクエリを実行しているため、JETがプロセスで大量のデータを読み取っていると思います。
PS:私はすでにmdbを会社のファイルサーバーに配置しようとしましたが、ローカル共有よりもアクセスがさらに遅いという成功を収めました。また、クライアントのロックメカニズム(日和見ロック)を変更しようとしましたが、成功しませんでした。
私は何が起こっているのかを知りたいので、顧客の開発者がプログラムをより速くするのを助けるために、いくつかの難しい事実と提案が必要です。
c# - 相互運用アセンブリを使用せずに Microsoft Jet (Access) データベースを作成するにはどうすればよいですか?
ADOX 相互運用アセンブリを使用せずにアクセス (mdb) データベースを作成する必要があります。
これはどのように行うことができますか?
sql-server - フィールド名にピリオドを含むSQLServerビューへのJetODBCリンクを作成するにはどうすればよいですか?
Access 2003(Jet)データベースからSQL ServerでホストされているビューへのODBCリンクを作成する必要があります。このビューには、次のようなピリオドを含むエイリアスフィールド名が含まれています。
ビューの背後にあるSQLソースでは、フィールド名は角かっこで囲まれています。
...したがって、SQL Serverはビューの作成について文句を言いませんが、Jet DBから(プログラムまたはAccess 2003 UIを介して)ビューへのODBCリンクを作成しようとすると、次のエラーメッセージが表示されます。
'Seq.Group'は有効な名前ではありません。無効な文字や句読点が含まれていないこと、および長すぎないことを確認してください。
残念ながら、ビューは別の製品の一部であるため、ビューの構造を変更できません。そのため、フィールド名をそのまま使用しています。句読点のないフィールド名を使用して独自のビューを追加することもできますが、SQL Serverを変更したくないのは、アップグレードや修正プログラムなどが発生するたびに、SQLServerが別のメンテナンスポイントになるためです。より良い回避策を知っている人はいますか。 ?
sql - INSERT ステートメントの後の @@IDENTITY は常に 0 を返します
データベースで INSERT ステートメントを実行し、Auto_Increment 主キーを返す関数が必要です。私は次の C# コードを持っていますが、INSERT ステートメントは正常に動作しますが (データベース内のレコードを確認でき、PK は正しく生成され、行 == 1)、id 値は常に 0 です。違う?
答えに応じて、私は試しました:
しかし、「SQLステートメントの終了後に文字が見つかりました」というエラーが表示されます
OleDb 接続で MS Access データベースを使用しています。Provider=Microsoft.Jet.OLEDB.4.0
c# - OleDbを介してMSAccessフィールドサイズを決定する方法
既存のアプリケーションはC#です。起動時に、アプリケーションは仮想メソッドを呼び出してデータベースに変更を加えます(たとえば、新しいリビジョンでは、新しいフィールドなどを計算する必要がある場合があります)。開いているOleDb接続がメソッドに渡されます。
フィールド幅を変更する必要があります。ALTERTABLEステートメントは正常に機能しています。ただし、フィールドがすでに適切なサイズである場合は、ALTERTABLEステートメントの実行を避けたいと思います。同じOleDb接続を使用してMSAccessフィールドのサイズを決定する方法はありますか?
c# - System.Data.OleDb.OleDbException:無効なインターネットアドレス。OleDbを使用して、Webサーバー上にあるExcelファイルにどのように接続しますか
SharePointサーバー上にあるExcelファイルへのOleDb接続を作成しようとしています。私が現在遊んでいるサンプルコードは、OleDb例外「無効なインターネットアドレス」をスローします。
Webサーバー上のExcelスプレッドシートに接続する方法を知っている人はいますか?
アップデート
Microsoftのサポートが戻ってきて、WebサーバーにあるExcelファイルに接続できないことに同意しました。Jet .40とニュースACE(Access Connectivity Engine)はどちらも、この動作モードをサポートしていません。彼らは、KB記事「FTPまたはHTTPサーバーのデータのインポート/リンクヘルプトピックは、Access 2000、Access 2002、Access 2003、およびAccess2007では正しくありません」への参照を引用しています。
.net - .NETからAccess(Jet)テーブルに列を追加します
私たちのアプリ(すでにデプロイ済み)はAccess/Jetデータベースを使用しています。今後のバージョンのソフトウェアでは、テーブルの1つにいくつかの追加の列が必要です。最初にこれらの列が存在するかどうかを確認し、存在しない場合は追加する必要があります。
誰かが簡単なコードサンプル、リンク、または正しい方向へのナッジを提供できますか?
(私はc#を使用していますが、VB.NETサンプルでも問題ありません)。
ms-access - Jet(Access) DB と式ベースの列?
私は時折、従来の ASP をフロント エンドとして使用し、アクセス データベースをバックエンドとして使用する古いプロジェクトに取り組んでいます。
行の他の列から値を計算するロジックを含むテーブルの 1 つに新しい列を作成したいと思います。
より新しい DBMS でこれを行う方法は知っていますが、アクセスがそれをサポートしているとは思いません。私はアクセス フロントエンドを使用しておらず、ODBC 経由の Jet DB エンジンのみを使用していることに注意してください。
ポインタはありますか?
sql - デフォルト値でACCESSにフィールドを追加します
Visual C++ コードを使用して、デフォルト値を持つ新しいフィールドを挿入したいと考えています。私はこれを書いた:
しかし、それは正しくありません。そのためにはどうすればよいか?あなたの誰かが私に正しいコードを書くことができますか?
odbc - x64 OS で C# を使用して Jet データベース/Excel ファイルをクエリする
そのため、Microsoft Access MDB ファイルや Excel スプレッドシートなどのデータ ソースを照会するためのMicrosoft.Jet.OLEDB.4.0データ プロバイダーは、Windows 64 ビット オペレーティング システムでは機能しないことを知りました。
x86 環境と x64 環境の両方で互換性を確保するために、.NET 3.5 (C#) アプリケーションでこれらのファイル タイプに対してクエリを実行するには、何を使用する必要がありますか? 私はインターネットを精査しましたが、この非互換性を処理する方法について明確な答えを見つけることができないようです.
また、x64 環境で使用した場合に Microsoft.JET.OLEDB.4.0 プロバイダーが行うのと同じ例外をスローするように見えるため、ODBC プロバイダーと MSDASQL プロバイダーを使用してみましたが、うまくいきませんでした (私がひどく間違ったことをしていない限り)これらの他の 2 つのプロバイダーは、私の Windows XP x86 環境では正常に動作しますが)。
x64 システムでの ODBC 接続には%WINDIR%\System32\odbcad32.exeを使用する必要があると言っている人を見つけましたが、これを利用する方法を考えています。
x64 でスローされる例外の例:
************** 例外テキスト ************** System.InvalidOperationException: The 'Microsoft.Jet.OLEDB.4.0' provider is not registered onローカル マシン。System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString コンストラクター、DataSourceWrapper& datasrcWrapper) で System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString コンストラクター、OleDbConnection 接続) で System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions オプション、オブジェクト) poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningObject)