(現在 過去ログ26 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 親記事をトピックトップへ ]

このトピックに書きこむ

過去ログには書き込み不可

■4105 / inTopicNo.1)  Re[12]: 桐でのODBC接続について
  
□投稿者/ hidetake -(2008/11/27(Thu) 17:00:49)
    > 読み込みで対処しようと思います。

    読み込みでは大丈夫なのですかね?

    もし、今の不安定な機種のみの動作であれば
    設定をやり直して正常になれば書き出しでも
    うまくいくのかも?知れません。


引用返信 [メール受信/OFF] 削除キー/
■4104 / inTopicNo.2)  Re[11]: 桐でのODBC接続について
□投稿者/ 長門孝雄 -(2008/11/27(Thu) 14:23:00)
    No4103に返信(hidetakeさんの記事)
    > 2008/11/27(Thu) 11:12:00 編集(投稿者)
    >
    > これ以上の事は相手方のデータベースや ODBCドライバの種類や
    > バージョンによっても違う可能性もあるので、詳しくは長門さん
    > のところでログでも取って調べるしかないでしょうね。
    >
    ちょっと自分では手に負えませんので、予備機を稼動させて諸設定を追加し
    読み込みで対処しようと思います。
    いろいろとお付き合いくださりありがとうございました。
引用返信 [メール受信/OFF] 削除キー/
■4103 / inTopicNo.3)  Re[10]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 11:07:26)
    2008/11/27(Thu) 11:12:00 編集(投稿者)

    これ以上の事は相手方のデータベースや ODBCドライバの種類や
    バージョンによっても違う可能性もあるので、詳しくは長門さん
    のところでログでも取って調べるしかないでしょうね。

    自分が追加で調べた限り、PostgreSQL + 桐9-2009 では
    int型や numeric型は先の通りでして、real(float4)型 と
    timestamp型に対しては、同様に ' ' で括ってデータを投げかけ
    ますが、'15.5'::float4 や '2001-01-31 00:00:00'::timestamp
    のように型を明示的に指定して INSERT していました。

    これは桐が直接投げかけているというか ODBCドライバが補って
    いるのかわかりませんが・・・

    あと、Oracle がNUMBER型の項目に対してテキストリテラルの反応は
    http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/sql_elements.html#41977
    を見るかぎり Oracle のバージョンは違うけれど、
    NLS_NUMERIC_CHARACTERS をデフォルトのピリオド(.)から変更して
    いない限り特に問題は無いようにしか取れませんでした。


引用返信 [メール受信/OFF] 削除キー/
■4102 / inTopicNo.4)  Re[9]: 桐でのODBC接続について
□投稿者/ 通りすがり -(2008/11/27(Thu) 10:49:17)
    オラクルでは内部で実際に最下位のゼロも格納してるから、
    元々、MS製のオラクル用ODBC Driver はNUMBER(9,2)とかは SQL_C_CHAR で返してたので、(StripTrailingZero parameter も無かった)
    桐は忠実にそのまんまってことじゃねえの?

    最近のオラクル用ODBC Driver は変わったみたいだけど、桐は対応を変更してない為かと
引用返信 [メール受信/OFF] 削除キー/
■4099 / inTopicNo.5)  Re[9]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 07:40:24)
    2008/11/27(Thu) 08:41:39 編集(投稿者)

    > サーバ PostgreSQL 7.2.2 に
    > ODBC ドライバ 8.02.04.02 で
    > 桐から書き出し(追加)を行う場合の
    > ログを取ってみました。

    > テーブルは
    > CREATE TABLE "NUM1" (
    > NUM numeric(9,2));

    ついでに、書き出し(追加)では無く、上記テーブルにキー
    を追加して、桐の外部DBからの接続からも更新が出来るように
    して 15.5 の行を追加してみました。

    query='INSERT INTO "NUM1" ( "num") VALUES ('15.5')'

    と、VALUES ('15.5') で INSERT しています。

    PostgreSQL では、これでもこちらの期待通りに値が設定され
    ますが、もし、Oracle で
    query='INSERT INTO "NUM1" ( "num") VALUES (15.5)'

    query='INSERT INTO "NUM1" ( "num") VALUES ('15.5')'
    で、直接でも良いので SQL を投げかけて、Oracle では
    どのような挙動を示すのか!?

    もし、下の方の結果が 15 となるのだったら、桐 + Oracle
    では、この型の使用は困難になってくるのでしょうかね?
    Oracle の NUMBER型に対して、桐がこの事例のような挙動を
    するとして。

