アプリ版:「スタンプのみでお礼する」機能のリリースについて

ASPにてODBC経由でオラクルにADOで接続してデータを表示していますが、GROUP BY 区を追加すると「オブジェクトが閉じている場合は、操作は許可されません」とエラーが発生します。
GROUP BY 区を追加しなければエラーが発生しません。どうしてでしょうか?またこの接続方法の場合JetのSQL関数が使用可能でしょうか?
ASPの中身--------------------------------------
cn = Server.CreateObject("ADODB.Connection");
rs = Server.CreateObject("ADODB.Recordset");
cn.Open("DSN=XXXXX;UID=XXXXX;PWD=XXXXX;");

sq="";
sq+="SELECT ";
sq+="TTUMIAGK.BUCD ";
sq+="FROM ";
sq+="TTUMIAGK ";
sq+="WHERE ";
sq+="TTUMIAGK.BUCD='04' ";
sq+="GROUP BY TTUMIAGK.BUCD;";//追加するとエラー

rs.Open(sq, cn ,3);
while (!rs.eof) { //ここでエラーが発生
j++;
%><tr><%
for (i=0;i<rs.Fields.count;i++){
%><td><%=rs(i).value%></td><%
}
%></tr><%
rs.movenext();
}
rs.close();

A 回答 (3件)

ANo.1,2です。


すみません、難しく考えすぎでした。

sq+="GROUP BY TTUMIAGK.BUCD;";//追加するとエラー

の"TTUMIAGK.BUCD"の後ろの";"が不要なんですね(^^;

この回答への補足

ありがとうございました。単純なミスでした。
ACCESSのSQLは分かるのですがオラクルは
難しいですね。

SELECT
TTUMIAGK.BUCD
FROM
TTUMIAGK
GROUP BY
TTUMIAGK.BUCD
「オブジェクトが閉じている場合は、操作は許可されません。」とエラーが出てしまいますが
SUM(TTUMIAGK.YTKIN) を追加するエラーがでませんでした。しかも「SELECT TTUMIAGK.BUCD」の部分が表示されずSUM関数の結果のみ表示されました。う~んオラクルはやっぱり難しいです。

補足日時:2005/12/29 09:47
    • good
    • 0
この回答へのお礼

オラクルのSQLの基本に関してあまりインターネットに情報がなかったので大変助かりました。

お礼日時:2006/01/10 08:45

ANo.1です。


ご指摘の通り、グループ化関数とはSUM関数やCOUNT関数などのことです。
GROUP BY部に指定していないカラムについてもSELECT部に記述していませんか?そうするとSQL文が正しくなく、実はrs.Open()でエラーとなっており、rsオブジェクトが利用可能になっておらず、rs.eofで今回のエラーが表面化するのだと思います。
    • good
    • 0

SQLについてですが、これは検索後'04'しか帰ってこないのですがこれをグループ化する必要があるのでしょうか・・・?


実際には、他のカラムについて取得しているようならグループ関数を利用しているかがエラーの発生原因として浮上してきますのでご確認を。

次に、Jetの関数というのはSQLの中で利用する関数のことでしょうか?
もしそうであればJetの関数をOracleでは利用できません。同様の機能を持つOracleの関数を利用してください。

この回答への補足

すみませんWHERE文は必要ありませんでした。
「グループ関数を利用しているかが」が分かりません。
SUM関数などのことでしょうか?

Jetの関数はSQLの中で使用する関数(SUM関数)などです。
説明不足でした。

補足日時:2005/12/27 10:36
    • good
    • 0
この回答へのお礼

うまくいきました。
オラクルのSQLの基本に関してあまりインターネットに情報がなかったので大変助かりました。

お礼日時:2006/01/10 08:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!