<% ' %> <% main() Sub main() If Not(SessionCheck()) Then Exit Sub End If 'INP_DATA Dim EnshuKubun Dim SaveStatus 'CHK_DATA Dim F_CHK Dim F_ERR Dim S_MSG Dim SysPath Dim FilePath Dim FileCheck Dim Action Dim Checkall Dim Checksitei Dim RouteType Dim Ng , ErrMSG , rsts, tmp Dim Target Dim Query Dim Content Dim TableName '保存処理 F_CHK = "" F_ERR = "NG" Dim Rireki Rireki = Replace(Request("Rireki"), " ", "") '削除する履歴 'Response.Write(Rireki) 'Exit Sub Dim Mode Mode = Request("Mode") '演習削除時の自動バックアップ用フラグ Target = Request("Target") EnshuKubun = Request("EnshuKubun") Server.ScriptTimeout = 1200 Dim BackUpPath, EnshuFolder, DateFolder BackUpPath = GetBackupPath() EnshuFolder = Target DateFolder = SetTimeYYMMDDHHMM2(Now()) '演習CDフォルダの作成 Dim fso, fnm , fid , sid , tnm , dnm Set fso = Server.CreateObject("Scripting.FileSystemObject") If Not(fso.FolderExists(BackUpPath & "\" & EnshuFolder)) Then Set fid = fso.GetFolder(BackUpPath) Set sid = fid.SubFolders sid.Add EnshuFolder End If If Mode = "Rireki" And Rireki <> "" Then '履歴の削除 Dim TmpRireki TmpRireki = Split(Rireki, ",") Dim Cnt For Cnt = 0 To UBound(TmpRireki) DateFolder = TmpRireki(Cnt) '年月日フォルダの存在チェック If fso.FolderExists(BackUpPath & "\" & EnshuFolder & "\" & DateFolder) Then Dim ts Set ts = fso.OpenTextFile(BackUpPath & "\" & EnshuFolder & "\" & DateFolder & "\DELETE.txt", 2, True) '削除扱いを示すテキストファイル作成 ts.write DateFolder & vbCrLf ts.Close End If Next Else 'バックアップ '年月日フォルダの作成 If Not(fso.FolderExists( BackUpPath & "\" & EnshuFolder & "\" & DateFolder)) Then Set fid = fso.GetFolder( BackUpPath & "\" & EnshuFolder) Set sid = fid.SubFolders sid.Add DateFolder End If FilePath = BackUpPath & "\" & EnshuFolder & "\" & DateFolder Response.Write(FilePath & "
" & vbCrLf) If Not(fso.FolderExists(FilePath)) Then S_MSG = S_MSG & chr(13) & " 保存するフォルダが作成できませんでした。 処理を中止します。" & SysPath & "/" & FilePath F_CHK = F_ERR Exit Sub End If ''''''''''フォルダの作成ここまで ''''''''''データのバックアップここから Query = "select * from dbo.sysobjects where xtype = 'U' and left(name,1)='T' order by name" Set Content = OpenQuery2(Query) Do While not Content.EOF TableName = Content.Fields("name").value tmp = s_csv_save(FilePath, Target, TableName) If (F_CHK = F_ERR) Then Exit Do End If Content.MoveNext Loop ''''''''''データのバックアップここまで End If If Mode = "EnshuDelete" Then '演習削除時の自動バックアップの場合(071001小野) Response.Redirect("/" & HomeAlias & "/admin/enshu/fm_enshu1_bin.asp?Action=4&EnshuCD=" & Target) ElseIf Mode = "Rireki" Then '履歴削除時 Response.Redirect("fm_enshu_save.asp?RouteType=&Target=" & Target & "&ErrMSG=履歴を削除しました") ElseIf S_MSG <> "" Then Response.Redirect("fm_enshu_save_view.asp?DateFolder=" & DateFolder & "&Target=" & Target & "&ErrMSG=" & S_MSG) Else Response.Redirect("fm_enshu_save_view.asp?DateFolder=" & DateFolder & "&Target=" & Target & "&ErrMSG=処理終了しました") End If End Sub '*------------------------------------------* '*抽出&セーブ '*------------------------------------------* Function s_csv_save(FilePath, Target, TableName) 'On Error Resume Next Dim ii Dim CsvNm Dim Query Dim Content1 Dim ContentSub Dim fso Dim csv Dim wjyoken Dim w_cnt , w_val , w_rec , x 'CSVファイルの削除 CsvNm = FilePath & "\" & TableName & ".CSV" Set fso = Server.CreateObject("Scripting.FileSystemObject") If (fso.FileExists(CsvNm)) Then fso.DeleteFile CsvNm, true End If '対象データ抽出 If Target = "all" Then Query = "SELECT * " Query = Query & " FROM [" & TableName & "] " Query = Query & " Where システムCD ='" & GB_SystemCD & "'" '(080407追加:小野) Else If TableName = "TC1システムM" Then Query = "SELECT * " Query = Query & " FROM [" & TableName & "] " Query = Query & " Where システムCD ='" & GB_SystemCD & "'" ElseIf left(TableName,2) = "TG" OR left(TableName,3) = "TKH" OR left(TableName,3) = "TSA" OR left(TableName,3) = "TSB" OR left(TableName,3) = "TSC" OR left(TableName,3) = "TSK" OR left(TableName,2) = "TT" Then Query = "SELECT * " Query = Query & " FROM [" & TableName & "] " Query = Query & " Where システムCD ='" & GB_SystemCD & "' And 演習CD ='" & Target & "'" ElseIf left(TableName,3) = "TC2" OR left(TableName,3) = "TC4" OR left(TableName,3) = "TC6" OR left(TableName,3) = "TDA" Then Query = "SELECT * " Query = Query & " FROM [" & TableName & "] " Query = Query & " Where システムCD ='" & GB_SystemCD & "' And 演習CD ='" & Target & "'" 'TC4演習許可学生Mで参加許可されている学生のグループが必要なので大幅に改修(090617小野) ElseIf TableName = "TC3学生グループM" Then Dim GroupAry ReDim GroupAry(0) 'TC4演習許可学生Mの参加許可学生からグループを逆引きし配列に取得 Query = " SELECT TC5学生M.学生グループCD " Query = Query & " FROM TC5学生M " Query = Query & " INNER JOIN TC4演習許可学生M " Query = Query & " ON TC4演習許可学生M.システムCD = TC5学生M.システムCD " Query = Query & " AND TC4演習許可学生M.学生番号 = TC5学生M.学生番号 " Query = Query & " WHERE TC4演習許可学生M.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC4演習許可学生M.演習CD = '" & Target & "' " Query = Query & " GROUP BY TC5学生M.学生グループCD " Set Content1 = OpenQuery2(Query) Do While Not(Content1.EOF OR Content1.BOF) Redim PreServe GroupAry(UBound(GroupAry) + 1) GroupAry(UBound(GroupAry)) = "" & Content1.Fields("学生グループCD") Content1.MoveNext Loop 'TC4演習許可学生グループMから参加許可グループを配列に取得 Query = " SELECT TC4演習許可学生グループM.学生グループCD " Query = Query & " FROM TC4演習許可学生グループM " Query = Query & " WHERE TC4演習許可学生グループM.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC4演習許可学生グループM.演習CD = '" & Target & "' " Query = Query & " GROUP BY TC4演習許可学生グループM.学生グループCD " Set Content1 = OpenQuery2(Query) Do While Not(Content1.EOF OR Content1.BOF) Redim PreServe GroupAry(UBound(GroupAry) + 1) GroupAry(UBound(GroupAry)) = "" & Content1.Fields("学生グループCD") Content1.MoveNext Loop 'グループCD配列を抽出条件にする If UBound(GroupAry) > 0 Then Query = "SELECT TC3学生グループM.* " Query = Query & " FROM TC3学生グループM " Query = Query & " WHERE TC3学生グループM.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC3学生グループM.学生グループCD IN ( " For ii = 1 To UBound(GroupAry) If ii > 1 Then Query = Query & " , " End If Query = Query & " '" & GroupAry(ii) & "' " Next Query = Query & " ) " Query = Query & " ORDER BY TC3学生グループM.学生グループCD " Else '参加グループ無しの場合の例外対策 Query = "SELECT TC3学生グループM.*" Query = Query & " FROM TC3学生グループM" Query = Query & " INNER JOIN TC4演習許可学生グループM ON " Query = Query & " TC3学生グループM.学生グループCD = TC4演習許可学生グループM.学生グループCD" Query = Query & " WHERE TC4演習許可学生グループM.システムCD ='" & GB_SystemCD & "' And TC4演習許可学生グループM.演習CD = '" & Target & "'" End If 'TC4演習許可学生Mで参加許可されている学生が必要なので大幅に改修(090617小野) ElseIf TableName = "TC5学生M" Then Dim SeitoAry ReDim SeitoAry(0) 'TC4演習許可学生Mの参加許可学生を配列に取得 Query = " SELECT TC4演習許可学生M.学生番号 " Query = Query & " FROM TC4演習許可学生M " Query = Query & " WHERE TC4演習許可学生M.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC4演習許可学生M.演習CD = '" & Target & "' " Query = Query & " GROUP BY TC4演習許可学生M.学生番号 " Set Content1 = OpenQuery2(Query) Do While Not(Content1.EOF OR Content1.BOF) Redim PreServe SeitoAry(UBound(SeitoAry) + 1) SeitoAry(UBound(SeitoAry)) = "" & Content1.Fields("学生番号") Content1.MoveNext Loop 'TC4演習許可学生グループMの参加許可グループから学生を配列に取得 Query = " SELECT TC5学生M.学生番号 " Query = Query & " FROM TC5学生M " Query = Query & " INNER JOIN TC4演習許可学生グループM " Query = Query & " ON TC4演習許可学生グループM.システムCD = TC5学生M.システムCD " Query = Query & " AND TC4演習許可学生グループM.学生グループCD = TC5学生M.学生グループCD " Query = Query & " WHERE TC4演習許可学生グループM.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC4演習許可学生グループM.演習CD = '" & Target & "' " Query = Query & " GROUP BY TC5学生M.学生番号 " Set Content1 = OpenQuery2(Query) Do While Not(Content1.EOF OR Content1.BOF) Redim PreServe SeitoAry(UBound(SeitoAry) + 1) SeitoAry(UBound(SeitoAry)) = "" & Content1.Fields("学生番号") Content1.MoveNext Loop '学生番号配列を抽出条件にする If UBound(SeitoAry) > 0 Then Query = "SELECT TC5学生M.* " Query = Query & " FROM TC5学生M " Query = Query & " WHERE TC5学生M.システムCD ='" & GB_SystemCD & "' " Query = Query & " AND TC5学生M.学生番号 IN ( " For ii = 1 To UBound(SeitoAry) If ii > 1 Then Query = Query & " , " End If Query = Query & " '" & SeitoAry(ii) & "' " Next Query = Query & " ) " Query = Query & " ORDER BY TC5学生M.学生番号 " Else '参加学生無しの場合の例外対策 Query = "SELECT TC5学生M.*" Query = Query & " FROM TC5学生M" Query = Query & " INNER JOIN TC3学生グループM" Query = Query & " ON TC5学生M.学生グループCD = TC3学生グループM.学生グループCD" Query = Query & " INNER JOIN TC4演習許可学生グループM" Query = Query & " ON TC3学生グループM.学生グループCD = TC4演習許可学生グループM.学生グループCD" Query = Query & " WHERE TC4演習許可学生グループM.システムCD ='" & GB_SystemCD & "' And TC4演習許可学生グループM.演習CD = '" & Target & "'" End If Else ' Query = "SELECT * " ' Query = Query & " FROM [" & TableName & "] " ' Query = Query & " Where システムCD ='" & GB_SystemCD & "'" Response.Write("例外:" & TableName & "
") End If End If If Query <> "" Then Response.Write("") DebugQuery(Query) Response.Write("
" & vbCrLf) Set Content1 = OpenQuery2(Query) Set csv = fso.OpenTextFile(CsvNm, 8, True, 0) w_cnt = 0 Do While not Content1.EOF w_cnt = w_cnt + 1 w_rec = "" for x = 0 to Content1.Fields.count-1 w_val = Content1.Fields(x).value If VarType(w_val) = 1 Then w_val = "null" ElseIf VarType(w_val) = 2 Or VarType(w_val) = 3 Or VarType(w_val) = 4 Or VarType(w_val) = 5 Or VarType(w_val) = 6 Then Else w_val = "'" & Replace("" & w_val, vbCrLf, "") & "'" End If If w_rec <> "" Then w_rec = w_rec & "," End If w_rec = w_rec & w_val Next err = 0 csv.WriteLine(w_rec) If (err) Then S_MSG = S_MSG & chr(13) & TableName & " が保存できませんでした。 処理を中止します。 cnt=" & w_cnt & " " & w_rec F_CHK = F_ERR Exit Function End If Content1.MoveNext Loop Content1.close csv.close Set csv = Nothing End If End Function %>