データベースから値を取得するコードを作っているのですがアルゴリズムがよくわからなくて困っています。
class name
_____
A 山田
A 鈴木
A 高橋
B 佐藤
C 山本
C 田中
_____
というデータからブラウザへ
<table><tr>
<th>A</th><td>山田</td><td>鈴木</td><td>高橋</td>
</tr></table>
<table><tr>
<th>B</th><td>佐藤</td>
</tr></table>
<table><tr>
<th>C</th><td>山本</td><td>田中</td>
</tr></table>
というふうに出力したいんですがよい方法を教えてください。
No.1ベストアンサー
- 回答日時:
データベースのテーブルの値を表示させたいということですが、データベースへの接続はうまくいっているのでしょうか?DBの種類やサーバーの構成(WEBサーバーとDBサーバーが別れているとか)の環境の説明をしてもらったほうが良いとは思いますが・・・
接続がうまくいっているとしたら、ASP内のソースの問題ですね。
僕の場合ですが、WEBサーバーとDB(オラクル)サーバーが別の構成です。
global.asa内に、DB接続用のApplication変数を設定します。
Sub Application_OnStart
Application("ORA")="Provider=MSDAORA.1;Password=パスワーード;User ID=ユーザーID;Data Source=DBサーバー名"
Application("ORAR")="領域名"
End Sub
ここで、WEBのディレクトリに入ってきたときに、DBとの接続に必要な情報をApplibcation変数に代入しておきます。
********ここまでglobal.asa*************************
データを表示させたいASPページ内で
<%@ Language=VBScript %>
<%
'【テーブルデータ一覧】
'---DB接続
Set OraDB = Server.CreateObject("ADODB.Connection")
OraDB.Open Application("ORA")
%>
<HTML>
<HEAD></HEAD>
<BODY><TABLE>
<%
'---SQL分の作成、
sSql="select フィールド1,フィールド2 from " _
& Application("ORAR") & ".テーブル名"
'---SQLの実行、レコードセットを用意
set rs=OraDB.Execute(sSql)
'---SQL実行の結果レコードがあれば、レコードの先頭に行きループ開始
if rs.eof=false then
rs.movefirst
do while rs.eof=false
'---レコードの最後までResponse.writeでデータを書き出し、次のレコードへ移動する。
Response.write "<TR><TD>" & rs("フィールド1") & "</TD>"
Response.write "<TD>" & rs("フィールド2") & "</TD></TR>"
rs.movenext
loop
else
Response.write "レコードがありません"
end if
'---レコードセットを開放します。
set rs=nothing
%>
</TABLE>
</BODY>
<%
'---データベースとの接続終了
set OraDB=nothing
%>
</HTML>
わかりにくいかもしれませんけど、参考までに・・・
No.3
- 回答日時:
kumagoro-さんの指摘のとおり、パッと見て回答したのでSQLの文が間違っていました。
kumagoro-さんの回答のようにしたほうが良いと思います。
それで、補足なのですが、kumagoro-さんの回答では
A 山田 鈴木 高橋
A 山田 鈴木 高橋
A 山田 鈴木 高橋
B 佐藤
C 山本 田中
C 山本 田中
と表示されるのでは?
sql1 = "SELECT class FROM TableName ORDER BY class"の部分は
Distinctを加え重複データを表示しないようにするか、group by でグループ化しないといけないのではないでしょうか。
sql1 = "SELECT DISTINCT class FROM TableName ORDER BY class"
sql1 = "SELECT class FROM TableName GROUP BY class ORDER BY class"
間違っていたらごめんなさい。
No.2
- 回答日時:
ichanさんの回答では
A 山田
A 鈴木
A 高橋
B 佐藤
C 山本
C 田中
となりますよね。
ですが、arusuさんは
A 山田 鈴木 高橋
B 佐藤
C 山本 田中
としたいのですね?
それでしたら以下のようにしてみてはいかがでしょうか?
(注)レコードセットを開く部分は省略してあります。rs1にはsql1が、rs2にはsql2が対応すると考えて下さい。
sql1 = "SELECT class FROM TableName ORDER BY class"
Do Until rs1.EOF
Response.Write "<TABLE>"
Response.Write "<TR>"
Response.Write "<TH>" & rs1("class") & "</TH>"
sql2 = "SELECT name FROM TableName WHERE class = '" & rs1("class") & "'"
Do Until rs2.EOF
Response.Write "<TD>" & rs2("name") & "</TD>"
rs2.MoveNext
Loop
rs2.Close
Set rs2 = Nothig
Response.Write "</TR>"
Response.Write "</TABLE>"
rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothig
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- Perl PERL 1 2022/04/26 14:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
エクセルに張り付けた写真のフ...
-
Windows10にデュアルブートでXP...
-
PS4で、「バージョン5.05以上の...
-
キヤノン アソビカメラ iNSPiC ...
-
マクロで同じフォルダにある画...
-
discordについての質問です。久...
-
asp.netにてgridviewの列を動的...
-
VB.NETでMSComm が追加できず?
-
vba 空のデータをSplitする時の...
-
マクロコードについて
-
VBAでPDF作成をしたあと、指定...
-
エクセル2016 シート保護について
-
SPO2測定
-
高校1年生情報の問題について。
-
エクセルのマクロについて教え...
-
インドe-Visa 承認書のApplicat...
-
SPIの非言語の割合と比が難しく...
-
SPIの対策は参考書でやるべきか?
-
LEDで電光掲示板に「A B C D E...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アルゴリズムがわからない
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
CLispのloop内の挙動について
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
文字の横にプルダウンを表示さ...
-
実行時エラー 3020の対策
-
【メモリ不足で落ちる(python)】
-
パイソンのクラスのブログラム
-
パイソンのクラスについて
-
パイソンのクラスについて
-
メモリをアドレスを直接指定し...
-
vscode 文字化け
-
パイソンプログラミング
-
どちのほうがすきですか?
-
セレクトメニューで2つの項目...
-
Pythonでターミナルに文字を出...
-
VBAでPDFのコピーとリネームを...
-
FindFirst を複数条件で検索
おすすめ情報