出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

データベースの内容を表示させる方法   まどかさん [2001/11/28 19:19:22] [1124]
  発言者により削除されました!! 通りすがりのASPerさん [2001/11/28 19:57:55] [1126]
  Re:データベースの内容を表示させる方法   Tomitomiさん [2001/11/29 15:49:16] [1136]
  【解答例】1.CSVからMDBの作成   北岳さん [2001/11/29 18:04:01] [1147]
    【解答例】2.ASPの作成   北岳さん [2001/11/29 18:06:46] [1148]
  Re:データベースの内容を表示させる方法   まどかさん [2001/11/30 12:48:36] [1160]
    Re:データベースの内容を表示させる方法   北岳さん [2001/11/30 13:38:03] [1163]
      発言者により削除されました!! まどかさん [2001/12/05 12:44:04] [1209]
    Re:データベースの内容を表示させる方法   Tomitomiさん [2001/11/30 13:41:03] [1164]

[1124] データベースの内容を表示させる方法
投稿者:まどかさん 2001/11/28 19:19:22
 昨日もお世話になりました、まどかと申します。
今回、検索対象のデータベースの内容を画面に表示させようとしています。
例えば、db1にAコード、Bコードのフィールドがあったとします。
ただ、db1の対象レコードを画面に表示する方法は、本を見てできました。今回やりたいのは、db1のAコードに対応するdb2のAコード名称も一緒に表示させたいのです。
 表示画面のフィールドがAコード、Aコード名称、Bコードになるように表示させたいのですが。
 参考にした「今日からできるASP3.0」サンプルは以下の通りです。
---disp.asp---

<%@Language="VBScript" %>
<html>
<head>
<title>データベースをテーブル整形</title>
</head>
<body>
<!-- #INCLUDE File="db2table.asp" -->
<%
db2Table "SELECT * FROM mngUsr","../../master.mdb"
%>
</body>
</html>

---db2table.asp---
<%
Sub db2table(sql,dbName)
Set db=Server.CreateObject("ADODB.Connection")
db.Provider="Microsoft.Jet.OLEDB.4.0"
db.Mode=1
db.ConnectionString=Server.MapPath(dbName)
db.Open
Set rs=db.Execute(sql)
Response.Write "<table border='1'><tr>"
For i=0 To rs.Fields.Count-1
Response.Write "<th>" & rs.Fields.Item(i).Name & "</th>"
Next
Response.Write "</tr>"
Do Until rs.EOF
Response.Write "<tr>"
For i=0 To rs.Fields.Count-1
Response.Write "<td>" & rs.Fields.Item(i).Value & "<br /></td>"
Next
Response.Write "</tr>"
rs.MoveNext
Loop
Response.Write "</table>"
rs.Close
db.Close
Set db=Nothing
End Sub
%>
二重ループになっているところを変えればいいのかと思うのですが、
よくわからないので、ご教授ください。
あの、もしかして、本の内容を記述するのはまずいのでしょうか?
それなら、すぐに消しますのでいってください!

[1126] Re:データベースの内容を表示させる方法
投稿者:通りすがりのASPerさん 2001/11/28 19:57:55
発言者により削除されました!!

[1136] Re:データベースの内容を表示させる方法
投稿者:Tomitomiさん 2001/11/29 15:49:16
こんにちは、Tomitomiです。

> 今回、検索対象のデータベースの内容を画面に表示させようとしています。
> 例えば、db1にAコード、Bコードのフィールドがあったとします。
> ただ、db1の対象レコードを画面に表示する方法は、本を見てできました。今回やりたいのは、db1のAコードに対応するdb2のAコード名称も一緒に表示させたいのです。
>  表示画面のフィールドがAコード、Aコード名称、Bコードになるように表示させたいのですが。

db1 と db2というのがよくわかりませんが、mdbファイルが2つあるということでしょうか?
その場合は、db1にdb2のテーブルをリンクすればいいと思います。
リンクした場合は、普通のテーブルを扱うように扱えます。

それとも、レコードセットがdb1とdb2のように2つあり、一致するものを出したいということでしょうか?

あと、サンプルのコードのやつは、僕からすると美しくないので、あまり見てませんw。
サンプルコードはあくまでサンプルであり、このサンプルを改造するよりは一から作ったほうがよい気もします。

[1147] 【解答例】1.CSVからMDBの作成
投稿者:北岳さん 2001/11/29 18:04:01
**** namae.mdb の作成 *****
 
(1)EXCELの文字結合で作った次の2つのファイルを、
メモ帳経由で、拡張子csvでデスクトップに作成します。
---------1.csv------------
"ID","名前","住所","性別"
"1","山田太郎","神奈川","男"
"2","野田花子","東京","女"
"3","野山次郎","大阪","男"
"4","鈴木一朗","シアトル","男"
"5","鈴木次郎","神奈川","男"
 
---------2.csv------------
"住所","地域"
"神奈川","関東"
"東京","関東"
"大阪","関西"
"シアトル","アメリカ"
 
(2)ACCESSを起動します。
 
(3)「空のデータベース」−「OK」−ファイル名=namae.mdb−「作成」
「挿入」−「テーブル」−「テーブルのインポート」−「ファイルの種類」−「テキストファイル(*.csv)」−「ファイル名」−さっきの1.csv−「インポート」
ウイザードで、「区切り記号付き」−「カンマ」−「先頭行をフィールド名として使う」−あと適当に−「完了」
 
