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

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

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

このトピックに書きこむ

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

■5480 / inTopicNo.1)  Re[18]: 外部dbでのambiguousエラーへの対処
  
□投稿者/ hidetake -(2009/12/21(Mon) 08:45:48)
    > >>別名の A1 A2 A3 ・・・ は定義時の順番で固定であるのは
    >>ちなみにコレって、MySQLだと A1 A2 A3 のようですけど
    >>postgleでも同じなのでしょうか?
    >
    > 昔から一緒ですよ。
    >

    あと、これも前にどこかに書いたと思うけど
    .XVW の内部には、この基本となる SQL文が
    含まれています。

    たとえば、桐のサンプルに付いている

    VIEW-1.XVW だと

    SELECT
    1.[ID] AS [ID],
    1.[売上日] AS [売上日],
    3.[No] AS [支店No],
    3.[支店名] AS [支店名],
    1.[担当者No] AS [担当者No],
    2.[氏名] AS [担当者],
    1.[売上額] AS [売上額]
    FROM
    "売上日報" AS 1
    INNER JOIN "社員" AS 2 ON 1.[担当者No]=2.[No]
    INNER JOIN "支店" AS 3 ON 2.[支店No]=3.[No]
    ORDER BY
    [売上日] COLLATE CODE ASC,
    [支店No] COLLATE CODE ASC,
    [担当者No] COLLATE CODE ASC


    VIEW-2.XVW だと

    SELECT
    1.[売上日] AS [売上日],
    1.[支店名] AS [支店名],
    1.[担当者] AS [担当者],
    1.[売上額] AS [売上額]
    FROM
    "売上一覧" AS 1
    WHERE
    (#DSQL(
    "`売上日` in(SELECT `売上日報`.`売上日` FROM `売上日報` GROUP BY `売上日報`.`売上日`
    HAVING (((Sum(`売上日報`.`売上額`))>=3000000)))"
    ))
    )

    と言うように書かれています。
    なので、ログまで見なくとも、XVW 内部を見れば、一応
    推測することは可能です。


引用返信 [メール受信/OFF] 削除キー/
■5478 / inTopicNo.2)  Re[18]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/20(Sun) 15:15:10)
    > # K3さんへご連絡お願いできますか

    もし kthree さまにお願いするとすれば、別名を使うか使わないかは
    桐が SQLGetInfo で SQL_COLUMN_ALIAS をチェックし、別名が可能なら
    ば、桐は積極的に別名を使う方向にある。でも、別名が使えない相手に
    対しては別名なしで SQL文を組み立て投げかけることは可能(実際に
    やっていること)なので、「桐の環境設定」で別名を使うか使わないか
    の指定が出来るようにしてもらう方法では無いのでしょうか?

    ただし現実問題としては、kthree さまは 外部DB で問題を抱えている
    と言う認識は持ちながら、もう何年間も放置し、一向に手はつけてい
    ません。折角、別名を使わないように出来ても、そちらの問題を解決
    しないことには(テーブル名の大文字・小文字問題ほか)、逆に別名を
    使わないことより、別の問題で苦しむ結果になると思われます。

    結局は、桐の外部DB自体を根本的に大きく手直しをしていただかないと
    これ以上に使いやすくはならないと思います。


引用返信 [メール受信/OFF] 削除キー/
■5477 / inTopicNo.3)  Re[17]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/20(Sun) 11:31:27)
    2009/12/20(Sun) 12:28:11 編集(投稿者)

    >>別名の A1 A2 A3 ・・・ は定義時の順番で固定であるのは
    > ちなみにコレって、MySQLだと A1 A2 A3 のようですけど
    > postgleでも同じなのでしょうか?

    昔から一緒ですよ。

    A1 A2 A3 ・・・ は A B C ・・・ の A では無く
    ALIAS の 1番目 2番目 3番目の A1 A2 A3 だと
    思うのですが、根拠はわかりませんが、結構多くの
    ところでも見かけます。

    ちなみに、この「 A 」は、桐でつけている別名で
    KIRIIF.DLL のアドレス 0018:541C に書いてある
    文字によるようです。ここを B に書き換えると
    B1 B2 に変わりました。

    それと、A1 A2 の付く順番はテーブルを追加した
    順番に依存するようです。なので理解していれば・・・


    # Access の場合はクエリビルダで作るし、SQL文
    # を一応、直接確認できるようになっているので、
    # あえて別名は使われない。(変換したりしない)
    # それに SQLGetInfoで SQL_COLUMN_ALIAS も確認
    # もしていないみたい。
    # なので、Access の場合は自分で別名を積極的に
    # 使わない限り、別名を使うことはないようです。

