三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


asp073.html 三流君ASP:テーブルをつなげて商品名を取得する方法

元の三流解説は、
三流君ASP:テーブルをつなげて商品名を取得する方法
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL From句にテストで2つのテーブルデータを指定(つなげない)</title>
</head>
<body>
<h1>SQL From句にテストで2つのテーブルデータを指定(つなげない)</h1>
なにも条件を指定しないで、2つのテーブルをFrom句に書いてみました。<br>
Set rs = db.Execute("Select * From T_月別売上, T_商品")<br>
と、SQL文でレコードセットを作成してみた<br>
※From句にテーブルを書いただけです。<br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("db072.mdb")
  db.open 'やっとデータベースを開ける

  'お約束のレコードセットの作成 T_月別売上,T_商品を指定
  Set rs = db.Execute("Select * From T_月別売上, T_商品")

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しを(フィールド名を)そのまま書き込む
  Response.Write "<TR>"
  For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
     Response.Write "<TH>" & fld_A.Name & "</TH>"
     '↑.Nameでフィールド名を表示する
  Next
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
       Response.Write "<TD>" & fld_A.Value & "</TD>"
       '↑.Valueでフィールドの値を表示する
    Next
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  rs.Close '開いていたレコードセットを閉じる
  db.Close 'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>
<hr>
終了です。<br>
</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test073-1.asp実行する

ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL 2つのテーブルを商品コードでつなげる</title>
</head>
<body>
<h1>SQL 2つのテーブルを商品コードでつなげる</h1>
条件を指定して、2つのテーブルをつなげてみます。<br>
Select * From T_月別売上, T_商品<br>
 Where T_月別売上.商品CD = T_商品.商品CD<br><br>
商品コードでつなげる条件を書いてみました。<br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("db072.mdb")
  db.open 'やっとデータベースを開ける

  'お約束のレコードセットの作成 T_月別売上,T_商品を指定
  '結合の条件 T_月別売上.商品CD = T_商品.商品CD を指定
  strSQL = "Select * From T_月別売上, T_商品"
  strSQL = strSQL & " Where T_月別売上.商品CD = T_商品.商品CD"
  Set rs = db.Execute(strSQL)   'SQL発行、レコードセットを作成

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しを(フィールド名を)そのまま書き込む
  Response.Write "<TR>"
  For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
     Response.Write "<TH>" & fld_A.Name & "</TH>"
     '↑.Nameでフィールド名を表示する
  Next
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
       Response.Write "<TD>" & fld_A.Value & "</TD>"
       '↑.Valueでフィールドの値を表示する
    Next
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  rs.Close '開いていたレコードセットを閉じる
  db.Close 'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>
<hr>
終了です。<br>
</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test073-2.asp実行する



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>明細データから小計処理を自分で作成してみた</title>
</head>
<body>
<h1>明細データから小計処理を自分で作成してみた</h1>
2つのテーブルを商品コードでつなげたレコードセットを作成して処理しました<br>
Select * From T_月別売上, T_商品<br>
 Where T_月別売上.商品CD = T_商品.商品CD<br>
  Order By T_月別売上.商品CD<br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("db072.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 T_月別売上,T_商品を指定
  '結合の条件 T_月別売上.商品CD = T_商品.商品CD を指定
  strSQL = "Select * From T_月別売上, T_商品"
  strSQL = strSQL & " Where T_月別売上.商品CD = T_商品.商品CD"
  strSQL = strSQL & " Order By T_月別売上.商品CD"
  Set rs = db.Execute(strSQL)   'SQL発行、レコードセットを作成

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しを表示する
  Response.Write "<TR bgcolor=#E0FFFF>"
  Response.Write "<TH>商品名</TH>"
  For n = 4 To 9  '4月から9月と見出しを表示したいので
     Response.Write "<TH>" & n & "月</TH>"
  Next
  Response.Write "<TH>上期計</TH>"
  Response.Write "</TR>"

  '月別の小計・総合計を保存する配列を作成する
  Dim sum_group(12)  'グループ合計
  Dim sum_all(12)    '総合計
  Dim sum_code       'グループ化のコード

  '総合計エリア、グループ合計を初期化する
  For n = 1 To 12
    sum_group(n) = 0
    sum_all(n) = 0
  Next 
  'グループ化のコードを初期化する
  sum_code = Left(rs("T_月別売上.商品CD").Value , 1) '商品コード1桁目

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間

    'グループコードが変わったかチェックする
    If sum_code <> Left(rs("T_月別売上.商品CD").Value , 1) Then
       '小計を表示する
       Response.Write "<TR bgcolor=#FFE0FF>"   '行を表示する
       Response.Write "<TD>小計</TD>"
       g_kamiki = 0 '小計の上期集計用の変数を初期化する
       For n = 4 To 9 '4~9月
          Response.Write "<TD>" & sum_group(n) & "</TD>" 'n月の値を表示
          g_kamiki = g_kamiki + sum_group(n)  '小計の上期のタメに計算
       Next
       Response.Write "<TD>" & g_kamiki & "</TD>" '小計の上期計を表示
       Response.Write "</TR>"  '行の終わり
       '次のグループになるので、配列とCODEを初期化する
       sum_code = Left(rs("T_月別売上.商品CD").Value , 1) '次のコードを代入
       For n = 4 To 9  '小計値を初期化する
          sum_group(n) = 0
       Next
    End If

    Response.Write "<TR>"   '行を表示する
    'マスターから商品名を読み込む
    Response.Write "<TD>" & rs("商品名").Value & "</TD>"
    g_kamiki = 0 '集計用の変数を初期化する
    For n = 4 To 9 'フィールドにフィールド名でアクセスする
       Response.Write "<TD>" & rs("売上" & n).Value & "</TD>"
       '↑"売上" & nでフィールド名売上4..売上9を作成してアクセス
       '自分で上期を集計する
       g_kamiki = g_kamiki + rs("売上" & n).Value
       '月別、グループ、総合計を計算する
       sum_group(n) = sum_group(n) + rs("売上" & n).Value  'グループ
       sum_all(n)   = sum_all(n)   + rs("売上" & n).Value  '総合計
    Next
    '上期の合計を表示する
    Response.Write "<TD>" & g_kamiki & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

  'ループを抜けたら、最後の小計を表示する
  '小計を表示する
  Response.Write "<TR bgcolor=#FFE0FF>"   '行を表示する
  Response.Write "<TD>小計</TD>"
  g_kamiki = 0 '小計の上期集計用の変数を初期化する
  For n = 4 To 9 '4~9月
     Response.Write "<TD>" & sum_group(n) & "</TD>" 'n月の値を表示
     g_kamiki = g_kamiki + sum_group(n)  '小計の上期のタメに計算
  Next
  Response.Write "<TD>" & g_kamiki & "</TD>" '小計の上期計を表示
  Response.Write "</TR>"  '行の終わり

  '総合計の表示(計算した総合計を表示する)
  Response.Write "<TR bgcolor=#FFFFE0>"   '行を表示する
  Response.Write "<TD>総合計</TD>"
  g_kamiki = 0 '総合計の上期集計用の変数を初期化する
  For n = 4 To 9 '4~9月の値を表示する
     Response.Write "<TD>" & sum_all(n) & "</TD>" 'n月の値を表示
     g_kamiki = g_kamiki + sum_all(n)  '総合計の上期のタメに計算
  Next
  Response.Write "<TD>" & g_kamiki & "</TD>" '小計の上期計を表示
  Response.Write "</TR>"  '行の終わり

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>

</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test073-3.asp実行する


↑コードの三流解説は、
三流君ASP:テーブルをつなげて商品名を取得する方法
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)