またまたお世話になります。
すみませんが教えてください。
現在のBDE経由でOracleデータベースにデータを取りに
行っているのですが、これをoo4oにて行いたいのです
が、まず環境設定自体わからない状態です。
たぶんパッケージにインストールすればよいのかと思って
いますがどなたかご教授願います。
http://www.wwlnk.com/boheme/delphi/tips/tec1000.htm
を参考にしてはいかがでしょうか?
そのほかにもネットで検索すると、HITすると思います。
oo4oでしたら、CreateOleObjectして使うのが手っ取り早いと思います。
ActiveXの取込ができたかどうかはわかりません。
http://www.wwlnk.com/boheme/delphi/tips/tec1000.htm
こちらが参考になるかと思います。
初心者999さん、にしのさんありがとうございます。
oo4oでの動作確認ができました。
そこでまた質問なんですが今度は実際にBDEで動いているプログラムに
対してoo4oでやってみたいと思っているのですがBDEが動作できない
環境にするには[プロジェクト]、[プロパティ]、[パッケージ]の
Borland BDE DB Componentsのチェックを外せばよろいいのでしょうか?
oo4oで件数は取得できました。
ただこの情報をlistBOX等にデータとして表示させたいのですが
この後はどのようにすればよろしいのでしょうか?
いろいろ調べてはいるのですがありませんでした。
素人で申し訳ございませんがお願いします。
こんな感じで件数は取得できました。
begin
objOraSession := CreateOleObject('OracleInProcServer.XOraSession');
objOraDatabase := objOraSession.OpenDatabase['ServerName','ID/PassWord', 0];
・・・sql文
objOraDynaset := objOraDatabase.dbCreateDynaset[sSql, 0];
{レコード件数}
Label1.Caption := IntToStr(objOraDynaset.RecordCount);
end;
参考先のURLに下のサンプル個所がありますので、よく見てみましょう。
while not objOraDynaset.EOF do begin
{フィールド内容}
ListBox1.Items.Add(objOraDynaset.Fields['FIELD'].Value);
objOraDynaset.MoveNext;
end;
フィールドが複数ある場合は、
FieldCount := objOraDynaset.Fields.Count; //フィールド数を取得
while not objOraDynaset.EOF do begin
for i := 0 to FieldCount do begin
ListBox1.Items.Add(objOraDynaset.Fields[i].Value);
end;
objOraDynaset.MoveNext;
end;
などとします。(上記コードは未確認)
いろいろありがとうございます。
フィールド内容の取得はできたので複数フィールドの取得を
しようとしたのですが2件目までは表示できたのですが、どうやら
項目にNull等があると「バリアントの型変換が不正です」の
メッセージがでて、Null以外のものだけで表示させようとしたら
「モジュール'Vcl50.bpl'のアドレス4001B0AFでアドレス00000000に
対する読込違反がおきました」とメッセージがでます。
Nullが入っいた場合、読込違反の場合でどのような対処をすれば
よろしいのでしょうか?
if Fields[i].isnull then
{NULLの場合の処理}
else
{NULL以外の処理};
でいけませんか?
SELECT側(Oracle側)でNVL関数を使えば気にせずに使えます。
また、取り出すときにAsStringなどで取り出せばOKだと思います。
みなさんありがとうございます。
うまくいくことができました。
ひとまずこれでOracleからのデータ取得、追加、更新、
削除全てできました。
また、いろいろ質問することがありますがよろしくお願い
します。
ツイート | ![]() |