C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: VS.NETのTableAdapter.SelectComm


(過去ログ 135 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■79432 / inTopicNo.1)  VS.NETのTableAdapter.SelectComm
  
□投稿者/ SPG (1回)-(2016/04/01(Fri) 17:36:48)

分類:[.NET 全般] 

VS.NET 2008で、TableAdapterのSelectCommandにSQLを設定したところ、
"INNER JOIN"の所が勝手に"{ oj { oj { oj { oj "に置き換わって実行時エラーになります。

DB接続はSystem.Data.OracleClientを使用しています。

原因ご存じの方いましたら教えてください。
引用返信 編集キー/
■79435 / inTopicNo.2)  Re[1]: VS.NETのTableAdapter.SelectComm
□投稿者/ 魔界の仮面弁士 (682回)-(2016/04/01(Fri) 19:44:33)
No79432 (SPG さん) に返信
> VS.NET 2008で、TableAdapterのSelectCommandにSQLを設定したところ、
VS2008 ですね。

2003 までは VS.NET と呼ばれていましたが、
2005 以降では製品名から .NET の名が無くなっています。


> "INNER JOIN"の所が勝手に"{ oj { oj { oj { oj "に置き換わって実行時エラーになります。

ぱっと見、文字化けのように見えますね。
定期的に空白が並んでいるということは、UTF-16 系の破損案件かも。


ソリューション エクスプローラーで XSD ファイルを右クリックし、
ファイルを開くアプリケーションとして XML エディターを選択してみてください。

その上で、
・[ファイル]-[保存オプションの詳細設定]のエンコーディング指定
・ファイル先頭の <?xml?> 宣言の encoding 指定(無い場合は追加)
・xsd 内に記述した SQL が化けているか否か
などを確認し、整合性を合わせて再保存します。

その後、ソリューション エクスプローラーで XSD ファイルを
もう一度右クリックし、カスタムツールの実行を行ってみてください。

整合性が取れていれば、MSDataSetGenerator にて TableAdapter 生成の
デザイナコードが再生性されますので、.Designer.vb の内容が
修正されているかどうかをチェックしてみてください。


もし、DataSet 側の SQL は化けていないのに、Oracle 側に届くコマンドが
破損しているようであれば、Oracle サーバー側の NLS_CHARACTERSET が
開発環境/実行環境のレジストリ(あるいは環境変数)の NLS_LANG と
違っているのかもしれません。
(Japanese_Japan.JA16SJISTILDE の場合は、省略しても大丈夫だと思う)


> 原因ご存じの方いましたら教えてください。

経験した事が無いので、当てずっぽうな回答ですが…。
引用返信 編集キー/
■79456 / inTopicNo.3)  Re[2]: VS.NETのTableAdapter.SelectComm
□投稿者/ SPG (2回)-(2016/04/04(Mon) 09:39:31)
>2005 以降では製品名から .NET の名が無くなっています。
そうでしたか知りませんでした。

ファイルのエンコーディングと、宣言のエンコーディング指定確認及び
新規プロジェクトを作成してみましたがダメでした。


追加で分かったことがあります。
クエリビルダに@のSQLを打ち込み、クエリの実行ボタンをクリックすると、
AのSQLに置き換わります。
※実際のSQLは異なりますが、現象としては同じです。
------------------------------------------------
--@
------------------------------------------------
SELECT D1.*
FROM DUAL D1
INNER JOIN DUAL D2
ON 1 = 1
LEFT JOIN DUAL D3
ON 1 = 1
------------------------------------------------


------------------------------------------------
--A
------------------------------------------------
SELECT D1.DUMMY
FROM SYS."DUAL" D2, { oj SYS."DUAL" D1 LEFT OUTER JOIN
SYS."DUAL" D3 ON 1 = 1 }
WHERE 1 = 1
------------------------------------------------
引用返信 編集キー/
■79458 / inTopicNo.4)  Re[3]: VS.NETのTableAdapter.SelectComm
□投稿者/ 魔界の仮面弁士 (683回)-(2016/04/04(Mon) 10:51:09)
2016/04/04(Mon) 12:10:27 編集(投稿者)