引用返信 [メール受信/OFF] 削除キー/
■5476 / inTopicNo.4)  Re[16]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/20(Sun) 11:23:23)
    今回の件はサブ側の項目名を変更しようと思っています
    色々な場面で denpyo_id を指定する状況は出てくる
    と思うので毎回意識しておかないといけないのもイヤなので

    ただ、項目名の重複は当然あるので
    (各マスタでの[名称]とか)
    そういう場合に今回の方法で対処したいと思います

    > 別名の A1 A2 A3 ・・・ は定義時の順番で固定であるのは
    ちなみにコレって、MySQLだと A1 A2 A3 のようですけど
    postgleでも同じなのでしょうか?

引用返信 [メール受信/OFF] 削除キー/
■5475 / inTopicNo.5)  Re[18]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/20(Sun) 10:45:43)
    2009/12/20(Sun) 13:26:05 編集(投稿者)

    > 従ってテーブル名の大文字・小文字問題は発生しにくく
    > なったと思いますが、今回の問題の影響は受けるように
    > なりました。

    PostgreSQL に関して言えば、新しくなったドライバにより
    結合時の SELECT による大文字・小文字不具合は出にくく
    なったのだろうけど、外部DB書き出しの際は別名を使うわけ
    でなく関係なかった。桐は小文字で指定しても大文字で書き
    出そうとします。書き出し「追加」の場合
    (処理の途中までは小文字で、実際のINSERT時には大文字)

    なので、前よりも問題は面倒?複雑?になりました!?

    と言うことで、桐+外部DBを使う場合はいろいろあります。


引用返信 [メール受信/OFF] 削除キー/
■5474 / inTopicNo.6)  Re[17]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 17:00:51)
引用返信 [メール受信/OFF] 削除キー/
■5473 / inTopicNo.7)  Re[16]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 16:42:27)
引用返信 [メール受信/OFF] 削除キー/
■5472 / inTopicNo.8)  Re[15]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 15:54:15)
    > Return Matching Rows
    http://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-connection-parameters.html

    関係ないような。

    桐が別名を使うのは
    http://www.fuku3.com/habata/kbbs/kakov9/26449.htm
    に書いてあるけど SQL_COLUMN_ALIAS の返り値によるようで
    Access も複数のテーブルを使う場合はやはりエラーになりました。

    別名の A1 A2 A3 ・・・ は定義時の順番で固定であるのは
    間違いない(変動は無い)だろうから、まぁ〜、それを理解した
    うえで使うのも致し方ないでしょうね。
    外部DBと #DSQL を使う以上、少なくとも桐からは制御できる
    問題では無いので。

引用返信 [メール受信/OFF] 削除キー/
■5471 / inTopicNo.9)  Re[14]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 15:17:38)
引用返信 [メール受信/OFF] 削除キー/
■5470 / inTopicNo.10)  Re[13]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 15:08:28)
    2009/12/19(Sat) 15:09:29 編集(投稿者)

    > # K3さんへご連絡お願いできますか
    > # 自分がメールしてもスルーされそうなので

    今回の件ではどうしようも無いでしょう。

    別名を使うか使わないかはサーバ側 ODBC側に
    依存する問題だし、それを事前にユーザが取得
    して書くなんて言うのもあり得ないし、#DSQL
    と言う機能上、一部の SQL文しかユーザはコント
    ロールできないわけだし。桐が勝手に書き換える
    のも変。

    解決方法はパススルークエリを望むユーザが多い
    かどうかで、そんな要望があるかどうかでは無い
    のでしょうか?


引用返信 [メール受信/OFF] 削除キー/
■5469 / inTopicNo.11)  Re[5]: 外部dbでのambiguousエラーへの対処
□投稿者/ 通りすがり -(2009/12/19(Sat) 13:27:10)
    > (基本的に)桐のよさは一覧形式処理にあると思っていますので

    ああ、まあ、そうだなぁ、Excelのように使えるのは便利だよね
    正規化された外部データベースを運用中にわざわざフラットにして扱うってのも面倒だが、それがしたいから桐使ってるとも…

    > ローカル側にマスタ確保して
    確か、マスタ数万件でしょ、オンラインバンキングはそうしてるよね
    新規振込先をサーバーから検索、一度使った振込先は端末ごとに確保されてる履歴リスト使う

    完成したら、ぜひ披露してね
引用返信 [メール受信/OFF] 削除キー/
■5468 / inTopicNo.12)  Re[12]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 13:15:25)
    どうも、ありがとうございました

    サブ側の項目名を変更する方向で考えてみます


    # K3さんへご連絡お願いできますか
    # 自分がメールしてもスルーされそうなので

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■5467 / inTopicNo.13)  Re[4]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 12:34:02)
    どうも、こんにちは

    今回の趣旨は希望の印刷をしたい訳では
    ないですのであしからず

    > 入力中に印刷するわけですから
    入力中限定仕様はいかがなものかと

    >mysqlだと表引きは使えないわけですから
    #表引き関数の偉大さを実感している最近です
    ローカル側にマスタ確保して、表引き関数を使う
    使い方が幸せになれそうな感じです

