Imports System.Data.OracleClient
Imports System.Data
Imports System.Diagnostics
Imports log4net
Imports log4net.Config
Public Class DBTool
Private connstr As String = ""
Private showSQL As Boolean = False
Private mExecutionTime As TimeSpan
Public Property ExecutionTime As TimeSpan
Get
Return mExecutionTime
End Get
Private Set(ByVal value As TimeSpan)
mExecutionTime = value
End Set
End Property
Public Sub New(ByVal connectionString As String)
connstr = connectionString
End Sub
Public Sub New(ByVal show As Boolean)
showSQL = show
connstr = Labs.getConnStr()
End Sub
Public Sub New()
connstr = Labs.getConnStr()
End Sub
Private Function getDataTable(ByVal SQLString As String, ByVal SQLParameter As Dictionary(Of String, Object), ByVal arr As List(Of Dictionary(Of String, Object)), ByVal type As Integer) As DataTable
Dim sw As New Stopwatch()
Dim dtable As New DataTable()
Dim sqllist As New List(Of String)
Try
Using conn As New OracleConnection(connstr)
conn.Open()
If type = 1 Then
Using da As New OracleDataAdapter(SQLString, conn)
sw.Start()
If Not SQLParameter Is Nothing Then
For Each tempParameter As KeyValuePair(Of String, Object) In SQLParameter
da.SelectCommand.Parameters.AddWithValue(tempParameter.Key, tempParameter.Value)
Next tempParameter
End If
sqllist.Add(getRealSql(da.SelectCommand))
da.Fill(dtable)
sw.Stop()
ExecutionTime = sw.Elapsed
If ExecutionTime.TotalSeconds > 3.0R Then
LogManager.GetLogger("SqlOverTime").Warn(ExecutionTime.ToString + "秒 " + getRealSql(da.SelectCommand))
End If
End Using
Else
Using cmd As New OracleCommand(SQLString, conn)
If Not arr Is Nothing Then
sw.Start()
Dim trn = cmd.Connection.BeginTransaction()
cmd.Transaction = trn
Try
For Each dic As Dictionary(Of String, Object) In arr
For Each tempParameter As KeyValuePair(Of String, Object) In dic
cmd.Parameters.AddWithValue(tempParameter.Key, tempParameter.Value)
Next tempParameter
sqllist.Add(getRealSql(cmd))
cmd.ExecuteNonQuery()
Next dic
trn.Commit()
Catch ex As Exception
trn.Rollback()
Throw ex
End Try
sw.Stop()
ExecutionTime = sw.Elapsed
If ExecutionTime.TotalSeconds > 3.0R Then
LogManager.GetLogger("SqlOverTime").Warn(ExecutionTime.ToString + "秒 " + getRealSql(cmd))
End If
ElseIf Not SQLParameter Is Nothing Then
sw.Start()
For Each tempParameter As KeyValuePair(Of String, Object) In SQLParameter
cmd.Parameters.AddWithValue(tempParameter.Key, tempParameter.Value)
Next tempParameter
sqllist.Add(getRealSql(cmd))
cmd.ExecuteNonQuery()
sw.Stop()
ExecutionTime = sw.Elapsed
If ExecutionTime.TotalSeconds > 3.0R Then
LogManager.GetLogger("SqlOverTime").Warn(ExecutionTime.ToString + "秒 " + getRealSql(cmd))
End If
End If
End Using
End If
conn.Close()
End Using
If showSQL Then
For Each tmp_sql In sqllist
Labs.saveLog("show Sql:" + tmp_sql)
Next
End If
Catch ex As Exception
For Each tmp_sql In sqllist
Labs.saveLog("Error Sql:" + tmp_sql)
Next
Throw ex
End Try
Return dtable
End Function
<Obsolete("這個Method已被DataHelper.Count取代")>
Function queryCount(ByVal SQLString As String) As Integer
Return getDataTable(SQLString, Nothing, Nothing, 1).Rows(0)(0)
End Function
<Obsolete("這個Method已被DataHelper.DataTable取代")>
Function queryData(ByVal SQLString As String) As DataTable
Return getDataTable(SQLString, Nothing, Nothing, 1)
End Function
<Obsolete("這個Method已被DataHelper.Count取代")>
Function queryCount(ByVal SQLString As String, ByVal SQLParameter As Dictionary(Of String, Object)) As Integer
Return getDataTable(SQLString, SQLParameter, Nothing, 1).Rows(0)(0)
End Function
<Obsolete("這個Method已被DataHelper.DataTable取代")>
Function queryData(ByVal SQLString As String, ByVal SQLParameter As Dictionary(Of String, Object)) As DataTable
Return getDataTable(SQLString, SQLParameter, Nothing, 1)
End Function
<Obsolete("這個Method已被DataHelper.DataScalar取代")>
Function queryScalar(ByVal SQLString As String) As String
Try
Using conn As New OracleConnection(connstr)
conn.Open()
Using da As New OracleDataAdapter(SQLString, conn)
Dim dtable As New DataTable()
da.Fill(dtable)
If dtable.Rows.Count = 0 Then
Return String.Empty
Else
Return dtable.Rows(0)(0).ToString
End If
End Using
End Using
Catch ex As Exception
Throw ex
End Try
End Function
<Obsolete("這個Method已被DataHelper.DataScalar取代")>
Function queryScalar(ByVal SQLString As String, ByVal SQLParameter As Dictionary(Of String, Object)) As String
Try
Using conn As New OracleConnection(connstr)
conn.Open()
Using da As New OracleDataAdapter(SQLString, conn)
Dim dtable As New DataTable()
For Each tempParameter As KeyValuePair(Of String, Object) In SQLParameter
da.SelectCommand.Parameters.AddWithValue(tempParameter.Key, tempParameter.Value)
Next tempParameter
da.Fill(dtable)
If dtable.Rows.Count = 0 Then
Return ""
Else
Return dtable.Rows(0)(0).ToString
End If
End Using
End Using
Catch ex As Exception
Throw ex
End Try
End Function
Public Function ExecuteScalar(sql As String) As String
Try
Using conn As New OracleConnection(connstr)
conn.Open()
Using cmd As New OracleCommand(sql, conn)
Return cmd.ExecuteScalar() & ""
End Using
End Using
Finally
End Try
End Function
<Obsolete("這個Method已被DataHelper.DataScalar取代")>
Public Function ExecuteScalar(cmdType As CommandType, cmdText As String, ParamArray cmdParms As OracleParameter()) As Object
Dim cmd As New OracleCommand()
Using conn As New OracleConnection(connstr)
PrepareCommand(cmd, conn, Nothing, cmdType, cmdText, cmdParms)
Dim val As Object = cmd.ExecuteScalar()
cmd.Parameters.Clear()
Return val
End Using
End Function
<Obsolete("這個Method已被DataHelper.DataReader和DataHelper.GetDataReader()取代")>
Public Function ExecuteReader(cmdType As CommandType, cmdText As String, ParamArray cmdParms As OracleParameter()) As OracleDataReader
Dim cmd As New OracleCommand()
Dim conn As New OracleConnection(connstr)
Try
PrepareCommand(cmd, conn, Nothing, cmdType, cmdText, cmdParms)
Dim rdr As OracleDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
cmd.Parameters.Clear()
Return rdr
Catch
conn.Close()
Throw
End Try
End Function
<Obsolete("這個Method已被DataHelper.SqlCommand取代")>
Private Shared Sub PrepareCommand(cmd As OracleCommand, conn As OracleConnection, trans As OracleTransaction, cmdType As CommandType, cmdText As String, cmdParms As OracleParameter())
If conn.State <> ConnectionState.Open Then
conn.Open()
End If
cmd.Connection = conn
cmd.CommandText = cmdText
If trans IsNot Nothing Then
cmd.Transaction = trans
End If
cmd.CommandType = cmdType
If cmdParms IsNot Nothing Then
For Each parm As OracleParameter In cmdParms
cmd.Parameters.Add(parm)
Next
End If
End Sub
<Obsolete("這個Method已被DataHelper.ExecuteNonQuery()取代")>
Sub executeNonQuery(ByVal SQLString As String, ByVal SQLParameter As Dictionary(Of String, Object))
Try
getDataTable(SQLString, SQLParameter, Nothing, 2)
Catch ex As Exception
Throw ex
End Try
End Sub
<Obsolete("這個Method已被DataHelper.ExecuteNonQuery()取代")>
Sub executeNonQuery(ByVal SQLString As String, ByVal arr As List(Of Dictionary(Of String, Object)))
Try
getDataTable(SQLString, Nothing, arr, 2)
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub setDDL(ByRef ddlobj As DropDownList, ByVal sql As String, ByVal SQLParameter As Dictionary(Of String, Object), ByVal textcol As String, ByVal valcol As String)
ddlobj.DataSource = queryData(sql, SQLParameter)
ddlobj.DataTextField = textcol
ddlobj.DataValueField = valcol
ddlobj.DataBind()
End Sub
Public Sub setDDL(ByRef ddlobj As DropDownList, ByVal sql As String, ByVal textcol As String, ByVal valcol As String)
ddlobj.DataSource = queryData(sql)
ddlobj.DataTextField = textcol
ddlobj.DataValueField = valcol
ddlobj.DataBind()
End Sub
Public Sub setDDL(ByRef ddlobj As DropDownList, ByVal Score As Dictionary(Of String, String), ByVal textcol As String, ByVal valcol As String)
ddlobj.DataSource = Score
ddlobj.DataTextField = textcol
ddlobj.DataValueField = valcol
ddlobj.DataBind()
End Sub
Public Sub setLBX(ByRef lbxobj As ListBox, ByVal sql As String, ByVal SQLParameter As Dictionary(Of String, Object), ByVal textcol As String, ByVal valcol As String)
lbxobj.DataSource = queryData(sql, SQLParameter)
lbxobj.DataTextField = textcol
lbxobj.DataValueField = valcol
lbxobj.DataBind()
End Sub
Public Sub setLBX(ByRef lbxobj As ListBox, ByVal sql As String, ByVal textcol As String, ByVal valcol As String)
lbxobj.DataSource = queryData(sql)
lbxobj.DataTextField = textcol
lbxobj.DataValueField = valcol
lbxobj.DataBind()
End Sub
Public Sub setRDBList(ByRef rdblistobj As RadioButtonList, ByVal sql As String, ByVal SQLParameter As Dictionary(Of String, Object), ByVal textcol As String, ByVal valcol As String)
rdblistobj.DataSource = queryData(sql, SQLParameter)
rdblistobj.DataTextField = textcol
rdblistobj.DataValueField = valcol
rdblistobj.DataBind()
End Sub
Public Sub setRDBList(ByRef rdblistobj As RadioButtonList, ByVal sql As String, ByVal textcol As String, ByVal valcol As String)
rdblistobj.DataSource = queryData(sql)
rdblistobj.DataTextField = textcol
rdblistobj.DataValueField = valcol
rdblistobj.DataBind()
End Sub
Public Sub setCBXList(ByRef cbxlistobj As CheckBoxList, ByVal sql As String, ByVal SQLParameter As Dictionary(Of String, Object), ByVal textcol As String, ByVal valcol As String)
cbxlistobj.DataSource = queryData(sql, SQLParameter)
cbxlistobj.DataTextField = textcol
cbxlistobj.DataValueField = valcol
cbxlistobj.DataBind()
End Sub
Public Sub setCBXList(ByRef cbxlistobj As CheckBoxList, ByVal sql As String, ByVal textcol As String, ByVal valcol As String)
cbxlistobj.DataSource = queryData(sql)
cbxlistobj.DataTextField = textcol
cbxlistobj.DataValueField = valcol
cbxlistobj.DataBind()
End Sub
Public Sub setPermissions(ByRef vo As PermissionsVo, ByRef req As HttpRequest, ByVal type As Integer)
Dim sql = " SELECT * FROM FXTMENU M WHERE MENUSNO=:MENUSNO AND UGROUPSNO = :UGROUPSNO "
Dim psdic As New Dictionary(Of String, Object)
Dim MENUSNO = ""
If (type = 1) Then
Dim menosno = 0
Integer.TryParse(req.QueryString("a"), menosno)
UserSession.MENUSNO = menosno
ElseIf (type = 2) Then
Dim x = req.ServerVariables
UserSession.PRE_PAGE = req.UrlReferrer.ToString()
ElseIf (type = 3) Then
End If
MENUSNO = UserSession.MENUSNO
psdic.Add("MENUSNO", MENUSNO)
psdic.Add("UGROUPSNO", UserSession.UGROUPSNO)
Dim dtable As DataTable = queryData(sql, psdic)
If (dtable.Rows.Count > 0) Then
vo.ISDELETE = dtable(0)("ISDELETE")
vo.ISINSERT = dtable(0)("ISINSERT")
vo.ISQUERY = dtable(0)("ISQUERY")
vo.ISUPDATE = dtable(0)("ISUPDATE")
vo.ISVIEW = dtable(0)("ISVIEW")
vo.MEMBNO = MENUSNO
End If
End Sub
Sub setDDL(p1 As String, ddlsql As String, p3 As String, p4 As String)
Throw New NotImplementedException
End Sub
Sub accessLog(ByVal MENUSNO As String, ByVal ISFAIL As Integer, ByVal ACCSCD As String, ByVal ACCSDESC As String _
, Optional UserId As String = "", Optional nPage As Page = Nothing)
Try
Dim dic As New Dictionary(Of String, Object)()
Dim sql As String = "INSERT INTO FXTACCSLOG (MENUSNO,USERSNO,UGROUPSNO,IP,ISFAIL,ACCSCD,ACCSDESC) " +
"VALUES(:MENUSNO,:USERSNO,:UGROUPSNO,:IP,:ISFAIL,:ACCSCD,:ACCSDESC )"
Dim ip As String
If Not nPage Is Nothing Then ip = nPage.Request.ServerVariables("REMOTE_ADDR").ToString
dic.Add(":MENUSNO", MENUSNO)
If MENUSNO = "-2" Then
dic.Add(":USERSNO", UserId)
dic.Add(":UGROUPSNO", -1)
dic.Add(":IP", nPage.Request.ServerVariables("REMOTE_ADDR").ToString)
Else
dic.Add(":USERSNO", UserSession.USERSNO)
dic.Add(":UGROUPSNO", UserSession.UGROUPSNO)
dic.Add(":IP", UserSession.IP)
End If
dic.Add(":ISFAIL", ISFAIL)
dic.Add(":ACCSCD", ACCSCD)
dic.Add(":ACCSDESC", ACCSDESC)
executeNonQuery(sql, dic)
Catch ex As Exception
Throw ex
End Try
End Sub
Function accessMailLog(ByVal SENDTOMAIL As String, ByVal MAILTITLE As String, ByVal CONTENT As String, ByVal ISFAIL As Integer, ByVal MEMO As String) As Boolean
Try
Dim dic As New Dictionary(Of String, Object)()
Dim sql As String = "INSERT INTO FXTMAILLOG (MAILLOGSNO,SENDTOMAIL,MAILTITLE,CONTENT,ISFAIL,MEMO) " +
"VALUES(FXTMAILLOG_SEQ.NEXTVAL,:SENDTOMAIL,:MAILTITLE,:CONTENT,:ISFAIL,:MEMO )"
dic.Add(":SENDTOMAIL", SENDTOMAIL)
dic.Add(":MAILTITLE", MAILTITLE)
dic.Add(":CONTENT", CONTENT)
dic.Add(":ISFAIL", ISFAIL)
dic.Add(":MEMO", MEMO)
executeNonQuery(sql, dic)
Catch ex As Exception
Throw ex
End Try
Return True
End Function
Function getRealSql(ByVal ocmd As OracleCommand) As String
Dim sql = ocmd.CommandText
For i = 0 To ocmd.Parameters.Count - 1
Dim tmp_op = ocmd.Parameters(i)
Dim tmp_p = ":" + tmp_op.ParameterName.ToString().Replace(":", "")
Dim name As String = If(
tmp_op.ParameterName.StartsWith(":"),
tmp_op.ParameterName,
":" & tmp_op.ParameterName
)
Dim value As String = If(
TypeOf tmp_op.Value Is Date,
String.Format(
"TO_DATE('{0}', '{1}')",
CType(tmp_op.Value, Date).ToString("yyyy/MM/dd HH:mm:ss"), "yyyy/mm/dd hh24:mi:ss"
),
String.Format("'{0}'", tmp_op.Value)
)
Dim pattern As String = String.Format("{0}(?=[\W])|{0}$", name)
sql = Regex.Replace(sql, pattern, value, RegexOptions.IgnoreCase)
Next
Return sql
End Function
Private Function getParameterValForOracle(ByVal op As OracleParameter) As String
Dim retval = ""
If IsDBNull(op.Value) Then
Return " NULL "
End If
Select Case op.DbType
Case DbType.Date
retval = "TO_DATE('" + CType(op.Value, Date).ToString("yyyy/MM/dd HH:mm:ss") + "','yyyy/mm/dd hh24:mi:ss') "
Case DbType.DateTime
retval = "TO_DATE('" + CType(op.Value, DateTime).ToString("yyyy/MM/dd HH:mm:ss") + "','yyyy/mm/dd hh24:mi:ss') "
Case DbType.DateTime2
retval = "TO_DATE('" + CType(op.Value, DateTime).ToString("yyyy/MM/dd HH:mm:ss") + "','yyyy/mm/dd hh24:mi:ss') "
Case Else
retval = "'" + op.Value.ToString() + "'"
End Select
Return retval
End Function
End Class
Public Sub InsertPackage(ByVal TSSNO As String, ByVal oTSGROUP As String, ByVal PERSONSNO As String)
Dim dbtool As New DBTool
Dim dic As New Dictionary(Of String, Object)
Dim list_dic As New List(Of Dictionary(Of String, Object))
Dim sql As String = ""
Dim strFXTTSTAT_sd As String = ""
dic.Clear()
dic.Add(":TSSNO", TSSNO)
Dim nTSGROUP = dbtool.queryScalar("SELECT MAX(TSGROUP)+1 FROM FXTTS ")
dic.Clear()
dic.Add(":TSGROUP", oTSGROUP)
Dim CYCLE As String = dbtool.queryScalar(" SELECT CYCLE FROM FXTTRAINING WHERE TSGROUP = :TSGROUP ", dic)
Dim addMonth As Integer = CInt(CYCLE)
Dim sDateT As Date = DateAdd("m", addMonth, DateTime.Now.ToString("yyyy-MM-dd"))
Dim TrainingSD = String.Format("{0:yyyy-MM-dd}", sDateT)
sql = "SELECT TSSNO FROM FXTTSS WHERE TSGROUP = :TSGROUP AND PERSONSNO = :PERSONSNO ORDER BY TSSNO "
dic.Clear()
dic.Add(":TSGROUP", oTSGROUP)
dic.Add(":PERSONSNO", PERSONSNO)
Dim aoTSsno As DataTable = dbtool.queryData(sql, dic)
Dim dic_aoTs_Date As New Dictionary(Of String, Object)
dic_aoTs_Date.Add(":TSSNO", aoTSsno.Rows(0)(0).ToString)
Dim SDATE As String = dbtool.queryScalar(" SELECT TO_CHAR(SDATETIME,'YYYY-MM-DD') FROM FXTTS WHERE TSSNO = :TSSNO ", dic_aoTs_Date)
Dim EDATE As String = dbtool.queryScalar(" SELECT TO_CHAR(EDATETIME,'YYYY-MM-DD') FROM FXTTS WHERE TSSNO = :TSSNO ", dic_aoTs_Date)
Dim sDateSum = DateDiff("D", SDATE, TrainingSD)
Dim eDateSum = DateDiff("D", EDATE, TrainingSD)
For i = 0 To aoTSsno.Rows.Count - 1
dic_aoTs_Date.Clear()
dic_aoTs_Date.Add(":TSSNO", aoTSsno.Rows(i)(0).ToString)
Dim aoTs_Date As DataTable = dbtool.queryData(" SELECT TO_CHAR(SDATETIME,'YYYY-MM-DD'),TO_CHAR(EDATETIME,'YYYY-MM-DD') FROM FXTTS WHERE TSSNO = :TSSNO ", dic_aoTs_Date)
Dim addSdate As Date = DateAdd("d", sDateSum, aoTs_Date.Rows(0)(0).ToString)
Dim addEdate As Date = DateAdd("d", eDateSum, aoTs_Date.Rows(0)(1).ToString)
Dim Ts_time As DataTable = dbtool.queryData("SELECT TO_CHAR(SDATETIME,'HH24:MI:SS'),TO_CHAR(EDATETIME,'HH24:MI:SS') FROM FXTTS WHERE TSSNO = :TSSNO ", dic_aoTs_Date)
Dim sDateTime As String = String.Format("{0:yyyy-MM-dd}", addSdate)
Dim eDateTime As String = String.Format("{0:yyyy-MM-dd}", addEdate)
sDateTime = String.Format(sDateTime + " " + Ts_time.Rows(0)(0).ToString)
eDateTime = String.Format(eDateTime + " " + Ts_time.Rows(0)(1).ToString)
Dim str As String = aoTSsno.Rows(i)(0).ToString()
If str = TSSNO Then
strFXTTSTAT_sd = sDateTime
End If
Dim tmp_dic As New Dictionary(Of String, Object)
tmp_dic.Add(":TSSNO", aoTSsno.Rows(i)(0).ToString)
tmp_dic.Add(":TSGROUP", nTSGROUP)
tmp_dic.Add(":SDATETIME", sDateTime)
tmp_dic.Add(":EDATETIME", eDateTime)
tmp_dic.Add(":VENUESNO", "")
tmp_dic.Add(":TEACHERSNO", "")
list_dic.Add(tmp_dic)
Next
sql = "INSERT INTO FXTTS (TSSNO,TSGROUP,COURSEVSNO,SUBJECTVSNO,SDATETIME,EDATETIME,VENUESNO," +
"TEACHERSNO,TYPE,SUBJECTGROUP,ISEXTRA,USERSNO,TSORDER,VBOOKING,FROMSUBJECTVSNO,COURSEVNUM,TBOOKING) " +
" SELECT FXTTS_SEQ.NEXTVAL,:TSGROUP,COURSEVSNO,SUBJECTVSNO,TO_DATE(:SDATETIME,'YYYY-MM-DD HH24:MI:SS'),TO_DATE(:EDATETIME,'YYYY-MM-DD HH24:MI:SS'),:VENUESNO," +
":TEACHERSNO,TYPE,SUBJECTGROUP,ISEXTRA,USERSNO,TSORDER,VBOOKING,FROMSUBJECTVSNO,COURSEVNUM,TBOOKING " +
"FROM FXTTS WHERE TSSNO = :TSSNO "
dbtool.executeNonQuery(sql, list_dic)
Dim tsfr_sql = " INSERT INTO FXTTSFR (TSFRSNO,TSGROUP,SUBJECTVSNO,TR,FR,ER,QR) SELECT FXTTSFR_SEQ.NEXTVAL,:nTSGROUP,T.* FROM( SELECT SUBJECTVSNO " +
",NVL( (SELECT SFR.SFRSNO FROM FXTSFR SFR WHERE SFR.SELECTED =1 AND SFR.SUBJECTVSNO=TS.SUBJECTVSNO AND SFR.PAPERTYPE IN ('T1','T2') AND ROWNUM=1 ) ,-1) AS TR " +
",NVL( (SELECT SFR.SFRSNO FROM FXTSFR SFR WHERE SFR.SELECTED =1 AND SFR.SUBJECTVSNO=TS.SUBJECTVSNO AND SFR.PAPERTYPE IN ('F') AND ROWNUM=1) ,-1) AS FR " +
",NVL( (SELECT SFR.SFRSNO FROM FXTSFR SFR WHERE SFR.SELECTED =1 AND SFR.SUBJECTVSNO=TS.SUBJECTVSNO AND SFR.PAPERTYPE IN ('E') AND ROWNUM=1) ,-1) AS ER " +
",NVL( (SELECT SFR.SFRSNO FROM FXTSFR SFR WHERE SFR.SELECTED =1 AND SFR.SUBJECTVSNO=TS.SUBJECTVSNO AND SFR.PAPERTYPE IN ('Q') AND ROWNUM=1) ,-1) AS QR FROM FXTTS TS " +
" WHERE TSGROUP=:oTSGROUP GROUP BY TSGROUP,SUBJECTVSNO)T "
Dim tsfr_dic As New Dictionary(Of String, Object)
tsfr_dic.Add(":nTSGROUP", nTSGROUP)
tsfr_dic.Add(":oTSGROUP", oTSGROUP)
dbtool.executeNonQuery(tsfr_sql, tsfr_dic)
sql = "INSERT INTO FXTTRAINING (TRAININGSNO,TRAININGNAME,TRAININGCOST,TTYPESNO,TSGROUP,USERSNO,TEACHERCOST,VENUECOST,ISVIEWCOST,ISPAY) " +
"SELECT FXTTRAINING_SEQ.NEXTVAL,TRAININGNAME,TRAININGCOST,TTYPESNO,:nTSGROUP,USERSNO,TEACHERCOST,VENUECOST,ISVIEWCOST,ISPAY " +
" FROM FXTTRAINING WHERE TSGROUP = :oTSGROUP "
dic.Clear()
dic.Add(":nTSGROUP", nTSGROUP)
dic.Add(":oTSGROUP", oTSGROUP)
dbtool.executeNonQuery(sql, dic)
sql = "SELECT TSSNO FROM FXTTS WHERE TSGROUP = :nTSGROUP ORDER BY TSSNO "
dic.Clear()
dic.Add(":nTSGROUP", nTSGROUP)
Dim anTSsno As DataTable = dbtool.queryData(sql, dic)
sql = " SELECT TSSSNO FROM FXTTSS WHERE TSGROUP = :oTSGROUP AND PERSONSNO = :PERSONSNO ORDER BY TSSSNO "
dic.Clear()
dic.Add(":oTSGROUP", oTSGROUP)
dic.Add(":PERSONSNO", PERSONSNO)
Dim aoTSSsno As DataTable = dbtool.queryData(sql, dic)
list_dic.Clear()
For i = 0 To aoTSSsno.Rows.Count - 1
Dim tmp_dic As New Dictionary(Of String, Object)
tmp_dic.Add(":anTSsno", anTSsno.Rows(i)(0).ToString)
tmp_dic.Add(":aoTSSsno", aoTSSsno.Rows(i)(0).ToString)
tmp_dic.Add(":nTSGROUP", nTSGROUP)
tmp_dic.Add(":PERSONSNO", PERSONSNO)
list_dic.Add(tmp_dic)
Next
sql = "INSERT INTO FXTTSS (TSSSNO,TSSNO,TSGROUP,COURSEVSNO,SUBJECTVSNO,SUBJECTGROUP,PERSONSNO,TEACHERSNO," +
"FROMSUBJECTVSNO,TSORDER,IOEDATE,ROLLCALL,ROLLCALLTIME) " +
" SELECT FXTTSS_SEQ.NEXTVAL,:anTSsno,:nTSGROUP,COURSEVSNO,SUBJECTVSNO,SUBJECTGROUP,:PERSONSNO,TEACHERSNO," +
"FROMSUBJECTVSNO,TSORDER,IOEDATE,ROLLCALL,ROLLCALLTIME " +
"FROM FXTTSS WHERE TSSSNO = :aoTSSsno "
dbtool.executeNonQuery(sql, list_dic)
dic.Clear()
dic.Add(":TSSNO", TSSNO)
Dim strCOURSESNO As String = dbtool.queryScalar("SELECT COURSESNO FROM FXTCOURSEV WHERE COURSEVSNO = ( SELECT COURSEVSNO FROM FXTTS WHERE TSSNO = :TSSNO )", dic)
dic.Clear()
dic.Add(":TSGROUP", nTSGROUP)
dic.Add(":PERSONSNO", PERSONSNO)
dic.Add(":SDATETIME", strFXTTSTAT_sd)
dic.Add(":COURSESNO", strCOURSESNO)
sql = " INSERT INTO FXTTSTAT (TSTATSNO,TSGROUP,PERSONSNO,SDATETIME,COURSESNO) " +
" VALUES(FXTTSTAT_SEQ.NEXTVAL,:TSGROUP,:PERSONSNO,TO_DATE(:SDATETIME,'YYYY-MM-DD HH24:MI:SS'),:COURSESNO) "
dbtool.executeNonQuery(sql, dic)
End Sub