引用返信 [メール受信/OFF] 削除キー/
■4096 / inTopicNo.6)  Re[8]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/27(Thu) 03:06:45)
    > 今回の例だと、桐側が ORACLE 側の型を取り間違えて
    > 15.50 を 15 に切り捨てて INSERT したように思うの
    > ですが、それとは違うのでしょうか?
    > 桐側は 15.50 でデータを渡しているけど ORALE 側が
    > 切り捨てているのでしょうか?

    サーバ PostgreSQL 7.2.2 に
    ODBC ドライバ 8.02.04.02 で
    桐から書き出し(追加)を行う場合の
    ログを取ってみました。

    テーブルは
    CREATE TABLE "NUM1" (
    NUM numeric(9,2));

    CREATE TABLE "NUM2" (
    NUM numeric(9,0));

    CREATE TABLE "INT" (
    NUM int2);

    Oracle の NUMBER型は NUMBER(p,s)は
    PostgreSQL の場合の (ANSI SQL) の
    NUMERIC(p,s) なので NUMERIC型を代用。

    の3種類に桐の数値型項目(num)から
    15.5 の値を書き出してみたのです
    が、

    結局、桐側は

    query='insert into "NUM1" ("num") VALUES ( '15.5')'
    query='insert into "NUM2" ("num") VALUES ( '15.5')'
    query='insert into "INT" ("num") VALUES ( 15.5)'

    と、15.5 で INSERT かけてますね。
    結果の値は numeric(9,2) 以外は 16 に丸められますけど。

    しかし、ここで 15.5 も桐は INT型に関しては数値で
    投げかけているけど、NUMERIC型に関しては文字列で
    INSERT かけてしまっています。

    この時の Oracle の受け取り結果で 15 に丸められているの
    でしょうか?
    桐は何故に numeric型に対して '' で括ったデータを渡して
    いるのかな?


引用返信 [メール受信/OFF] 削除キー/
■4095 / inTopicNo.7)  Re[7]: 桐でのODBC接続について
□投稿者/ おたけ -(2008/11/27(Thu) 00:14:57)
    >>外部データーベースへの追加書き出しなんて、データ型揃わないのは当たり前ですよ。

    気になるので自分も実験的に試してみました
    試しに文字列型のvarchar()項目へ小数点が入っているデーターを更新させたらどうなりますか
    桐で言う数値型項目から外部接続でINT型への更新なり挿入を行っているのではないでしょうか?
    家で試してみたらオラクルじゃないけど、サーバーのDB側がint型のデーターだと桐が接続を試
    みれば勝手に長整数型にデーター型を読み込みました、小数点切り捨てられました
    また目的のDB項目がfloat型だと桐は実数型として読み込み小数点も問題なくDB側に上書き更新されました
    ですから、サーバー側のDBに対する項目ごとの型が問題になってるんじゃないでしょうか?
    はずしてたら、ごめんなさい。

引用返信 [メール受信/OFF] 削除キー/
■4093 / inTopicNo.8)  Re[7]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 19:11:14)
    >>ODBC の設定はレジストリの次のところにあります。
    >>[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]
    >>
    > 正常稼動するようになったら、読み込みで対処するつもりです。
    > ありがとうございました。
    >

    すみません。説明不足だったかも知れません。

    自分は、古い桐時代に ODBC の設定は「システムDSN」
    に設定しないと、桐の接続の場面にデータソース名が
    出てこないことがあって、それ以来、私自身は基本的に
    システムDSNに設定して使用していますが、現在において
    は、セキュリティ的にも、桐の説明にのっとっても
    「ユーザー DSN」に登録して使うのが、基本的になって
    いると思います。(桐のマニュアルでもそうなっています)

    従いまして、この場合のレジストリは

    [HKEY_CURRENT_USER\Software\ODBC]

    の方にあります。お使いのデータソースがシステムか
    ユーザかで、レジストリの位置は異なりますので、お使い
    の状況にあわせて、見比べてみてください。


