|
' -------------------------------------------------------
' グローバル変数
' -------------------------------------------------------
Global Cn As Object ' 接続用
Global Rs As Object ' レコードセット
Global SqlQuery As String ' SQL 検索文字列
Global MyBook As Object ' Excel 用 Book オブジェクト
Global nRow As Integer ' 明細行
Global BreakMain As String ' ブレイクキー
Global BreakCode As String ' ブレイクキー
Global bFirst As Boolean ' 初回フラグ
Global TargetExcel As String ' 処理するEXCELドキュメント
Global KeyName As String
Global TargetName As Object
' -------------------------------------------------------
' グローバル定数
' -------------------------------------------------------
Public Const BASE_EXCEL = "履修済科目一覧org.xls"
Public Const SQL_コース = _
"select " _
& "コード,名称" _
& " from R_名称" _
& " where" _
& " 区分 = '120'" _
& " and コード <> -999" _
& " and 名称 is not NULL" _
& " order by コード"
' ********************************************************
' 前年分
' ********************************************************
Public Function 前年度データ取得()
frmMain.lst進行状況.AddItem ("前年度データ取得開始")
Call TargetName.RemoveAll
' *******************************
' SQL作成
' *******************************
SqlQuery = "select * from Q_取得単位数確認用,V_現役学生,Q_単位"
SqlQuery = SqlQuery & " where Q_取得単位数確認用.コード = V_現役学生.コード"
SqlQuery = SqlQuery & " and Q_取得単位数確認用.コード = CD"
SqlQuery = SqlQuery & " and 取得単位数 != 0"
SqlQuery = SqlQuery & " and コース = '" & frmMain.cmbコース.Text & "'"
SqlQuery = SqlQuery & " order by Q_取得単位数確認用.コード"
' *******************************
' レコードセット取得
' *******************************
If Not DB.lbDBGet(Cn, Rs, SqlQuery, False) Then
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
MsgBox ("対象データが存在しませんでした (前年度データ取得)")
Exit Function
End If
' *******************************
' ベースBook を開く
' *******************************
Set MyBook = EXCEL.ExcelOpen(TargetExcel)
' *******************************
' ベースSheet を選択
' *******************************
Call EXCEL.ExcelSelectSheet(MyBook, "Sheet1")
' *******************************
' ベースSheet を最初の名前でCOPY
' *******************************
Call EXCEL.ExcelCopySheet(MyBook, "Sheet1", Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
KeyName = Rs.Fields("氏名").Value
' *******************************
' ブレイクキーの設定
' *******************************
BreakMain = Rs.Fields("コード").Value
' *******************************
' 初回フラグ
' *******************************
bFirst = True
Dim n春集中 As Long
Dim CurData As ListBox
n春集中 = Rs.Fields("春集中").Value
' *******************************
' ループ処理
' *******************************
Do While Not Rs.EOF
frmMain.Refresh
If bFirst Then
bFirst = False
' *******************************
' タイトル部分のセット
' *******************************
MyBook.ActiveSheet.Cells(4, 3).Value = Rs.Fields("コード").Value
MyBook.ActiveSheet.Cells(6, 3).Value = Rs.Fields("氏名").Value
Else
' *******************************
' ブレイク処理
' *******************************
If BreakMain <> Rs.Fields("コード").Value Then
If n春集中 <> 0 Then
MyBook.ActiveSheet.Cells(nRow, 2).Value = "春集中講座"
MyBook.ActiveSheet.Cells(nRow, 5).Value = n春集中
nRow = nRow + 1
End If
' *******************************
' 新しいブックの作成
' *******************************
Call EXCEL.ExcelCopySheet(MyBook, "Sheet1", Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
frmMain.lst進行状況.Selected(frmMain.lst進行状況.ListCount - 1) = True
TargetName.Add KeyName, nRow
KeyName = Rs.Fields("氏名").Value
' *******************************
' タイトル部分のセット
' *******************************
MyBook.ActiveSheet.Cells(4, 3).Value = Rs.Fields("コード").Value
MyBook.ActiveSheet.Cells(6, 3).Value = Rs.Fields("氏名").Value
' *******************************
' 初期明細行位置
' *******************************
nRow = 10
End If
End If
' *******************************
' 明細のセット
' *******************************
MyBook.ActiveSheet.Cells(nRow, 2).Value = Rs.Fields("科目名").Value
MyBook.ActiveSheet.Cells(nRow, 5).Value = Rs.Fields("取得単位数").Value
nRow = nRow + 1
' *******************************
' ブレイクキーの保存
' *******************************
BreakMain = Rs.Fields("コード").Value
n春集中 = Rs.Fields("春集中").Value
' *******************************
' 次データの読込み
' *******************************
Rs.MoveNext
Loop
Call DB.lbDBClose(Rs)
If n春集中 <> 0 Then
MyBook.ActiveSheet.Cells(nRow, 2).Value = "春集中講座"
MyBook.ActiveSheet.Cells(nRow, 5).Value = n春集中
nRow = nRow + 1
End If
TargetName.Add KeyName, nRow
End Function
' ********************************************************
' 今年分前期
' ********************************************************
Public Function 今年分前期データ取得()
Dim SavKname As String
Dim SavSeiseki As String
Dim SavTani As String
frmMain.lst進行状況.AddItem ("今年分前期データ取得開始")
' *******************************
' SQL作成
' *******************************
SqlQuery = "select "
SqlQuery = SqlQuery & "学生コード"
SqlQuery = SqlQuery & ",年月日"
SqlQuery = SqlQuery & ",時限"
SqlQuery = SqlQuery & ",FLG"
SqlQuery = SqlQuery & ",科目"
SqlQuery = SqlQuery & ",氏名"
SqlQuery = SqlQuery & ",コース"
SqlQuery = SqlQuery & ",点数"
SqlQuery = SqlQuery & ",評価"
SqlQuery = SqlQuery & ",名称,数値2"
SqlQuery = SqlQuery & " From TR_出席, V_現役学生, TR_成績, V_科目"
SqlQuery = SqlQuery & " Where"
SqlQuery = SqlQuery & " 学生コード = V_現役学生.コード"
SqlQuery = SqlQuery & " and '(' + コース + ') ' + 氏名 = 学生"
SqlQuery = SqlQuery & " and 科目 = 科目コード"
SqlQuery = SqlQuery & " and 科目 = V_科目.コード"
SqlQuery = SqlQuery & " and 年月日 between '20020401' and '20020731'"
SqlQuery = SqlQuery & " and (科目 != 27 or (科目 = 27 and コース = 'BS'))"
SqlQuery = SqlQuery & " and コース = '" & frmMain.cmbコース.Text & "'"
SqlQuery = SqlQuery & " Order By"
SqlQuery = SqlQuery & " 学生コード,科目"
' *******************************
' レコードセット取得
' *******************************
If Not DB.lbDBGet(Cn, Rs, SqlQuery, False) Then
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
MsgBox ("対象データが存在しませんでした (前年度データ取得)")
Exit Function
End If
' *******************************
' ベースSheet を選択
' *******************************
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
KeyName = Rs.Fields("氏名").Value
' *******************************
' 名前表示
' *******************************
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
' *******************************
' ブレイクキーの設定
' *******************************
BreakCode = Rs.Fields("学生コード").Value & Rs.Fields("科目").Value
BreakMain = Rs.Fields("学生コード").Value
SavKname = Rs.Fields("名称").Value
SavSeiseki = Rs.Fields("評価").Value
SavTani = Rs.Fields("数値2").Value
' *******************************
' 初回フラグ
' *******************************
bFirst = True
Dim CurData As ListBox
' *******************************
' ループ処理
' *******************************
Do While Not Rs.EOF
frmMain.Refresh
If bFirst Then
bFirst = False
Else
' *******************************
' ブレイク処理
' *******************************
If BreakCode <> Rs.Fields("学生コード").Value & Rs.Fields("科目").Value Then
' *******************************
' 新しいブックの作成
' *******************************
MyBook.ActiveSheet.Cells(nRow, 2).Value = SavKname
MyBook.ActiveSheet.Cells(nRow, 5).Value = SavTani
MyBook.ActiveSheet.Cells(nRow, 6).Value = SavSeiseki
nRow = nRow + 1
End If
If BreakMain <> Rs.Fields("学生コード").Value Then
' *******************************
' 新しいブックの作成
' *******************************
TargetName(KeyName) = nRow
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
frmMain.lst進行状況.Selected(frmMain.lst進行状況.ListCount - 1) = True
KeyName = Rs.Fields("氏名").Value
End If
End If
' *******************************
' ブレイクキーの保存
' *******************************
BreakCode = Rs.Fields("学生コード").Value & Rs.Fields("科目").Value
BreakMain = Rs.Fields("学生コード").Value
SavKname = Rs.Fields("名称").Value
SavSeiseki = Rs.Fields("評価").Value
SavTani = Rs.Fields("数値2").Value
' *******************************
' 次データの読込み
' *******************************
Rs.MoveNext
Loop
TargetName(KeyName) = nRow
End Function
' ********************************************************
' 今年分後期
' ********************************************************
Public Function 今年分後期データ取得()
frmMain.lst進行状況.AddItem ("今年分後期データ取得開始")
' *******************************
' SQL作成
' *******************************
SqlQuery = "select * from V_選択科目学生 "
SqlQuery = SqlQuery & " where コース = '" & frmMain.cmbコース.Text & "'"
SqlQuery = SqlQuery & " and 終了日 >= '20030201'"
SqlQuery = SqlQuery & " and 開始日 <= '20021101'"
SqlQuery = SqlQuery & " order by 学生コード"
' *******************************
' レコードセット取得
' *******************************
If Not DB.lbDBGet(Cn, Rs, SqlQuery, False) Then
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
MsgBox ("対象データが存在しませんでした (前年度データ取得)")
Exit Function
End If
' *******************************
' ベースSheet を選択
' *******************************
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
KeyName = Rs.Fields("氏名").Value
' *******************************
' 名前表示
' *******************************
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
' *******************************
' ブレイクキーの設定
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 初回フラグ
' *******************************
bFirst = True
' *******************************
' ループ処理
' *******************************
Do While Not Rs.EOF
frmMain.Refresh
If bFirst Then
bFirst = False
Else
' *******************************
' ブレイク処理
' *******************************
If BreakMain <> Rs.Fields("学生コード").Value Then
' *******************************
' 新しいブックの作成
' *******************************
TargetName(KeyName) = nRow
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
frmMain.lst進行状況.Selected(frmMain.lst進行状況.ListCount - 1) = True
KeyName = Rs.Fields("氏名").Value
End If
End If
' *******************************
' 明細のセット
' *******************************
MyBook.ActiveSheet.Cells(nRow, 2).Value = Rs.Fields("名称").Value
MyBook.ActiveSheet.Cells(nRow, 5).Value = Rs.Fields("数値3").Value _
+ Rs.Fields("数値4").Value
nRow = nRow + 1
' *******************************
' ブレイクキーの保存
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 次データの読込み
' *******************************
Rs.MoveNext
Loop
Call DB.lbDBClose(Rs)
TargetName(KeyName) = nRow
' *******************************
' SQL作成
' *******************************
SqlQuery = "select * from V_選択科目学生 "
SqlQuery = SqlQuery & " where コース = '" & frmMain.cmbコース.Text & "'"
SqlQuery = SqlQuery & " and 終了日 < '20030101'"
SqlQuery = SqlQuery & " order by 学生コード"
' *******************************
' レコードセット取得
' *******************************
If Not DB.lbDBGet(Cn, Rs, SqlQuery, False) Then
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
MsgBox ("対象データが存在しませんでした (前年度データ取得)")
Exit Function
End If
' *******************************
' ベースSheet を選択
' *******************************
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
KeyName = Rs.Fields("氏名").Value
' *******************************
' 名前表示
' *******************************
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
' *******************************
' ブレイクキーの設定
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 初回フラグ
' *******************************
bFirst = True
' *******************************
' ループ処理
' *******************************
Do While Not Rs.EOF
frmMain.Refresh
If bFirst Then
bFirst = False
Else
' *******************************
' ブレイク処理
' *******************************
If BreakMain <> Rs.Fields("学生コード").Value Then
' *******************************
' 新しいブックの作成
' *******************************
TargetName(KeyName) = nRow
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
frmMain.lst進行状況.Selected(frmMain.lst進行状況.ListCount - 1) = True
KeyName = Rs.Fields("氏名").Value
End If
End If
' *******************************
' 明細のセット
' *******************************
MyBook.ActiveSheet.Cells(nRow, 2).Value = Rs.Fields("名称").Value
MyBook.ActiveSheet.Cells(nRow, 5).Value = Rs.Fields("数値3").Value _
+ Rs.Fields("数値4").Value
nRow = nRow + 1
' *******************************
' ブレイクキーの保存
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 次データの読込み
' *******************************
Rs.MoveNext
Loop
Call DB.lbDBClose(Rs)
TargetName(KeyName) = nRow
' *******************************
' SQL作成
' *******************************
SqlQuery = "select * from V_選択科目学生 "
SqlQuery = SqlQuery & " where コース = '" & frmMain.cmbコース.Text & "'"
SqlQuery = SqlQuery & " and 開始日 >= '20030101'"
SqlQuery = SqlQuery & " order by 学生コード"
' *******************************
' レコードセット取得
' *******************************
If Not DB.lbDBGet(Cn, Rs, SqlQuery, False) Then
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
MsgBox ("対象データが存在しませんでした (前年度データ取得)")
Exit Function
End If
' *******************************
' ベースSheet を選択
' *******************************
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
KeyName = Rs.Fields("氏名").Value
' *******************************
' 名前表示
' *******************************
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
' *******************************
' ブレイクキーの設定
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 初回フラグ
' *******************************
bFirst = True
' *******************************
' ループ処理
' *******************************
Do While Not Rs.EOF
frmMain.Refresh
If bFirst Then
bFirst = False
Else
' *******************************
' ブレイク処理
' *******************************
If BreakMain <> Rs.Fields("学生コード").Value Then
' *******************************
' 新しいブックの作成
' *******************************
TargetName(KeyName) = nRow
nRow = TargetName(Rs.Fields("氏名").Value)
Call EXCEL.ExcelSelectSheet(MyBook, Rs.Fields("氏名").Value)
frmMain.lst進行状況.AddItem (Rs.Fields("氏名").Value)
frmMain.lst進行状況.Selected(frmMain.lst進行状況.ListCount - 1) = True
KeyName = Rs.Fields("氏名").Value
End If
End If
' *******************************
' 明細のセット
' *******************************
MyBook.ActiveSheet.Cells(nRow, 2).Value = Rs.Fields("名称").Value
MyBook.ActiveSheet.Cells(nRow, 5).Value = Rs.Fields("数値3").Value _
+ Rs.Fields("数値4").Value
nRow = nRow + 1
' *******************************
' ブレイクキーの保存
' *******************************
BreakMain = Rs.Fields("学生コード").Value
' *******************************
' 次データの読込み
' *******************************
Rs.MoveNext
Loop
Call DB.lbDBClose(Rs)
Set Rs = Nothing
Call DB.lbDBClose(Cn)
Set Cn = Nothing
End Function
| |