delphi4とoracle8i(体験版)でソフトを作ってるのですが、データベースからデータを抽出し、変数として使用したいのですが、その方法が分かりません。誰か助けて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

DelphiとOracleでしたら、oo4oをお勧めします。


体験版にoo4oがあるかどうかは解りませんが。

なければODBC等で。
DelphiのライブラリにODBC関連のクラスがあると思いますので
そのリファレンスを見れば簡単に出来るかと。
    • good
    • 0

 変数としてってのが分かりませんが....



 データの抽出には、BDEを利用してデータベースからデータの抽出は出来ます。
 また、ODBCを使用する事も出来ます。その時には、ODBC用のコンポーネントがあります(たしかシェアウェアですが)

この回答への補足

回答ありがとうございます。もう少し詳しく聞きたいのですが・・・・・
もう少し詳しく説明します。
変数として取り出すという事ですが、データベースからデータを取り出し表示する事は出来るのですが、データベースから取り出し変数に格納する方法を教えて下さい。

補足日時:2000/12/22 09:35
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qdelphiとデータベースについて(追加)

変数でという事が分からなかったみたいなので詳しく説明します。データベースで生年月日を20001220というように持っています。それをdelphi側で取り出し、2000/12/20というような感じでDBGridに表示したいという事です。
データベースから取り出す際に、delphi側で、自由に使用できたらと思っています。誰かお願いします。

Aベストアンサー

状況がよくわからないのでいくつか仮定の上で話します。
前提としてTQueryを使用している。
目的の項目は文字列型で、"20001231"のように年4桁月2桁日2桁の固定文字列である。
文字列型を日付型として取り出したい。
TQueryの名前はQuery1,目的の項目名をDATE
とすると。

変数宣言は
var Birthday:TDateTime;
s:string;
DBから変数への格納。
s:=Query1.FieldByName('DATE').AsString;
Birthday:=EncodeDate(StrtoInt(Copy(s,1,4)),StrtoInt(Copy(s,5,2)),StrtoInt(Copy(s,7,2)));

とゆう具合になります。

QDelphi BDE 複数ユーザによるデータベース共有ができない

環境は、WindowsXP Delphi3.0 BDE→PARADOXを使用

複数ユーザによるデータベースの共有ができなくて困っています。
エラーメッセージは「テーブルは使用中です。テーブル:\\○○○\○○\○○.DB ユーザー:○○○○○」とでます。

複数というのはPC2台を使用しての共有なのですが、どちらもBDEの設定をそろえております。いろいろなサイトを探し回ったのですが何分初心者なので解決策が見つかりません。
ちなみにデータベースはサーバー上に上げています。
複数でなければエラーもなくきちんと動作します。
お分かりになる方いらっしゃいましたらご教授よろしくお願いいたします。

Aベストアンサー

例えば、TTableでアクセスしていて、TTableのExclusiveプロパティがtrueになっていませんか?

排他的にオープンしているので、早い者勝ちです。後からアクセスした人は、テーブルを開けません。

前の人がテーブルを閉じるまで、他の人はテーブルを開くことができません。

QDelphiで扱うデータベース上の日付について

Delphiで扱うデータベース上の日付について
 質問させていただきます。何かしらのマナー違反等ありましたらご指摘願います。
 TDataBaseでデータベースにアクセスし、TQuery、TDatasourceでTDBEditにデータを表示させています。接続するテーブルには日付型のフィールドがありそれをTDBEditに表示させて、編集したのち更新する、もしくは行を挿入してから更新する場合、入力した値が正しく日付であるかどうかはどのようにチェックすればよろしいのでしょうか。
 フィールドにはMaskEditプロパティで2010/06/07とTDBEditに表示するよう設定してあります。

 文字列として保存したものをTDBEditに表示する際日付に変換して表示することも考えたのですが、データベース上で日付による絞り込みや並べ替えをするため、そちらは断念しました。

 まとまりのない文章で申し訳ありませんが、お教えいただければ幸いです。よろしくお願いします。

Aベストアンサー

回答が付かないようですが、質問が理解されていないためかもしれません。

TDataBaseは使用したことがないですが、TADO などでは日付でないデータ(ex. 2010/6/40)を入力するとレコードのアップデート時にエラーになります。
それともご質問の趣旨は、それ以前に「日付」だけを入力したときにチェックしたいと云うことでしょうか?
それならばTDBEditとは別に、TDateTimePicker を使用しては如何でしょうか。入力時に即チェックしてくれます。このTDateTimePickerの OnChenge イベントハンドラに、レコードの当該フィールドに代入するコードを書けばよろしいかと。

QDelphi データベースコンポーネント使用時におけるIDの自動生成に

Delphi データベースコンポーネント使用時におけるIDの自動生成について
 質問させていただきます。よろしくお願いします。現在DelphiでTQuery,TDatabase,TDataSourceを使用し、データベースに接続、DBGridでレコードを一覧表示し、DBEditとDBNavigatorでレコードの新規登録や編集が行えるようにしています。

 ここでIDというフィールドを作り、これを主キーとして扱っていますが、レコードの新規作成時、自動的に連番で数値が挿入されるようにするにはどうすればいいのでしょうか? 

 ひとつ方法を思い付き実際やってみて今のところうまくいってはいるのですが、私が採択した方法だと少々問題があります。

 exe起動時にレコードをソート、IDのフィールドで一番値の大きい数値を取得し、新規作成時にはその値に+1してDBEditに挿入するようにしています。しかしこれだと、いくらIDの値が小さいレコードを削除しても値の大きいレコードがある限り、新規作成時にIDとして挿入される値は大きくなるばかりなのです。

 稚拙な文章で申し訳ありませんが、お教えいただければと思います。
 よろしくお願いします。

Delphi データベースコンポーネント使用時におけるIDの自動生成について
 質問させていただきます。よろしくお願いします。現在DelphiでTQuery,TDatabase,TDataSourceを使用し、データベースに接続、DBGridでレコードを一覧表示し、DBEditとDBNavigatorでレコードの新規登録や編集が行えるようにしています。

 ここでIDというフィールドを作り、これを主キーとして扱っていますが、レコードの新規作成時、自動的に連番で数値が挿入されるようにするにはどうすればいいのでしょうか? 

 ひとつ方法を思い付...続きを読む

Aベストアンサー

>exe起動時にレコードをソート、IDのフィールドで一番値の大きい数値を取得し、新規作成時にはその値に+1してDBEditに挿入するようにしています。

普通はこの方法ですね。
そのために、IDの桁数を十分大きく設定しておきます。
例えば、毎日1000件くらいの新規登録があったとしても、IDの桁数を8桁にしておけば100年は大丈夫です。

それでも、空き番が多くなって使いづらくなってきたら、IDをリナンバリングすることもあります。


どうしても空き番を作りたくないのであれば、
レコードを削除したときに削除IDリストを作成しておき、新規作成時にはその削除IDを使用するという方法もあります。

Qdelphi 変数

サブフォームでメインフォームが使用している変数を使いたい時、なんと記述するんでしょうか?

Aベストアンサー

メインフォームにアクセサメソッドを追加しては。


人気Q&Aランキング

おすすめ情報