VC6とACCESS2000とでデータ管理プログラムを作る場合、ADO、DAO、ODBCのどれを使
うのがデータベース初心者にはやりやすいでしょうか?
また、作成したプログラムは後で開発環境の入っていないWindows 98/Me/NT/2000/XP
など色々なOSで使用したいのですが、問題なく動作するでしょうか。
CDaoクラスについて
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200102/01020049.txt
上のスレを見るとDAOのdllをインストールしなければならないみたいなのですが、
そこら辺の情報をご存知の方いらっしゃらないでしょうか
実は最初は10列×10000行程の.csvファイルでデータ管理をしていました。ファイル入
出力は全部自前でやってたんですけど、データ量が多くなるにつれてもっと効率のい
い方法をと思いデータベースを利用しようかと考えた訳です。
ただこのプログラムは開発環境も入ってない、プログラマでもない人達が使うので、
なるべくプログラムのインストール以外の操作は行わず、誰でもデータ操作が簡単
にできるようにしたいのですが、どのような方法をとれば良いのかご存知の方ご教授
していただけないでしょうか。
単純な固定テーブルのアクセスなら
OLEDB の CAccessor を使うのが楽だと思います。
OLEDB のヘルプを見てください。サンプルもあります。
>単純な固定テーブルのアクセスなら
>OLEDB の CAccessor を使うのが楽だと思います。
>OLEDB のヘルプを見てください。サンプルもあります。
レスありがとうございます。OLEDB の CAccessorですね。
すいません、聞いたこともないです。調べてみます。
> http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200102/01020049.txt
この当時ハンドルNAME「masa」ですが
私の環境は、SQL Server 7.0 VC6.0 MFC ODBC
で作業しています
手短なサンプルで解説のあるものが「InSide VisualC++ 5.0」なもので
Access2000 のMDBをAppWizardで処理しようと、しているけど
うまく認識してくれないみたいです
私も昔はVC1.0でDOSアプリの頃は自分でINDEXとデータ部ファイル作ってやってた
けどデータ部2GB超えると処理できないのでデータベースに移行しました
処理速度を気にせずプログラミングだけを考えるのであればODBCはお勧めかも
>Access2000 のMDBをAppWizardで処理しようと、しているけど
>うまく認識してくれないみたいです
「ツール」ー「データベースユーティリティ」ー「データベースの変換」
ー「セキュリティ」ー「Microsoft Accessの旧バージョンのデータベースに変換」
にすると認識してるようです。
//DAO36を認識させるために必要
AfxGetModuleState()->m_dwVersion = 0x0601;
すいません、入力途中で送信ボタンを押下してしまいました。
上の続きですが、一旦旧バージョンで認識させた後、
//DAO36を認識させるために必要
AfxGetModuleState()->m_dwVersion = 0x0601;
を指定してやれば認識するそうです。試してませんが…
やはり一番の問題は
>ただこのプログラムは開発環境も入ってない、プログラマでもない人達が使うので、
>なるべくプログラムのインストール以外の操作は行わず、誰でもデータ操作が簡単
>にできるようにしたいのですが、どのような方法をとれば良いのかご存知の方ご教授
>していただけないでしょうか。
ここで、このプログラムを使用する人が、インストール後にデータソースの設定など
ごちゃごちゃした設定をなるべくしないでそのまま使えるようにしたいのです。
Access2000 では、やったことありませんが次の手順で動くと思います。
1. プロジェクト新規作成 MFC AppWizard(exe)
2. データベースのサポート ファイルとデータベースビュー選択 で データソース押下
3. OLEDB 選択で データソース押下
4. Maicrosoft jet 4.0 OLEDB Provider 選択 次へ
5. データベース名に Access2000 ファイルを設定 OK
6. OK を押下すると指定データベースのテーブル名一欄が出てくるので1つ選択する
7. これで CAccessor の自動生成が完了
8. C*Set の open() 関数に
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, C:*.mdb);
があるので、ここのパスをプログラム上で変更するようにする。
Access2000がインストールされていればどの環境でも動作すると思います。
C*Set.MoveNext();
C*Set.Insert();
C****Set.Update();
CCommand.Open(); で SQL を指定
などを使ってデータベース操作を行う。
レスありがとうございます。
>Access2000がインストールされていればどの環境でも動作すると思います。
お伺いしたいのですが、Access2000がインストールされてないと動作しないのでしょ
うか。私のPC環境だと大丈夫なのですが、他の人のPC環境だとAccess2000がインストー
ルされていない場合も当然あるので、その場合でも動作しないとダメなんです。
…となると、Access2000を使用するという案自体がダメなのでしょうか。
インストール直後のWindows 98/Me/NT/2000/XPで、特に他のソフトをインストール
しないで動作するデータベースってないでしょうか。
詳しくは分かりませんが作成したプログラム上で、C:\Program Files\Common
Files\System\Ole DB のdllを一部使用しているみたいです。
SQL server の場合は、必要な dll が入ってない環境がありました。
Access2000の場合は、もしかしたら xecel などがインストールされていれば動作環境として
はOKなのかもしれません。
>詳しくは分かりませんが作成したプログラム上で、C:\Program Files\Common
>Files\System\Ole DB のdllを一部使用しているみたいです。
情報ありがとうございます。
>SQL server の場合は、必要な dll が入ってない環境がありました。
SQLはダメということですね。
>Access2000の場合は、もしかしたら xecel などがインストールされていれば動作環境
>としてはOKなのかもしれません。
元データは単なる.csvファイルなのでエクセルでも問題ないです。
ただこの場合でも、「エクセルがインストールされていないマシンでの動作はどうし
よう」となるんですが、いいアイデアはないでしょうか。
データベースを使うにはプロバイダーが必要です。
>Access2000の場合は、もしかしたら xecel などがインストールされていれば動作環境
>としてはOKなのかもしれません。
これは、excel は VBA があるので、 microsoft jet 4.0 プロバイダーもサーポートしてい
るんじゃないかと思ったから書きました。(実際は分かりません)
Access2000 のデータベースを使うには、microsoft jet 4.0 プロバイダーのサーポートが必
ず必要と思います。
使用環境指定やdllのインストールができないならば、データベースの使用はできないのではな
いでしょうか。
単体で動かすのではなく、インストールプログラムを作る方法を考えた方がいいと思います。
>データベースを使うにはプロバイダーが必要です。
>
>>Access2000の場合は、もしかしたら xecel などがインストールされていれば動作環境
>>としてはOKなのかもしれません。
>
>これは、excel は VBA があるので、 microsoft jet 4.0 プロバイダーもサーポートし>
てい
>るんじゃないかと思ったから書きました。(実際は分かりません)
>
>Access2000 のデータベースを使うには、microsoft jet 4.0 プロバイダーのサーポート
>が必
>ず必要と思います。
>
>使用環境指定やdllのインストールができないならば、データベースの使用はできないの
>ではな
>いでしょうか。
ちんぷんかんぷんなコト申し上げてすいません。まだデータベースに関する知識が少な
くて、データベースを実行するには何が必要十分な環境なのかよく理解してないのです。
>単体で動かすのではなく、インストールプログラムを作る方法を考えた方がいいと思い>
ます。
インストールプログラムですか。それはデータベースの環境もプログラムと一緒に
インストールするということですよね。プログラム本体のインストールプログラムの
作成なら問題ないのですが、データベース環境のインストールってどうやるんでしょう
か。必要な.dllをプログラムと一緒に指定ディレクトリにコピーでしょうか。
>インストール直後のWindows 98/Me/NT/2000/XPで、特に他のソフトをインストール
>しないで動作するデータベースってないでしょうか。
ないよ!
データベース サーバーへクライアントから共有アクセスすることをイメージしてますか
それとも、1PC 1APー1DB で他からのアクセスの無いスタンドアロンの
ような実行環境イメージしてますか
MSDE 1.0ならフリーでダウンロードできるし、OBDC設定くらいはいるけど
OSQL使えるし、アプリさえ作ってしまえば、費用はあまりかからないと思いますけど
ネットワーク参照するにしてもODBCでIP設定してやれば済むしいいんじゃないですかね
OLEDB は対応するOSの信頼性がどのOSから同一バージョンで動作保証
されているのかわからないのでお勧めしませんでした
いろいろありがとうございます。
>1PC 1APー1DB で他からのアクセスの無いスタンドアロンの
>ような実行環境イメージしてますか
このような実行環境をイメージしています。
今まではデータの取得をアプリが行って、それを直接.csvファイルに出力
していました。その出力部分をデータベース化しようかなと考えたのです。
>MSDE 1.0ならフリーでダウンロードできるし、OBDC設定くらいはい
>るけどOSQL使えるし、アプリさえ作ってしまえば、費用はあまりかからない
>と思いますけどネットワーク参照するにしてもODBCでIP設定してやれば済
>むしいいんじゃないですかね
>OLEDB は対応するOSの信頼性がどのOSから同一バージョンで動作保証
>されているのかわからないのでお勧めしませんでした
情報ありがとうございます。今はまだOBDC設定もOSQLも何のことやらよく
わかりませんが、少しずつ調べていきます。