はじめまして。
プログラミング言語に関して全く知識が無いのを前提にご教授ください。
Access+VBAである程度のデータベースを作ったのですがこれをAccessの無い環境で動作させたいと思いどの言語を使用すればいいのか悩んでおります。そこでお聞きしたいのがデータベースとVBの関係です。VBではデータベースそのものを作ることは出来ないと本で読んだのですがデータベースそのものはどのようにすればいいのでしょうか?今の知識では「Accessでテーブルを格納したmdbファイルを作りVBで作成したmdbファイルを操作するプログラムとを同梱しVBランタイムで動作」させればいいのかと考えております。この考えでよろしいでしょうか?
また、これも本で読んだのですがDelphiという言語ではデータベースそのものも本体に収めることができるというものです。自分はVBAをかじった程度ですのでDelphiもVBもほぼ0からの習得になるのですが、AccessでのVBAが非常に理解し易いものだったのでその延長であるVBで何ができるのかが気になっています。VB以外のことをここでお聞きするのは心苦しいのですが教えていただければ幸いです。
> VBではデータベースそのものを作ることは出来ないと本で読んだのですが
それはどの本なのか、教えていただけないでしょうか?
その本の中で使われている「データベース」の定義と、VBのバージョンにもよるかと思います。
Databaseの元々の意味は、データの集合体を意味する用語です。
この意味においては、XMLテキスト、CSVテキスト、iniファイル、msiファイル、
レジストリ、ファイルリソースなども一種のデータベースと見なされます。
この意味(CSVやXMLファイルなどを読み書きする事)に関していえば、VBで十分に可能です。
# VB6には、レジストリに文字列を書き込む命令(SaveSetting)や、自EXE内のリソース文字列を
# 読み込む命令(LoadResString)なども用意されています。
あるいは、より狭義な意味として、DBMS(Database Management System:データベース管理システム)で
扱うデータ(もしくは、DBMSそのもの)を指す場合もあります。
この場合は、Microsoft JETデータベース、MSDE、SQL Server、Oracleなどが該当します。
この意味に関して言えば、高機能なDBMSそのものを作るという事は、
VBでは(そして他の言語でも)難しいと思います。しかし、DBMSを利用して、
データの読み書きを行うための機能であれば、VBにも実装されています。
# 古いバージョンのVBの中には、DBMSとの連携機能を、標準では
# 有していない物もありましたけれどね。
> 今の知識では「Accessでテーブルを格納したmdbファイルを作り
> VBで作成したmdbファイルを操作するプログラムとを同梱し
VB5のCD-ROM内には、Access 97形式(Jet 3.5x形式)のmdbファイルを
作成・編集するVBのサンプル「VisData.vbp」があります。
このサンプルでは、Jetへの接続に DAO(Data Access Object)を利用しています。
(DAO自体はAccessでも利用されますので、恐らく御存知かと思います)
あるいは、Access 2000/2002でもサポートされるようになった
ADO(ActiveX Data Object)を利用して、mdbファイルを扱う事もできます。
# DAOやADOは、VBと共に配布して使うことができます。
ただし、mdb中に含まれた Access VBAのモジュールやレポート機能などは
VBからは利用できません。データの読み書きができるのみです。
mdb中のレポート等を使いたい場合は、Accessランタイムが必要になります。
(レポートやVBAは、Jet自身の機能ではなく、Access固有の拡張機能です)
また、Jet(mdbファイル)以外であれば、「MSDE」というDBMSも利用できます。
Professional Edition以上のVB6ユーザーであれば、自作したEXEと一緒に配布できます。
http://www.microsoft.com/japan/msdn/vstudio/msde/
>魔界の仮面弁士さん
早速のレスありがとうございます。
>> VBではデータベースそのものを作ることは出来ないと本で読んだのですが
>それはどの本なのか、教えていただけないでしょうか?
表現が悪かったようです。失礼致しました。
ここで言いたかったのはDelphiとの比較で、VBでは外部データベースを操作するのが基本であるのに対し
Delphiでは内部的にデータベースを構築することでVBに比べ処理が速いと解釈したものです。
いろいろな文献を流し読みしたので解釈そのものが間違っているかもしれません。
>この意味(CSVやXMLファイルなどを読み書きする事)に関していえば、VBで十分に可能です。
>〜〜〜
># 有していない物もありましたけれどね。
なるほど。
>> 今の知識では「Accessでテーブルを格納したmdbファイルを作り
>> VBで作成したmdbファイルを操作するプログラムとを同梱し
>VB5のCD-ROM内には、Access 97形式(Jet 3.5x形式)のmdbファイルを
>作成・編集するVBのサンプル「VisData.vbp」があります。
>このサンプルでは、Jetへの接続に DAO(Data Access Object)を利用しています。
>(DAO自体はAccessでも利用されますので、恐らく御存知かと思います)
>あるいは、Access 2000/2002でもサポートされるようになった
>ADO(ActiveX Data Object)を利用して、mdbファイルを扱う事もできます。
DAOやADOが使えるというのはうれしいですね。
まだVBAでかじりたてではありますが非常にわかりやすいものでした。
># DAOやADOは、VBと共に配布して使うことができます。
とするとAccessの無い環境でもmdbファイルの編集が可能になりますね。
>ただし、mdb中に含まれた Access VBAのモジュールやレポート機能などは
>VBからは利用できません。データの読み書きができるのみです。
>mdb中のレポート等を使いたい場合は、Accessランタイムが必要になります。
>(レポートやVBAは、Jet自身の機能ではなく、Access固有の拡張機能です)
なるほど。ではAccessのレポート的な作業はVBでも可能なのでしょうか?
データベースを元に表やグラフを作成し表示またはプリントできますか?
VB6には、グラフ用のコンポーネント(MSChart)や、
レポート用のコンポーネント(CrystalReportやDataReport)が
付属しているので、これを使って出力する事ができます。
ただし、VB付属の物は、市販製品の機能限定バージョンという
位置づけであるため、機能的にはAccessのレポート機能の方が上です。
複雑な帳票でなければ、付属のコントロールでも十分に機能しますが、
付属のコンポーネントで対応できない場合には、それらの製品版などの
「VB用の帳票コントロール」を購入して出力するとか、あるいは
ExcelをVBから制御して、それを帳票ツールとして使う場合が多いようです。
>魔界の仮面弁士さん
大変参考になりました!ありがとうございました。
周りに詳しい人がいないのでいろいろと書籍を読んで見ましたが
なかなか自分の疑問点を解消してくれるものにめぐり合わず悩んでおりました。
精通している方から直接お聞きできて嬉しく思います。
貴重な時間を割いてお付き合い頂きありがとうございました。
これからVBを習得する上でまたお聞きすることがあると思いますが
そのときはまたよろしくお願いします。
ツイート | ![]() |