No79456 (SPG さん) に返信
>>> DB接続はSystem.Data.OracleClientを使用しています。

今更 System.Data.OracleClient + TableAdapter の利用を
中止するのも難しいでしょうし、悩ましいところですね。


> FROM DUAL D1
> INNER JOIN DUAL D2
> ON 1 = 1

ON 句に D1 も D2 も無いので、クエリ ビルダーの構文解析機が
正しく判断されないのかもしれません。


> クエリビルダに@のSQLを打ち込み、クエリの実行ボタンをクリックすると、
> AのSQLに置き換わります。

当方の VS2008 では再現しませんでした。環境依存の問題のようですね。


(a案)Service Pack を適用してみる。

今回の件と同じ現象では無いものの、Visual Studio 2008 Service Pack 1 の適用によって
TableAdapter 構成ウィザードの動作が改善したという報告があります。
https://social.msdn.microsoft.com/Forums/ja-JP/649c439a-9599-4b1a-9afd-0f372c796db6?forum=vbgeneralja


(b案)クエリ ビルダーを使わずに試してみる。

既に作成済みの TableAdapter の編集をする場合は、SQL の改行を廃して 1 行で記述し、
クリップボード経由で、プロパティの SelectCommand.CommandText に貼り付けるようにします。
TableAdapter の構文補正が邪魔な場合、自分はこの方法で回避しています。

または、xsd ファイルの内容を、XML エディタかテキストエディタで
直接書き換えることでも、Visual Studio による二次加工を防ぐことができます。




>> 2005 以降では製品名から .NET の名が無くなっています。
> そうでしたか知りませんでした。
パッケージに印刷されているカタカナ表記も、
 『マイクロソフト ビジュアル スタディオ ドットネット バージョン 2003』
 『マイクロソフト ビジュアル スタディオ 2005』
 『マイクロソフト ビジュアル スタジオ 2008』
のように、微妙に変化していたりします。

雑談ついでにさらに蛇足を加えると、
 VS2005 までは「クエリ ビルダ」 「ソリューション エクスプローラ」
 VS2010 からは「クエリ ビルダー」「ソリューション エクスプローラー」
のように、末尾が -er、-or、-ar な単語の長音記号を省略しないようになりました。
https://www.microsoft.com/ja-jp/presspass/detail.aspx?newsid=3491
(VS2008 での長音表記修正は部分的で、ビルダとビルダーが混在しています)
引用返信 編集キー/
■79459 / inTopicNo.5)  Re[4]: VS.NETのTableAdapter.SelectComm
□投稿者/ SPG (3回)-(2016/04/04(Mon) 11:28:19)
>今更 System.Data.OracleClient + TableAdapter の利用を
>中止するのも難しいでしょうし、悩ましいところですね。
そうですね。修正案件なので・・・


>ON 句に D1 も D2 も無いので、クエリ ビルダーの構文解析機が
>正しく判断されないのかもしれません。
実際のSQLではONでテーブル同士の結合条件を指定していますがダメです。

>(a案)Service Pack を適用してみる。
調べて頂きありがとうございます。
しかし、SP適用済みです。

>(b案)クエリ ビルダーを使わずに試してみる。
ありがとうございます。
解決しました。


雑談勉強になります。



一旦解決致しましたが、根本的原因をご存じの方がいるかもしれないので、
解決済みのチェックは後ほど付けさせて頂きます。
引用返信 編集キー/
■79499 / inTopicNo.6)  Re[5]: VS.NETのTableAdapter.SelectComm
□投稿者/ SPG (4回)-(2016/04/08(Fri) 15:41:57)
残念ながら原因不明ですが、
回避策は見つかりましたので解決済みと致します。

魔界の仮面弁士さんありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

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

管理者用

- Child Tree -