引用返信 [メール受信/OFF] 削除キー/
■5466 / inTopicNo.14)  Re[11]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:54:11)
    2009/12/19(Sat) 11:56:04 編集(投稿者)

    >>別名を使っている中で、テーブル名を直接使っているから
    >>エラーになるのだろうか?
    >># #DSQLを使いたい場合。
    >># MySQL だけの問題かも知れない?

    Access も別名を使うとテーブル名の直接指定を含ませると
    ダメみたい。となると SQLサーバもかな?

    Access も SQLサーバも桐からは別名を使ってアクセスする
    仕様だったと思うので、MySQL とともに Access & SQLサーバ
    もこの問題は出るのかも知れない。

    取りあえず別名を使わない PostgreSQL は大丈夫なようだ
    けれど・・・


    > それと、ログを見ると MySQL は桐からでも別名を使うよう
    > になっているので、桐のバグは出にくい方向にあるようで
    > 何よりだ。

    あちらをたてると、こちらは・・・ 


引用返信 [メール受信/OFF] 削除キー/
■5465 / inTopicNo.15)  Re[10]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:24:23)
    2009/12/19(Sat) 11:25:25 編集(投稿者)

    > 別名を使っている中で、テーブル名を直接使っているから
    > エラーになるのだろうか?
    > # #DSQLを使いたい場合。
    > # MySQL だけの問題かも知れない?

    PostgreSQL 8.1 でも同様だった!
    > ERROR: invalid reference to FROM-clause entry for table "hogehoge"
    > HINT: Perhaps you meant to reference the table alias "a1".

    ただし、PostgreSQL では桐は別名を使わないので #DSQL で
    この問題は生じない! 上記は直接 SQL文を投げかけた場合。

    まぁ〜、別名を使う場合はふつー別名だけを使うだろうし、
    そうで無い場合は問題ないわけだし。

    # 桐から直接 SQLを投げて結果を取り込むことが出来ないので
    # 別名を使う ODBCドライバ経由では面倒というか、ログを確認
    # したうえで別名経由で #DSQLは指定するしか無いと言うことか?


引用返信 [メール受信/OFF] 削除キー/
■5463 / inTopicNo.16)  Re[10]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 11:09:14)
    > &SQL="A1.`renban` = 123"
    > で、無理矢理通るかも知れないけどやっかいだな。
    通りました ^^

    けど、どうしたものか (^^;

引用返信 [メール受信/OFF] 削除キー/
■5462 / inTopicNo.17)  Re[9]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:03:13)
    2009/12/19(Sat) 11:08:12 編集(投稿者)

    > 2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)

    > それと、ログを見ると MySQL は桐からでも別名を使うよう
    > になっているので、桐のバグは出にくい方向にあるようで
    > 何よりだ。

    別名を使っている中で、テーブル名を直接使っているから
    エラーになるのだろうか?

    だとしたら
    &DSQL="A1.`renban` = 123"
    で、無理矢理通るかも知れないけどやっかいだな。
    # #DSQLを使いたい場合。
    # MySQL だけの問題かも知れない?

引用返信 [メール受信/OFF] 削除キー/
■5461 / inTopicNo.18)  Re[8]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 10:58:04)
    > テーブル名、カラム名が ` (バッククォート)
    すいません、その場合のログです

    このように書いた時のエラーメッセージが
    Unknown column 'trn_uriage_m.renban' in 'where clause'
    と表示されています



    091219 10:53:43 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)


引用返信 [メール受信/OFF] 削除キー/
■5460 / inTopicNo.19)  Re[7]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 10:52:03)
    &DSQL 指定ではなく
    絞り込み条件1に =123 を直接記述した場合のログです
    この場合は、エラーは起きずに編集できます


    091219 10:48:02 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ((A1.`renban`=123)) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ((A1.`renban`=123)) AND (A1.`renban`=A2.`renban`)

引用返信 [メール受信/OFF] 削除キー/
■5459 / inTopicNo.20)  Re[7]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 10:45:48)
    2009/12/19(Sat) 10:58:42 編集(投稿者)

    >&DSQL="'trn_uriage_m'.'renban' = 123"
    >&DSQL="trn_uriage_m.renban = 123"

    だからぁ〜!
    テーブル名、カラム名が ` (バッククォート)
    で括られていないじゃない。

    &DSQL="`trn_uriage_m`.`renban` = 123"

    ログの他のところは ` ` で括られていますよね。

    取りあえず 4.1 のリファレンス
    http://dev.mysql.com/doc/refman/4.1/ja/legal-names.html

    5.1 はこの辺
    http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html



    しかし
    >&DSQL="trn_uriage_m.renban = 123"
    こっちは日本語を使っているわけでもないし、小文字だし
    通って良さそうだけれど _ があるのでダメなのかな?

    それと、ログを見ると MySQL は桐からでも別名を使うよう
    になっているので、桐のバグは出にくい方向にあるようで
    何よりだ。


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

次の20件>

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

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

- Child Tree -
- Antispam Version -