Delphi7proを使って、Accessにあるテーブルの内容をDBMemo
などに表示して、自己学習ソフトを作りたいのですが、ネット
でいろいろ調べた結果やり方がよく分かりません。どなたか
ご教授ください。また、他にもっと良いやり方を知っていらっ
しゃる方はお教えください。
http://www.borland.co.jp/delphi/papers/ado/ado01.html
ここが参考になりませんか?
SQLサーバー、Excelの例がありますが、Accessファイルでも同様です。
お役に立てれば幸いです。
> Delphi7proを使って、Accessにあるテーブルの内容をDBMemo
> などに表示して、自己学習ソフトを作りたいのですが、ネット
AccessMDBにアクセスする方法でしょうか?
それでしたらTADOConnectionを使用すればアクセスできますよ
TADOConnectionがPro版にあったかどうかは、少し不安ですが・・
蛇足かもしれませんが
MDBへTADOConnectionを使用して接続するには
DB1:TADOConnection;//←フォームにコントロールを貼り付けていると仮定
コネクション文字列を下記のように
してするか、ODBCにて登録した名前を使って
MDBへアクセスします
DB1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\hoge.mdb;Persist Security Info=False';
DB1.Open
DB1.CLose
> ご教授ください。また、他にもっと良いやり方を知っていらっ
> しゃる方はお教えください。
もっと良いやり方というのは、
データベースへのアクセス方法でしょうか?
それとも 作成する自己学習ソフトについてでしょうか?
このあたり、もう少し言葉を足していただけないですか?
おっと、@っし−さんがレス済みでしたね
失礼しました
紹介したBorlandサイトはDelphi5を使った場合の情報です。
ふじっこさんの情報のほうが親切ですね。 (^^ゞ
Delphi7ProにはADO関連のコンポーネントが標準で装備されています。(D6からだっけかな?)
ただ、Delphi7ProのヘルプはADO関連のリンク情報が欠落していて、情報不足なんです。D7用のパッチが公開されていますが、ADO関連のヘルプが修正されているのかわかりません。パッチの信頼度が低いと判断していますので、当方はパッチを当てていません。
お役に立てれば幸いです。
ありがとうございます。
大変恐縮ですが、テーブルの内容をMemoに表示するまでの過程を具体的に教えていただけないでしょうか。なにぶん初心者なもので、すみません。
もっと良いやり方というのは、作成する自己学習ソフトの作り方についてです。もっと良い方法をご存知ならお教え下さい。
http://www.borland.co.jp/delphi/papers/ado/ado01.html
上記URLでは、MS SQL ServerとExcelファイルでの接続例がありますが、MDBファイルを接続したい場合は、TADOConnectionのOLE DB プロバイダにMicrosoft Jet 4.0 OLE DB Providerを選択し、アクセスのファイル(MDBファイル)を選択して、接続テストが成功すれば、接続自体はできています。
また、TDBGridでのデータ表示例が掲載されていますが、さらにTDBMemoを貼り付けて、DataSourceとDataFieldプロパティを設定すると、TDBMemoにデータが表示されます。
TDBNavigatorも貼り付けると、フィールドの移動・追加・削除等の作業が出来るようになりますので、DBの勉強には良いかもしれません。
お役に立てれば幸いです。
>もっと良いやり方というのは、作成する自己学習ソフトの作り方についてです。もっと良い方法をご存知ならお教え下さい。
これについては、
1.まず、どのような自己学習ソフトを作成したいか?
につきると思います。
りょうさんが、思い描いている内容をまず、まとめられたのでしょうか?
市販されている自己学習ソフトを実際手に取り
インタフェイスなどや、最終的に学習させたい内容について
まとめなければ、ただ漠然と自己学習ソフトの良い作成方法について
意見を求めても答えは帰ってきません。
ソフト作成について、ベストな方法というのは
仕様作成段階で決まります。
どんな自己学習ソフトを作成したいのかを
くどいようですが、
何をどのようにして自己学習ソフトを作成するか
りょうさんご自身で整理してください。
でも、ここでりょうさんが考えまとめられた自己学習ソフトの
内容を公開するのではなく
作成したい自己学習ソフトをDelphiで実現させるために
Delphi上で不明な点について質問されると良いと思います。
いろいろと教えていただきありがとうございます。
@っしーさんに教えていただいたようにしたところ、表示することができました。
そこでさらに質問ですが、DBNavigatorを使わずに、ボタンを押すと次の表示に切り替わるようにするにはどうしたらよいですか?
また、実行すると
EVariantTypeCastErrorクラスの例外を生成しました。
'Null型からString型へのバリアント型変換はできません'
という表示が出て停止してしまいます。exeファイルから実行すると問題なく実行できるのですが....
お手数ですがよろしくお願いします。
ADOQuery1.Next;
で次のレコードに進みます。
EOFエラーが出る可能性があります。
型変換のエラーはソースもなく分かりません。
>DBNavigatorを使わずに、ボタンを押すと次の表示に切り替わるようにするにはどうしたらよいですか?
DBNavigatorを沢山貼り付けて、個々のDBNavigatorの表示形式を変えてやるのはダメですか? (なんか日本語変ですが理解できます???)
次のレコードに移動するだけでしたら、Next表示用のオプションのみをTrueにするだけではダメですかね?
※手元にDelphiがないので適当に書かせていただいています。m(__)m
> EVariantTypeCastErrorクラスの例外を生成しました。
> 'Null型からString型へのバリアント型変換はできません'
型変換エラーについてですが
現在DBNavigatorを使っているとして
DBからどのようにデータを参照されているか
不明ですが
参照されている列もしくはデータにNULLが格納されてませんか?
NULLとNULL文字列では扱いが異なります
ありがとうございます。次の表示に切り替える作業はうまくいくようになりました。さらに質問ですが、ランダムにレコードを選んでそれを表示するには、どうしたら良いでしょうか?今のところADOQueryは使っていません。使った方が良いでしょうか?
型変換のエラーについてですが、@っしーさんに教えていただいたページの通りに作業していっただけなので、ソースは何も記述していません。どなたかご存知の方は教えてください。
ふじっこさん、すみません。NULLが格納されているというのはどういうう状態を言うのでしょうか?
データの参照については、@っしーさんに教えていただいたページの通りです。
>NULLが格納されているというのはどういうう状態を言うのでしょうか?
MDB内で作成するテーブルで
MASTER_Aというテーブルに
列名 型 長さ 0の長さを持つ文字列を許可 NULLの許可
CD_MST 文字列 10 する する
NAME_MST 文字列 120 する する
とある場合
instert into MASTER_A(CD_MST, NAMEMST)
values('10', NULL)と
挿入できます
このNULLは、文字列の長さ0バイトの文字列('')とは
ことなる点です
文字列型の列にNULLが格納されている場合
文字列ではないとされることがあります
対処としては、DbNavigateを使用しないで
1項目ずつNULLかどうか調べNULLなら文字列長0バイトの’’を
セットするか
DBのデータでNULLなっているデータを修正するかの
どちらかです。
Dataset.FIeldByName('項目名').isnull
で検査できます。
>ランダムにレコードを選んでそれを表示するには、どうしたら良いでしょうか?
どういう意味か理解できないのですが、Tableを使っているのでしたら、Filterプロパティに設定するのではないですか?
Queryでしたら、Where句ですね。
ちなみに、なにかDelphiでDB関連の書籍をお持ちでしょうか? >りょうさん
Web上で一から理解するには限界があると思いますよ。
@っしー
必要な条件でレコードから検索するのなら、QueryのSQL文を使った方が、
後々便利だと思います。
もし、Tableでやっているなら、その部分をQueryに変更して、
SQL文を設定すれば同様に使えます。
皆さん、ご親切に教えていただきありがとうございました。
おかげさまで、なんとか作れそうです。本当にありがとうございました。
また分からないことがあったら、質問させていただきます。
ツイート | ![]() |