(4)「挿入」以降、同じことをさっきの2.csvでも行います。
 
(5)ACCESSを閉じ、(MyDocuments?に作られた)namae.mdbを(例)d:\sampleフォルダに移動します。

[1148] 【解答例】2.ASPの作成
投稿者:北岳さん 2001/11/29 18:06:46
さて、ASPですが、再帰呼び出し法を使いました。
なお私はSQLを1文で書くのに慣れていないので、2文でやっています。
 
**** namae.asp の作成 ******
<%@Language="VBScript" %>
<%
term=Request.Form("term")
if term<>"" then'★
Set rs1=Server.CreateObject("ADODB.RecordSet")
Set db=Server.CreateObject("ADODB.Connection")
db.Provider="Microsoft.Jet.OLEDB.4.0"
db.Mode=1
db.ConnectionString="d:\sample\namae.mdb"
db.Open
SQL1="SELECT * FROM 1 WHERE 名前 LIKE '%" & term & "%' ORDER BY 名前"
rs1.OPEN SQL1,db,3,3
%><html><body bgcolor="#ffe0ff">
<center>
<p><b><font size="+3" color="SteelBlue">検索結果</フont></b>
<%
if rs1.RecordCount=0 then
response.write "<p>該当なし"
response.write "</body></html>"
response.end
end if
%><table border='1'><tr><%
%><tr><td>名前</td><td>性別</td><td>住所</td><td>地域</td></tr><%
Do Until rs1.EOF
%><tr><%
SQL2="SELECT * FROM 2 WHERE 住所='" & rs1("住所") & "'" %>
<% Set rs2=db.Execute(SQL2)
%><tr>
<td><%= rs1("名前") %></td><td><%= rs1("性別") %></td><td><%= rs1("住所") %></td><td><%= rs2("地域") %></td>
</tr><%
rs2.close
rs1.MoveNext
Loop
%></table>
</center></body></html>
<%
rs1.Close
db.Close
Set db=Nothing
Response.End
end if '★
%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis">
<script language="JavaScript">
<!--
function ChkForm(x){
if (x.term.value=="") {
window.alert ("【名前の検索】\n検索文字が空白です。");
return false;
}
return true;
}
// -->
</script>
</head>
<body bgcolor="#ffffe0">
<center>
<p><b><font size="+3" color="SteelBlue">名前検索</font></b>
<p>部分一致で検索します。
<form action="/aspbin/namae.asp" method="post" onSubmit="return ChkForm(this);">
<input type="text" name="term" size=20> <input type="submit" value=" 検 索 "
</form>
</center>
</body></html>

再帰呼び出し法は今の場合使う必要がないので、やはり htmlとaspに分けた方が、自然な感じがしますね。(んな、今更・・・)

[1160] Re:データベースの内容を表示させる方法
投稿者:まどかさん 2001/11/30 12:48:36
お返事をくださったみなさん、ありがとうございました。
みなさんのおけげで成功しました。
わかりにくい書き方をしてしまってすみませんでした。
 そこで、表示されたレコードを選択して、更新するために、
1つ1つのレコードごとにチェックボックスをつけることにしました。
これもループのなかで表示させる命令をいれるのでしょうか?
 それとも別なんでしょうか?教えてください。

[1163] Re:データベースの内容を表示させる方法
投稿者:北岳さん 2001/11/30 13:38:03
フィールド検索結果をテーブルで一覧にする場合、出来上がったASPのソースは

<form method="POST" action="〜">
<table>
<tr><td>検索結果のn番目</td>
<td><input type="〜" name="〜" value="〜">
</td></tr>
・・・
</table>
</form>

のようになります。
1つのform内に複数の<input type="〜" name="〜" value="〜">を置きますが、
この場合、nameが"chk1"〜"chk99"のように、別々(連番)でなければなりません。
この出力画面をつくるときに、

i=1
do until rs.EOF
i=i+1
%>
<input type="〜" name="chk<%= i %>" value="〜">
<%
loop

とやれば、実現します。

---------------------------------------
>そこで、表示されたレコードを選択して、更新するために、
>1つ1つのレコードごとにチェックボックスをつけることにしました。

ん?textbox付きの更新画面を別に用意するのでしょうか。
それなら上のやり方でOK。
この画面で、表中にtextboxもズラリと並べて、チェックされたものだけ
更新情報ともども受け取ろうという場合は、
「今日から使えるASP3.0サンプル集」p.158(資産管理システム3)に実例があります。

[1209] Re:データベースの内容を表示させる方法
投稿者:まどかさん 2001/12/05 12:44:04
発言者により削除されました!!

[1164] Re:データベースの内容を表示させる方法
投稿者:Tomitomiさん 2001/11/30 13:41:03
こんにちはTomitomiです。

> 1つ1つのレコードごとにチェックボックスをつけることにしました。
> これもループのなかで表示させる命令をいれるのでしょうか?
>  それとも別なんでしょうか?教えてください。

<%
For i = 1 to 10
%>
<input type="checkbox" name="C<%=i%>" value="1">
<%
Next
%>

かな?
または、
<%
For i = 1 to 10

Response.Write "<input type='checkbox' name='C" & i & "' Value='1'>"

Next
%>

かな



TreeBBS For ASP V.0.1.3
Program By YasNet