引用返信 [メール受信/OFF] 削除キー/
■4092 / inTopicNo.9)  Re[6]: 桐でのODBC接続について
□投稿者/ 長門孝雄 -(2008/11/26(Wed) 18:43:29)
    No4075に返信(hidetakeさんの記事)

    > ODBC の設定はレジストリの次のところにあります。
    >
    > [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]
    >
    > ここおよび下位の情報を見れば設定内容は把握でき
    > ると思います。
    了解しました。今度実行してみます。
    正常稼動するようになったら、読み込みで対処するつもりです。
    ありがとうございました。


引用返信 [メール受信/OFF] 削除キー/
■4091 / inTopicNo.10)  Re[6]: 桐でのODBC接続について
□投稿者/ 長門孝雄 -(2008/11/26(Wed) 18:37:19)
    No4077に返信(うにんさんの記事)
    > 前に桐からPgsqlに追加書き出ししたら常に上書きになってたので、追加できる
    > 絞り込む必要性がわかりませんが、追加書き出しの代りなら読み込みで代替できるのでは?何で実用的でないんだろう。

    1ケ年以上の売上データなので、絞り込まないと読み込みに時間がかかり
    現在正常稼動していないので絞り込んで読み込みでも時間がかかります。

引用返信 [メール受信/OFF] 削除キー/
■4090 / inTopicNo.11)  Re[7]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 13:47:16)
    > 桐の精度は15桁ぐらいしかないから無理なのでは?
    > と思ったけど、PgsqlでNumeric(9,2)で外部表を編集するとちゃんと7桁+2桁になった。
    > 整数部が大きすぎると入力時にエラーになるが、少数部が多くてもそのまま入って
    > 「結合表の再抽出」しないと実際にはいってる値にならないのはちょっといまいち。
    >
    > OracleはNUMBER(9.2)が実際に小数点になってるからってことはないですよね?
    >

    PostgreSQL + 桐では、特に問題なく使えるようですね。

    てか、自分のやつでも NUMBER(9.2) では無いけど
    NUMBER(5.2) では使っているところがあります。
    書き出しも小数点が切られることも無いようですね。


引用返信 [メール受信/OFF] 削除キー/
■4089 / inTopicNo.12)  Re[9]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 13:18:07)
    >>なお、全て大文字で解決かというとそうでもなく、
    > げんなり。
    > まあ、最初に表を作る時以外は書き出ししないようにしてるんですけど。

    たとえば、全て大文字で設定したテーブルを
    桐の「外部DB」で設定するとして、定義画面で
    表示項目に、うえ出ているテーブルの「(すべて)」
    をドラッグして定義してみてください。
    実際に開く場合にはどうなるか?

    全ての項目を表示させたい場合でも「(すべて)」
    では無く、実際の項目欄を全選択して表示項目に
    ドラッグして定義した場合と開き方を変えてみて
    ください。

    まぁ〜、この問題は「(すべて)」を使わないよう
    にすれば良いのは良いのですけど・・・

    ほかに何かあったかな? だいぶ前にいろいろ
    調べて kthree には報告して理解はしてもらった
    けど、いつになったら改善してもらえるのだろう
    か? orz



引用返信 [メール受信/OFF] 削除キー/
■4087 / inTopicNo.13)  Re[6]: 桐でのODBC接続について
□投稿者/ うにん -(2008/11/26(Wed) 13:13:42)
    No4077に返信(うにんさんの記事)
    >>それはORACLEの数値項目NUMBER(9.2)に桐から追加書き出しをしたとき、円未満が
    >>例えば桐の数値項目15.50のところが15.00になってしまうことです。

    桐の精度は15桁ぐらいしかないから無理なのでは?
    と思ったけど、PgsqlでNumeric(9,2)で外部表を編集するとちゃんと7桁+2桁になった。
    整数部が大きすぎると入力時にエラーになるが、少数部が多くてもそのまま入って
    「結合表の再抽出」しないと実際にはいってる値にならないのはちょっといまいち。

    OracleはNUMBER(9.2)が実際に小数点になってるからってことはないですよね?

