- ベストアンサー
ASPでmdbファイルからデータの抽出(SQL)
- ASPでmdbファイルからデータを抽出する方法について調べていますが、うまくいきません。ACCESSのクエリーでは動作するのですが、ASPでは上中下が表示されません。
- TABLE1とTABLE2のデータを結合させ、特定のカラムを表示するためのSQL文をASPで記述しましたが、正しく表示されません。問題の原因を教えてください。
- ASPでmdbファイルからデータを抽出し、表示させたいのですが、RANK1とRANK2のカラムは表示されるものの、RANK_NAMEの値が正しく表示されません。何かアドバイスをいただけますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。すみません!AS見落としてました。SQL文は合ってますね。 取り出しの記述はどのように記述してますか? 下記のような記述で表示されましたが・・・ 試してみてください。 Set cn = Server.CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bks\main.mdb;" sql="SELECT TABLE1.ID, RANK1.RANK_NAME, RANK2.RANK_NAME " sql=sql&"FROM (TABLE1 INNER JOIN TABLE2 AS RANK1 ON TABLE1.RANK1 = RANK1.RANK) INNER JOIN TABLE2 AS RANK2 ON TABLE1.RANK2 = RANK2.RANK;" Set rs=cn.Execute( sql ) %> <table> <%Do While Not rs.EOF 'パターン1======================================%> <tr> <td><%=rs.Fields("ID")%></td> <td><%=rs.Fields("RANK1.RANK_NAME")%></td> <td><%=rs.Fields("RANK2.RANK_NAME")%></td> </tr> <%rs.Movenext Loop %> </table> <%rs.MoveFirst 'パターン2======================================= Do While Not rs.EOF Response.Write "<table><tr>" For Each fd In rs.Fields Response.Write "<td>"&fd.value&"</td>" Next Response.Write "</tr></table>" rs.Movenext Loop %>
その他の回答 (2)
- lonlysheep
- ベストアンサー率56% (29/51)
SQL文の記述の仕方がちょっと違うように思います。 selectで「RANK1.RANK_NAME」と指定してますが、 RANK1テーブルはないですよね?(RANK1はフィールド名ですよね?) 「○○.△△」の○○はテーブル名を、△△はフィールド名を指定します。 下記のSQL文で試してみてください。 SELECT TABLE1.ID, TABLE2.RANK_NAME AS RANK_NAME1, TABLE2_1.RANK_NAME AS RANK_NAME2 FROM (TABLE1 INNER JOIN TABLE2 ON TABLE1.RANK1 = TABLE2.RANK) INNER JOIN TABLE2 AS TABLE2_1 ON TABLE1.RANK2 = TABLE2_1.RANK; 結果は「ID」,「RANK_NAME1」,「RANK_NAME2」で取り出せます。 Accessのクエリーで動作したとのことですが、 クエリーのデザイン画面でメニューバー「クエリ」→「SQL」→「パススルー」を 選択するとそのSQL文が表示されますので、そのままコピーして ASPに記述するとたいてい動きますよ。 (中にはASP用に変更しなければならない場合もありますが) 参考になれば幸いです。
- osamuy
- ベストアンサー率42% (1231/2878)
ASP側でバグっているのでは? おそらくADOを使われているのだと思いますが、そのコードをMS-Accessに持ってきて正当性を確認してみるとか。
補足
アドバイスありがとうございます。 おっしゃる通り、APSでADOを使っております。 記述したSQL文はMS-ACCESSでは正常に動作しています。 ASPでは「TABLE2 AS RANK1」と言う記述ができないのでしょうか?
補足
RANK1.RANK_NAMEの”RANK1”は”TABLE2 AS RANK1”のつもりで書いています。 もしかしたら、新しく名付けたテーブル名とフィルド名が同じにしてしまった事が、動作しない原因でしょうか? お手数ですが、テーブル名を TABLE1→LIST TALBE2→RANK_CD とした場合の,書き方を教えていただけませんか?