ASP,VBSでAccessデータベース操作 そのI ファイル名、サブフォルダ名からAccessデータベースを検索、抽出(完成)

ファイル名、サブフォルダ名からAccessデータベースを検索、抽出して表示し、ファイル名、サブフォルダ名へリンクをはる。

とうとう完成した。

ファイル名、サブフォルダ名によって、抽出方法、リンク先の指定方法が変わるので、抽出部分はサブルーチン化し、抽出条件(sql)とリンク先(URL)をサブルーチンに渡して、HTML出力する方法とした。

[test10.asp]
<%@Language="VBScript" %>
<html>
<head>
<title>ドキュメント情報の表示</title>
<body>
<%

Dim HAFOLDER
Dim mdbFOLDER

HAFOLDER="./data"
mdbFOLDER="./ha_repo.mdb"

Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set gf=fs.GetFolder(Server.MapPath(HAFOLDER))

Response.Write "<table border='1'>"
Response.Write "<tr>"
Response.Write "<th>番号</th><th>題目</th><th>登録日</th>"
Response.Write "</tr>"

For Each sgf In gf.SubFolders
sql="Select 番号,題目,登録日 From ha_repo_table WHERE 番号=" & sgf.Name
URL=HAFOLDER & "/" & sgf.Name
kensaku sql,URL
Next

For Each sfc In gf.Files
If instr(sfc.Name,".")>0 Then
sfc1=Left(sfc.Name,instr(sfc.Name,".")-1)
End if
If instr(sfc1,"H")>0 Then
sfc1=Left(sfc1,instr(sfc1,"H")-1)
End IF

sql="Select 番号,題目,登録日 From ha_repo_table WHERE 番号=" & sfc1
URL=HAFOLDER & "/" & sfc.Name
kensaku sql,URL
Next

Response.Write "</table>"


Function kensaku(sql,URL)
Set db=Server.CreateObject("ADODB.Connection")
db.Provider="Microsoft.Jet.OLEDB.4.0"
db.Mode=1
db.ConnectionString=Server.MapPath(mdbFOLDER)
db.Open

On Error Resume Next
Set rs=db.Execute(sql)

Do until rs.EOF
Response.Write "<tr>"
for i=0 to rs.Fields.Count-1
If i=0 Then
Response.Write "<td><a href=" & URL & ">" & rs.Fields.Item(i).Value & "</a></td>"
Else
Response.Write "<td>" & rs.Fields.Item(i).Value & "</td>"
End If
Next
Response.Write "</tr>"
rs.MoveNext
Loop

rs.close

On Error Goto 0

db.close

Set db=Nothing

End Function
%>
</body>
</html>

Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set gf=fs.GetFolder(Server.MapPath(HAFOLDER))
ファイルシステムオブジェクトを開き、gfにファイル名、サブフォルダ名を格納する。

For Each sgf In gf.SubFolders
sql="Select 番号,題目,登録日 From ha_repo_table WHERE 番号=" & sgf.Name
URL=HAFOLDER & "/" & sgf.Name
kensaku sql,URL
Next
gf.SubFoldersでサブフォルダについて処理を行う。
sqlはそのまま番号=" & sgf.Name(4888)で良い。
URLは.pdfをつけない。
kensaku sql,URLでsql、URLを引数としてkensakuサブルーチンにわたし、Accessデータの抽出、HTML出力させる。

For Each sfc In gf.Files
If instr(sfc.Name,".")>0 Then
sfc1=Left(sfc.Name,instr(sfc.Name,".")-1)
End if
If instr(sfc1,"H")>0 Then
sfc1=Left(sfc1,instr(sfc1,"H")-1)
End IF
gf.Filesでファイルについて処理を行う。
4888.pdfと4888HP.pdfの2種類あるので、.pdfとHPを取り除く。
instr(sfc.Name,".")>0で"."があれば、その前の部分を取り出し、
instr(sfc1,"H")>0でHがあればその前の部分を取り出すことにより、4888の数字部分のみ取り出せる。

sql="Select 番号,題目,登録日 From ha_repo_table WHERE 番号=" & sfc1
URL=HAFOLDER & "/" & sfc.Name
kensaku sql,URL
sqlは番号=sfc1(4888)で数字のみの形とし、
URLは、4888HP.pdfでファイル名のままとし、
kensaku sql,URLでsql、URLを引数としてkensakuサブルーチンにわたし、Accessデータの抽出、HTML出力させる。

サブルーチンkensakuはそのBにリンク貼り機能をつけたもの。

for i=0 to rs.Fields.Count-1
If i=0 Then
Response.Write "<td><a href=" & URL & ">" & rs.Fields.Item(i).Value & "</a></td>"
Else
Response.Write "<td>" & rs.Fields.Item(i).Value & "</td>"
End If
i=0の番号のところだけ、送られてきたURLのリンクをはる。

以上で完成。




ASPでAccess操作TOP