Oracle接続について

解決


yasu  2004-04-28 01:33:51  No: 8731

またまたお世話になります。

すみませんが教えてください。
現在のBDE経由でOracleデータベースにデータを取りに
行っているのですが、これをoo4oにて行いたいのです
が、まず環境設定自体わからない状態です。

たぶんパッケージにインストールすればよいのかと思って
いますがどなたかご教授願います。


初心者999  2004-04-28 01:45:47  No: 8732

http://www.wwlnk.com/boheme/delphi/tips/tec1000.htm
を参考にしてはいかがでしょうか?

そのほかにもネットで検索すると、HITすると思います。


にしの  2004-04-28 01:45:56  No: 8733

oo4oでしたら、CreateOleObjectして使うのが手っ取り早いと思います。
ActiveXの取込ができたかどうかはわかりません。

http://www.wwlnk.com/boheme/delphi/tips/tec1000.htm
こちらが参考になるかと思います。


yasu  2004-04-28 04:03:20  No: 8734

初心者999さん、にしのさんありがとうございます。

oo4oでの動作確認ができました。

そこでまた質問なんですが今度は実際にBDEで動いているプログラムに
対してoo4oでやってみたいと思っているのですがBDEが動作できない
環境にするには[プロジェクト]、[プロパティ]、[パッケージ]の
Borland BDE DB Componentsのチェックを外せばよろいいのでしょうか?


yasu  2004-04-28 20:36:53  No: 8735

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;


初心者999  2004-04-29 21:26:46  No: 8736

参考先の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;
などとします。(上記コードは未確認)


yasu  2004-05-01 01:30:31  No: 8737

いろいろありがとうございます。

フィールド内容の取得はできたので複数フィールドの取得を
しようとしたのですが2件目までは表示できたのですが、どうやら
項目にNull等があると「バリアントの型変換が不正です」の
メッセージがでて、Null以外のものだけで表示させようとしたら
「モジュール'Vcl50.bpl'のアドレス4001B0AFでアドレス00000000に
対する読込違反がおきました」とメッセージがでます。

Nullが入っいた場合、読込違反の場合でどのような対処をすれば
よろしいのでしょうか?


HOta  2004-05-01 05:12:14  No: 8738

if Fields[i].isnull then
  {NULLの場合の処理}
else
  {NULL以外の処理};
でいけませんか?


HOta  2004-05-04 17:56:34  No: 8739

SELECT側(Oracle側)でNVL関数を使えば気にせずに使えます。

また、取り出すときにAsStringなどで取り出せばOKだと思います。


yasu  2004-05-06 21:08:13  No: 8740

みなさんありがとうございます。

うまくいくことができました。

ひとまずこれでOracleからのデータ取得、追加、更新、
削除全てできました。

また、いろいろ質問することがありますがよろしくお願い
します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加