トップページ⇒tech
22コメント8KB

OracleとVBをoo4oでつなげた時

■ このスレッドは過去ログ倉庫に格納されています
0001みいなNGNG
こんにちは、1つ聞きたいことがあります。
私はOracleとVBをoo4oでつなげているのですが、
(なのでもちろん、OracleのDBにアクセスするための
ログイン画面などもつくっています。)
VB6を起動させて、その中で「実行」をする分には問題ない
のですが、なぜかEXEファイルを作ってコンパイラにて
処理をさせようとすると、「DBのその列は見つからない」って
エラーが生じます。EXEファイルだとうまくDBにアクセス
できてないってことだと思いますが、なんか
対処方法ってありますか?

それとも、そのログインのプログラムを貼り付けたほうが
いいですかね?
一応、ただSelectを行う簡単なプログラムでもその症状が
でたので、もし知ってる方は教えてください。
0002デフォルトの名無しさんNGNG
他のマシンでも試して味噌
0003みいなNGNG
ありがとうございます。
ほかのマシンでも一緒でした。
というか、ただのセレクト文だと大丈夫みたいですが、
以下のようにプログラムを書くと、項目名を持ってこれなくなる
みたいです。(「顧客ID」はみつかりませんとのエラーがでます。)

Private Sub テストsql_Crick()
Dim strSQL Aa string
Dim objKubun As object

strSQL = In_data.Text
Set objKubun = OraDatabase.DbCreateDynaset(strSQL, 0&)
Out_data = (objKubun("MAX(顧客ID)"))
Exit Sub

ってなってます。
画面上では
SELECT MAX(顧客ID)FROM 顧客DB で検索をかける単純なプログラムです。

テーブルの構造としては、顧客DBと製品DBの2つのテーブルが、
顧客IDという項目名をキーにしてつながっているといった状態です。

すみません、説明がへたくそで。
0004デフォルトの名無しさんNGNG
>Out_data = (objKubun("MAX(顧客ID)"))
ネタ決定
0005デフォルトの名無しさんNGNG
関係あるかどうかは不明だが1つ。
最近のOracle(とそれに接続するライブラリなどなど)は、
日本語テーブル名を問題なく処理できるようになったのか?
去年(藁)くらいまでは鬼門だという話になっていたはずだが…
0006デフォルトの名無しさんNGNG
>>5
そうじゃなくて
>SELECT MAX(顧客ID)FROM 顧客DB
カラム名は"MAX(顧客ID)"じゃねーだろって事。
oo4oも関係ないし単発スレ立てるのやめれ
0007デフォルトの名無しさんNGNG
すごい、こんなのできるの↓
Out_data = (objKubun("MAX(顧客ID)"))

if objKubun.EOF = False then
out_data=objKubun.Fields("MAX(顧客ID)").value
end if
とかじゃないの?普通。
0008デフォルトの名無しさんNGNG
&&&&レベルの地盤沈下注意報発令&&&&
0009デフォルトの名無しさんNGNG
暑くておかしな人が増えてるみたい
0010デフォルトの名無しさんNGNG
>>1は、どこからサンプル引っ張ってきたんだ。
ありえないよ。まったく。
0011デフォルトの名無しさんNGNG
>>1
ホントは各ソフトのバージョンを書いて欲しかったんだけどね。

>SELECT MAX(顧客ID)FROM 顧客DB で検索をかける単純なプログラムです。
SELECT MAX("顧客ID")FROM "顧客DB"
というSQLにしないと通らないかも。

でも、一番確実なのは、マルチバイト文字をカラム名やオブジェクト名に使わないってことなんだが。
パッチがあるかはわからない(知ってても書けないんだけど)から、正規サポートに聞いてくれ。
0012デフォルトの名無しさんNGNG
>すごい、こんなのできるの↓

できるよ。
dynaset.Fields("hoge").Valueよりちょっと速いんじゃなかったかな。
VBMLだったかPCDNだったかで実験した人がいた。
0013デフォルトの名無しさんNGNG
out_data=objKubun.Fields(0).value
の方がよいかな。
0014デフォルトの名無しさんNGNG
>>12
しらなかった。すげー
だとすると、>>1のソースは基本はなってないのに
高度なテクニックがまじってるんだ。
0015デフォルトの名無しさんNGNG
>>14
だけど複数回参照する時は最初にfieldオブジェクトに代入してから
参照するのが一番速い。
0016デフォルトの名無しさんNGNG
>>15
まじっすか。さらにすげー
勉強になります。
いったい、最高速の出るソースというのはどんな感じになるのかな。
サンプルとかあったら欲しいなー
0017デフォルトの名無しさんNGNG
>>16
このスレッドたどってくれい
http://dev.sfdata.ne.jp/VB/htdocs/msg04548.html
0018デフォルトの名無しさんNGNG
>>17
さんきゅーさー
よくわかったっす。
0019デフォルトの名無しさんNGNG
>>1はどうなったんだろう。
0020みいなNGNG
みなさん、ありがとうございます。

いろいろ頂いた結果から1つのことが分かりました。
それは、「EXE形式にして動かすと、項目が文字化けして”列名がない”」
って言われるからです・・・・

やっぱり項目は日本語にすべきではなかったんでしょうか?
それとも、なにかその文字化けを治す方法ってあるんでしょうか?

使っているソフトですが、VB6のEnterpriseと、Oracle8iを使用しています。

項目名を作り直すとしたら、今までのデータ、全部消さないといけないですよね・・・・
0021デフォルトの名無しさんNGNG
>>13みたいに数値で指定してもだめ?
0022デフォルトの名無しさんNGNG
オレだったら>>21のやり方でやるけど、ちょっとネタを提供って事で
スキーマが全く同じだけど、列名が1バイトのVIEWを作って参照
してみれば?
■ このスレッドは過去ログ倉庫に格納されています