引用返信 [メール受信/OFF] 削除キー/
■4085 / inTopicNo.14)  Re[8]: 桐でのODBC接続について
□投稿者/ うにん -(2008/11/26(Wed) 13:05:00)

    > ですので、全て大文字のテーブル名、あるいは、
    > 大文字・小文字を使わない漢字のテーブル名、を使う
    > と上書きできる場合もあります。

    なるほど、TEST3で書き出したら追加できました。

    > なお、全て大文字で解決かというとそうでもなく、

    げんなり。
    まあ、最初に表を作る時以外は書き出ししないようにしてるんですけど。
引用返信 [メール受信/OFF] 削除キー/
■4084 / inTopicNo.15)  Re[7]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 12:56:57)
    2008/11/26(Wed) 12:58:39 編集(投稿者)
    2008/11/26(Wed) 12:57:47 編集(投稿者)

    >>前に桐からPgsqlに追加書き出ししたら常に上書きになってたので、追加できる
    >>ようになったのかと最新版でやってみたらやっぱり上書きになった。
    >>文字列項目の長さを書き出すデータの長さにするので追加できないのかな〜と
    >>思ってましたが、同じデータを2回書き出しても上書きされるし。
    >
    > 残念だけれど出来ませんね。原因は桐側のファイル名の取り
    > 扱いの関係だったと思います。

    正確に言うと完全に出来ないわけではありません。

    ようは、桐がテーブルの存在を確認するときと
    実際に書き出そうとする際のファイル名に取り扱い
    で、大文字・小文字を勝手に入れ替えて、使用する
    部分があるようです。
    なので、実際にはあるテーブルなのに無いテーブル
    の時の動作となり上書きしてしまうようです。

    ですので、全て大文字のテーブル名、あるいは、
    大文字・小文字を使わない漢字のテーブル名、を使う
    と上書きできる場合もあります。

    なお、全て大文字で解決かというとそうでもなく、
    他のところで " " で括った取り扱いをしていたり、
    桐内部のファイル名の取り扱いが、場面場面でめちゃ
    くちゃになっていて、こちらを立てればあちらが・・・
    と、いろいろ出て来ると思います。

    Access や SQL Server に対しては、直接テーブル
    名を使わずにエリアスを多用するようで、影響が
    出にくいようです。


引用返信 [メール受信/OFF] 削除キー/
■4081 / inTopicNo.16)  Re[6]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 12:12:31)
    > 前に桐からPgsqlに追加書き出ししたら常に上書きになってたので、追加できる
    > ようになったのかと最新版でやってみたらやっぱり上書きになった。
    > 文字列項目の長さを書き出すデータの長さにするので追加できないのかな〜と
    > 思ってましたが、同じデータを2回書き出しても上書きされるし。

    残念だけれど出来ませんね。原因は桐側のファイル名の取り
    扱いの関係だったと思います。
    この書き出す際も、桐側の状態によって、PostgreSQL 側に
    キーが出来たり出来なかったり・・・ 気を使います。 (;_;)

    これら件については kthree にも知らせてあり、問題点は
    認識してもらったけど、今のバージョンでは無理でしょう。


引用返信 [メール受信/OFF] 削除キー/
■4080 / inTopicNo.17)  Re[6]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 12:06:39)
    > 外部データーベースへの追加書き出しなんて、データ型揃わないのは当たり前ですよ。

    どういう事なのでしょうか? 詳しく教えてください。

    今回の例だと、桐側が ORACLE 側の型を取り間違えて
    15.50 を 15 に切り捨てて INSERT したように思うの
    ですが、それとは違うのでしょうか?
    桐側は 15.50 でデータを渡しているけど ORALE 側が
    切り捨てているのでしょうか?


