• ベストアンサー

データベースを用いたプログラム

このプログラムでは、 #include<stdio.h> int main() { int a; printf("数字を入力してください。\n"); scanf("%d",&a); return 0; } ある数字を入力すれば、そこで終了になってしまいます。 ここで聞きたいことは、例えば1~100くらいまでの数字をデータベースとしてエクセルに保管し、このプログラムのように、ある数字を入力してそれをデータベースと照らし合わせ、数字と一致すれば次の処理へ移り、一致しなかったらエラー表示が出るようなプログラムを作りたいのですが、ここからどのように進めていけばできますか?ご教授お願いします。 もちろんそのプログラム自体は、データベースを使用しなくてもif文等で実行は可能ですが、相手に伝わりやすいようにするために、簡易なプログラムを用いて表現させてもらいました。実際はかなり膨大になります。 OSはWin XPでコンパイラはボーランドのフリーコンパイラ、もしくは、Visual Studio.NET2003をしようしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

以前に書かれていたプログラム http://okwave.jp/kotaeru.php3?q=1727686 でやってるみたいにして select count(*) from ~ where <フィールドが指定した数字と一致するか>; とかSQLで検索かければ 一致するかどうかは調べられます。

noname#89227
質問者

お礼

なるほど、ちょっとやってみます。 どうもありがとうございました。

その他の回答 (4)

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.4

ExcelファイルをC++でデータベースとして使用するのでしたらODBC経由で接続すればいいですね。 ODBCデータソースでExcelシートを指定したデータソースを作成し、そのデータソースに対してSQLを投げるようにすれば良いです。 プログラムとしてはレコードを全件ナメると言うより、select文で該当項目に対しての検索を行い返ってきた件数が0ならエラー処理に、正常なら次の処理に、と書くだけですね。 例えばですが #include<stdio.h> int main() { int a; printf("数字を入力してください。\n"); データベース接続関数 データベースオープン SQL作成(a); SQL実行; 件数=レコードセットから参照 if (件数=0) {   次処理 } else {   エラー処理 } データベースクローズ } こんな形になりますね。(ムチャクチャ抜粋してます。) データベースを使用するに辺りSQLの知識は必須です。 ODBCを使用したデータベースの使用方法はググってください。 (必要なヘッダ等) 以下のサンプルはC++ .netでストアドを使用した方法です。ちょっと複雑ですのでいろいろなサンプルを検索してみてください。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;310142
noname#89227
質問者

お礼

 SQLですかぁ… 徐々に習得していきたいと思います。 どうもありがとうございまいした。

回答No.3

>このプログラムでは、 どのプログラム? と探してしまいました(^^; 何がやりたいのかよくわかりません。100個程度のデータにDB使わないとならない理由というのがよくわかりませんが…。 >データベースとしてエクセルに保管し、 そもそも何故エクセルなんでしょう? エクセルでやるのならC++なんて使う必要なくて、エクセルだけで完結させた方が楽でしょう。そもそも、C++プログラムから簡単に操作できるようなインターフェース持ってないし。 エクセルでやらなくていいということなら、 Visual Studio.NET2003とアクセスMDB使えば超楽勝です。

noname#89227
質問者

お礼

アクセスMDB?? 初耳ですが、検索しながら習得していきたいと思います。ありがとうおございました。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

「エクセルに保管し、保管した値を参照する」というのが必須条件であれば、VBAを使うのが早道です。 「エクセルに保管し、保管した値を参照する」というのが必須条件で、なおかつC++を使わなければならないのであれば、オートメーションというものを使用することになります。 他のアプリケーションとの連携を取ることになるのですが、ある意味、茨の道です。 ひとまず、Visual Studio .NET 2003のサンプルの中で「オートメーション クライアント」に関するもの(CALCDRIV, IPDRIVE)と、それと対になるオートメーション サーバ(MFCCALC, INPROC)について調べてみることをお勧めします。

noname#89227
質問者

お礼

なりほど、あまり聞いたことのない用語がそろっていますが、検索しながら、習得していきたいと思います。どうもありがとうございました。

  • HAL007
  • ベストアンサー率29% (1751/5869)
回答No.1

100個程度のもなら配列を使うのが一般的です。 DB化する場合は、変数として常に他のアプリケーションなどから リアルタイムで変更が加わる様な場合に検討するものです。 固定値なら配列でスキャンさせれば済みますしプログラミングの勉強なら 初歩のテクニックです。

noname#89227
質問者

お礼

分かりました。 どうもありがとうございました。

関連するQ&A