ASPでODBC接続で悩んでいます。SQLで、文字列をシングルクオートで囲むとエラーになってしまうのです。シングルを使わなければエラーは起きません。エラーの種類は「関数シーケンスエラー」です。シングルクオートが使えないバージョンなどあるんでしょうか。困り果てて死にそうです。どうか助けてください。ズバリの回答には200ポイント差し上げます。
シングルクォートで囲むというのは、
strSQL = ”SELECT * FROM TABLE WHERE USER=’001’”
というのがダメなのでしょうか?
つい先日ASP.NET+ODBCの仕事をしたところですが、上のようなやりかたで普通に大丈夫でしたが・・・
お返事くだされば対策考えます。
私もASP.NET+SqlServerでした。
バージョンが違うのは・・・_| ̄|○
1)テストサーバの環境を本番にあわせる
今のままでいくなら、王道はやはりこれだと思います。上がこれを認めないなら、その案件は「できません」というのが本来正しい気がします。(同じような案件を、絶対不可能な政治的理由で新人だから人柱に受けさせられて、納期が倍以上伸びて吊るされた経験あり)
2)夜中にこっそり本番サーバーにシンプルなテストDBを作成して検証してみる
とりあえずオススメできません。
もしも例外的にこれをやってもいいような状況なのであれば、それも手かなとは思います。
3)ストアドプロシージャを使う
もっとも理想的な方法です。
ストアド+ODBCなら、コードからはストアド名と引数を投げてやるだけなので、クォーテーションを使う場所はないと思います。
ありがとうございます。やはり私だけじゃなかったんですね
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
http://support.microsoft.com/default.aspx?scid=kb;ja;JP409224
[VB4] RDO "SQLCLI 関数のシーケンスエラー" について
問題のエラーが「S1010(0)[Microsoft][ODBC Driver Manager] 関数シーケンス エラーです。」だとすれば、
ODBCそのものがエラーを出しているので、シングルクォートによって問題が発生するのは微妙に違うのではないかと思います。
URLに示したKBやらDB2のアドバイザリ(なんだかgoogleキャッシュしかヒットしません)を見るに、RDOを利用した時のトランザクション関係でこのエラーが発生するようです。
私はADOしか使ったことがないので確たることが言えないのが申し訳ないのですが、もしかして、同じコネクションオブジェクトを利用している前後で、トランザクション関係がこんがらがったりしていないでしょうか。
トランザクションは、シンプルに済ませているはずなのですが・・・どうもぼんやりした感じです。
http://www.microsoft.com/japan/msdn/data/download.asp
Universal Data Access 関連ダウンロード
MDACのバージョン違いはいろいろな不具合を発生し、古いバージョンは連続稼働時の安定性に大変不安定要因をもちます。もちろんセキュリィティ上もいろいろ言われています。
答えになってはいないと思いますが、MDACは常に気をつけていて新しい物を使うのがASP系開発の基本と思っております。
まづそちらの変更を検討されるのが、ベストだと考えます。
テストサーバーと本番サーバーでODBCのバージョンが違って、同じSQLServerに接続してるのに、本番サ-バー(古い)では、このエラーが出てしまいます