引用返信 [メール受信/OFF] 削除キー/
■4079 / inTopicNo.18)  Re[5]: 桐でのODBC接続について
□投稿者/ 桐々舞 -(2008/11/26(Wed) 11:40:35)
    外部データーベースへの追加書き出しなんて、データ型揃わないのは当たり前ですよ。
    もともと桐から外部データーベースへ書き出したテーブルへの追加書き出しなら、まだしも。
    オラクル側でマージしてくださいな。
引用返信 [メール受信/OFF] 削除キー/
■4077 / inTopicNo.19)  Re[5]: 桐でのODBC接続について
□投稿者/ うにん -(2008/11/26(Wed) 11:30:40)
    > それはORACLEの数値項目NUMBER(9.2)に桐から追加書き出しをしたとき、円未満が
    > 例えば桐の数値項目15.50のところが15.00になってしまうことです。

    前に桐からPgsqlに追加書き出ししたら常に上書きになってたので、追加できる
    ようになったのかと最新版でやってみたらやっぱり上書きになった。
    文字列項目の長さを書き出すデータの長さにするので追加できないのかな〜と
    思ってましたが、同じデータを2回書き出しても上書きされるし。

    > ORACLEから読み込めば正常に表示されます。K3に問い合わせたところ、ORACLEで値のない項目で絞込み、桐のデータを読み込むようにしたらよいときいたのですが、
    > 現状では実用的ではありません。

    絞り込む必要性がわかりませんが、追加書き出しの代りなら読み込みで代替できるのでは?何で実用的でないんだろう。

引用返信 [メール受信/OFF] 削除キー/
■4075 / inTopicNo.20)  Re[5]: 桐でのODBC接続について
□投稿者/ hidetake -(2008/11/26(Wed) 10:32:20)
    > 今日出社して予備機をリカバリーしORACLE 9iをインストールしたところ
    > 問題は解消しました。
    > しかし、どこがクライアント機とちがうのか私の能力ではどのように調べるのか
    > わかりません。レジストリあたりだとどのようにするのでしょうか。

    ODBC の設定はレジストリの次のところにあります。

    [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]

    ここおよび下位の情報を見れば設定内容は把握でき
    ると思います。
    もちろん、ドライバのファイルなどは、確実に存在
    する必要がありますが、ここを見比べたりすれば
    ドライバや関連するファイルのバージョンとか一緒
    であれば基本的には同じ動作をするはずなのですが、
    ODBC 以外の設定が異なってれば(ファイヤーウォール
    とか)もちろん動作は変わってくるとも思います。

    自分の場合、PodtgreSQL の設定をいちいち GUI で
    し直すのは面倒なのでレジストリのバックアップを
    とっておき、最低限必要な箇所のみ残し編集して
    レジストリを読み込ませることにより、設定を移す
    ことがほとんどです。
    なお、レジストリの編集の際は間違えばシステムを
    壊すことにもなりかねないので十分に注意なり、
    バックアップを取ってから行ってください。


    > 桐のODBC接続は他にも困ったことがあります。この問題が解決すれば対処できると
    > おもうのですが。
    > それはORACLEの数値項目NUMBER(9.2)に桐から追加書き出しをしたとき、円未満が
    > 例えば桐の数値項目15.50のところが15.00になってしまうことです。
    > ORACLEから読み込めば正常に表示されます。K3に問い合わせたところ、ORACLEで値のない項目で絞込み、桐のデータを読み込むようにしたらよいときいたのですが、
    > 現状では実用的ではありません。

    桐の外部DBはいろいろあって問題部分も多いけど
    メジャーなデータベースに関しては、それなりに
    テストは行っているのだろうと思っていましたが
    ORACLE でもおかしいところはやはりあるのですね。
    この場合だと型を正しく扱えていないようですね。

    この辺は桐の問題なのか ODBC のドライバの問題
    なのか、いろいろあるのでしょうが、桐はバー
    ジョンがあがらない限り、この手の問題は解決され
    ないでしょうから、ドライバのバージョンを変えて
    チェックしてみるとか、それでもダメなら書き出し
    に問題があるのだとしたら、書き出し以外の方法で
    やるとか工夫して仕組みを変えないと解決できない
    のでは無いでしょうかね?


引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -