問題タブ [adox]

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.

0 投票する
1 に答える
2725 参照

c# - リンク テーブルを作成するための ADO.NET の方法

ADO.NET OLEDB プロバイダーを使用するアプリケーションを作成しています。データベースはアクセスです。DB とのやり取りのほとんどは、DDL/DML SQL クエリを介して行われます。

リンクされたテーブルを作成する必要がありますが、ADO.NET だけでそれを行う方法はないようです。単純な DDL クエリでも、Access システム テーブルを直接操作しようとしても。

アプリケーションに余分な参照/依存関係があるため、ADOX の使用を避けようとしています。誰でもこれを回避する方法を知っていますか? とても有難い。

現在、ADOX を使用してリンク テーブルを作成する方法を次に示します。

0 投票する
1 に答える
114 参照

.net - ADOX が行ったことを行う .NET ライブラリ、つまり cross-db DDL ライブラリはありますか?

私はクロスデータベースアプリケーションを書いています。コマンドと接続に関しては、ADO.NET の基本クラスと oledb プロバイダーとうまく連携します。

今、テーブル、インデックスを作成し、それらを削除し、テーブルのリストをクエリするなどのコードを書く必要があります.

どうすればこれを達成できますか?ADOX のように、これに役立つライブラリはありますか?

0 投票する
0 に答える
962 参照

ms-access - How to programmatically create an encrypted database that is Access 2007 compatible from the Access 2010 database engine?

I'd like to upgrade my application to use the newer Access 2007/2010 database engine. It currently stores its data in a Jet 4.0 (MDB) database. My application is written in Delphi, and it uses ADODB (ADO classic) to interact with the database. I'd like to upgrade the database engine from Jet 4.0 so that I can offer better encryption options.

I changed the connection string in my application to use Microsoft.ACE.OLEDB.12.0 and despite a few hiccups, the conversion went amazingly well! Impressive backward compatibility.

I also distribute my application in a Wine bundle for Mac users. I'm running into a few problems with running my application under the Access 2010 Database Engine on Wine (1.4-rc1). Strange access violations appear. When I install the Access 2007 Database Engine on Wine instead, my application works great. Just as good as with Jet 4.0. So it appears that the Access 2010 Database Engine isn't quite ready for Wine. Bummer!

The problem I'm running into is that if you have the Access 2010 Database Engine on your Windows machine (such as when you install Access 2010), when it creates a new database it encrypts it using a higher form of security that is incompatible with Access 2007. Users of my application couldn't share their database between their PC and Mac (i.e. via Dropbox) since they would no longer be compatible.

In Access 2010, you can set an option for it to "Use legacy encryption". This option causes Access 2010 to create new databases using an encryption that is compatible with Access 2007. This option sets a registry key "CompatMode", and the Access 2010 application must take a different approach to creating new databases in this case.

My question is: How can I programmatically create an encrypted database that is Access 2007 compatible from the Access 2010 database engine? If the Access 2010 application can do it, how can I? I'm aware of two techniques for creating an Access database: 1. via DAO (DBEngine.CreateDatabase), 2. via ADOX (Catalog.Create). I've been trying various approaches to these two techniques, and can't come up with anything that creates an encrypted database that is Access 2007 compatible.

0 投票する
2 に答える
4867 参照

c# - ADOXでアクセスデータベースを作成できません

ADOXInteropに本当に奇妙な問題があります。

私はこのコードを持っています:

cat.Create()行でコードが失敗しています。本当に奇妙なのは、私のローカル開発者のマシンでは正常に動作するが、本番サーバーでは動作しないことです...問題の行の前にランダムなファイルを生成しようとして動作したため、書き込み権限の問題ではありません完璧に。COMExceptionメッセージは「指定されていないエラー」のみですHResult:-2147467259

サーバーOSはWindows200832ビットです。サーバー構成の問題だと思いますが、少し教えていただけますか?他に何ができるかわかりません...

0 投票する
1 に答える
1351 参照

c# - C# で .accdb ファイルを作成しようとするとエラーが発生する

これは、.accdb ファイルが見つからない場合に作成する私のコードです。

しかし、プログラムで実行すると、次のランタイム エラーが発生します。

ファイル名の何が問題なのかわからないので、どなたかわかる方がいましたら教えてください。

0 投票する
1 に答える
2778 参照

c# - .NETからのADODB接続にADOX.Catalog.ActiveConnectionを設定できません

私は、レガシーVB6アプリ(データベースとしてMS Accessを使用します。質問しないでください)を.NETに段階的に移植するという任務を負っています。

これは長いものになるでしょうが、少し文脈を与える方が良いと思います。

このアプリには、アプリのフォルダーにあるDLLに基づいて動的に作成されるメニュー付きのメインMDIフォームがあります。これは基本的にプラグインのようなものです。各DLLはメニュー項目で表され、クリックするとDLLに含まれるメインフォームが開き、必要に応じて呼び出さSetParent()れます。

MDIフォームが私の出発点です。上記のフォームを開くことができるように、それを十分に書き直したいと思います(もちろん、再設計と単体テストを行います)。それを釘付けにしたら、一度に1つのDLLの書き直しを開始します。

すべてのDLLにはADO接続が必要です。これは、C#から渡すことができました。

問題は、それらのプラグインの1つ(少なくとも、おそらく他の多くのプラグイン)がADOXを使用してデータベースで処理を実行することです。ここに問題があります。つまり、ADOX.CatalogのActiveConnectionプロパティをADO接続に設定しようとすると、すべて実行時エラー3001が表示されます:Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

私は自分が間違っていることを一生理解することができません。

VB6コードは、可能な限り単純です。

ADO接続を作成するC#コードは、VB接続と同じくらい簡単です。

そして、への呼び出しはOpen()成功します。ActiveConnection次のように、C#側でを設定しようとすると、次のようになります。

すべてが機能します。

これで、C#側でADOXをインスタンス化してVB6に渡すだけで問題を回避できますが、VB6コード(もちろん単一の単体テストはありません)を微調整することでPITAになる可能性があり、私はそうではありません。そもそもそれは簡単です(アプリは一度に複数のAccess DBを使用でき、必要に応じてそれぞれへの接続を開いたり閉じたりできるため)。

だから、誰かが私が間違っていることについて何か考えを持っていますか?C#から、.NETタブとCOMタブの両方からADODBを参照しようとしました(そして、COMタブから選択したADOバージョンは正しいものです:2.5 ...繰り返しますが、尋ねないでください)が、それでも喜び。

編集

次のように、C#からの接続にRecordSetのActiveConnectionプロパティを割り当てようとすると、まったく同じことが起こります。

ActiveConnectionはバリアントであるため、私が考えることができるもう1つの回避策は、接続のConnectionStringプロパティに設定することです。それは機能しますが、毎回新しい接続を作成して開くことになり、率直に言って私はそれが好きではありません。

0 投票する
1 に答える
4054 参照

c# - ADOXテーブル列の「Nullable」プロパティ?

C#でAccessファイル(.mdb)を作成しようとしています。レガシープロセス用にSQLからデータをエクスポートしています。私はそれを機能させました、私が直面している唯一の問題は列をnull許容に設定することです。

これが私が持っているものです(簡潔にするためにほとんどの列を削除しました):

「Nullable」プロパティを設定しようとすると、次のエラーが発生します。「要求された名前または序数に対応するコレクションにアイテムが見つかりません。」

RequiredとNullableのどちらを使用するかについて矛盾するレポートを見つけましたが、両方を試したところ、同じ結果が得られました。

null許容プロパティを設定できない理由はありますか?データをプルするとき、私は怠惰でデフォルトのnullを空白にするかもしれませんが、可能であればそれを避けたいと思います。

編集:ハンスがコメントで述べたように、代わりに属性プロパティを使用する必要がありました:

0 投票する
0 に答える
1295 参照

c# - ADOX を使用して C# で MS Access フィールド キャプション プロパティを設定する方法

ADOX を使用して C# で MS Access フィールド キャプション プロパティを設定する方法を教えてください。

私はすでにこの設定を試しました:

しかし、次のエラーメッセージが表示されます:


ADODB.プロパティ

要求された名前または序数に対応するコレクション内に項目が見つかりません。

ありがとう