出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
[4855] 無題 |
投稿者:KAZUさん 2004/12/16 21:15:51 |
ASPに関して質問させて下さい。 あるテーブルに対して、以下のように更新処理(update)を実施 しています。 @Server.CreateObject("ADODB.Connection") AConnection.Open BServer.CreateObject("ADODB.Command") CServer.CreateObject("ADODB.Recordset") DCommandTextにSQL文を設定する←更新対象を検索 ECommandTypeに1を設定 Fレコードセットに値を設定する Gテーブルに対しての更新で”レコードセット.update”にて実施する この時、Fでレコードセットに値をセットする際に、その値が unicode文字の場合(例えばU+9B16 など)、以下のエラーが 発生します。 ”複数ステップのOLEDBの操作で・・・”(80040E21)のエラー が発生します。 これらの対応策を探ってはいるのですが解決に至っていません。 入力時にこれらの入力値をチェックする方策も考えておりますが、 こちら現時点では分からない状態です。 どなたかご教授願えますか? |
[4856] Re:無題 |
投稿者:KAZUさん 2004/12/16 21:19:50 |
> ASPに関して質問させて下さい。 > > あるテーブルに対して、以下のように更新処理(update)を実施 > しています。 > > @Server.CreateObject("ADODB.Connection") > AConnection.Open > BServer.CreateObject("ADODB.Command") > CServer.CreateObject("ADODB.Recordset") > DCommandTextにSQL文を設定する←更新対象を検索 > ECommandTypeに1を設定 > Fレコードセットに値を設定する > Gテーブルに対しての更新で”レコードセット.update”にて実施する > > この時、Fでレコードセットに値をセットする際に、その値が > unicode文字の場合(例えばU+9B16 など)、以下のエラーが > 発生します。 > > ”複数ステップのOLEDBの操作で・・・”(80040E21)のエラー > が発生します。 > > これらの対応策を探ってはいるのですが解決に至っていません。 > > 入力時にこれらの入力値をチェックする方策も考えておりますが、 > こちら現時点では分からない状態です。 > > どなたかご教授願えますか? |
[4857] Re:無題 |
投稿者:KAZUさん 2004/12/16 21:21:01 |
スミマセン、補足します。 プラットフォームは Windows2000 SP3 SQLServer2000 StandardEdition になります。 宜しく御願い致します。 > > ASPに関して質問させて下さい。 > > > > あるテーブルに対して、以下のように更新処理(update)を実施 > > しています。 > > > > @Server.CreateObject("ADODB.Connection") > > AConnection.Open > > BServer.CreateObject("ADODB.Command") > > CServer.CreateObject("ADODB.Recordset") > > DCommandTextにSQL文を設定する←更新対象を検索 > > ECommandTypeに1を設定 > > Fレコードセットに値を設定する > > Gテーブルに対しての更新で”レコードセット.update”にて実施する > > > > この時、Fでレコードセットに値をセットする際に、その値が > > unicode文字の場合(例えばU+9B16 など)、以下のエラーが > > 発生します。 > > > > ”複数ステップのOLEDBの操作で・・・”(80040E21)のエラー > > が発生します。 > > > > これらの対応策を探ってはいるのですが解決に至っていません。 > > > > 入力時にこれらの入力値をチェックする方策も考えておりますが、 > > こちら現時点では分からない状態です。 > > > > どなたかご教授願えますか? |
[4860] Re:無題 |
投稿者:暇人さん 2004/12/17 11:56:00 |
挿入するフィールドのバイト数が足りてないという事はないでしょうか? Unicodeは一文字2Byte固定です。 charやvarcharのフィールドの場合、nvarcharやncharに変更してしまうのも手です。 |
[4868] Re:無題 |
投稿者:KAZUさん 2004/12/17 21:02:17 |
> 挿入するフィールドのバイト数が足りてないという事はないでしょうか? こちらでフィールドのバイト数を大きくして検証しましたが、 おっしゃるとおりエラーにはなりませんでした! ただし何故フィールドのバイト数を超えてしまったのかというと、 画面から第3もしくは第4水準の文字が入力された場合 HTMLユニコード(&#nnnnというような)に変換されてしまい、 変換後の文字でDBに登録しようとした為でした。 入力された値を確認画面に1度表示しているのですが その際はきちんと表示されています。 どこで文字が変換されてしまうのかをこれから調査してみます。。 ご存知でしたら、この辺りについてもご教授いただけますでしょうか? どうぞよろしくおねがいします。 |
[4869] Re:無題 |
投稿者:暇人さん 2004/12/20 9:46:49 |
> ただし何故フィールドのバイト数を超えてしまったのかというと、 > 画面から第3もしくは第4水準の文字が入力された場合 > HTMLユニコード(&#nnnnというような)に変換されてしまい、 > 変換後の文字でDBに登録しようとした為でした。 URL、HTMLエンコードのトラブルでしたか。 原因がわかって幸いです > 入力された値を確認画面に1度表示しているのですが > その際はきちんと表示されています。 > どこで文字が変換されてしまうのかをこれから調査してみます。。 画面に表示した際、ソースの表示を行ってみてください。 当然ですがHTMLエンコードされた文はブラウザでみても&hoge等の表示にはなりません。(そのためのHTMLエンコードですから) しかし、画面のソースを見てみれば <td>&hoge</td> などと書かれていますので確認できます。 後、関係ないかもしれませんが。get渡し、URLのリンクからの遷移にも注意してみてください。URLエンコードされている事もあります |
[4870] Re:無題 |
投稿者:KAZUさん 2004/12/20 22:37:17 |
> 後、関係ないかもしれませんが。get渡し、URLのリンクからの遷移にも注意してみてください。URLエンコードされている事もあります 画面から第3もしくは第4水準の文字をFORMで送信した際に、 エンコードされてしまいます。 送られるデータの形式はapplication/x-www-form-urlencodedを 指定しています。 エンコードされた文字を、デコードするなどはできるのでしょうか? 何かご存知の事がありましたら、ご教授ください。 |
[4874] Re:無題 |
投稿者:暇人さん 2004/12/24 14:08:23 |
インフルエンザってつらいですね 全身筋肉痛のような痛みが寝ても座ってもたっても襲ってきて 熱は40度、のどは痛いし。シヌカトオモッタヨ ・・・月曜からのた打ち回ってました(いや体は動かないですが精神的に) 一応自分なりの回答を下に書きます > 送られるデータの形式はapplication/x-www-form-urlencodedを > 指定しています。 > エンコードされた文字を、デコードするなどはできるのでしょうか? ASPは基本的にRequest、Responseオブジェクトに文字列を入れるときに自動で変更しますが。それでも変わらない例外もやっぱり有るわけで 自作した関数を使うしかないです。 でも1から作るのは面倒なので、Vectorとかでフリーソフトとして配布されているdecodeプログラムを頂いて見たらどうでしょう。 そのままではやっぱり使えませんが、1から作るより手間がかからなくていいです。 自分でも作ってみたのですが。果たしてKAZUさんの環境でもOKなのか極めて疑問な上に、数百行いっちゃうのでちょっとここに乗せられません 後はがんばってください。グッドラック |
[4875] Re:無題 |
投稿者:KAZUさん 2004/12/24 15:55:43 |
インフルエンザですか! 元気になって何よりです!!! 色々、お勉強させて頂きました。 どうも、ありがとうございます。 良いお年を。 |
TreeBBS For ASP V.0.1.3 |