Hi all:
I have a rather lengthy and complex SQL statement in which I'm getting a timeout. I have the connection.TimeOut set to 0. Is this the same as setting it to infinity (as in SQL Server)? It only times out in certain circumstances, like when I choose more than one company. I have listed the code below.
Thanks,
Ron
Sub UpdateTrans()
Dim DB As String, D As String, C As String, T As String
Dim i As Integer, j As Integer, k As Integer
DB = "TSMaster"
Dim TransCon As New ADODB.Connection
Dim TransRS As New ADODB.Recordset
Set TransCon = New ADODB.Connection
TransCon.ConnectionString = "Provider=sqloledb.1;" & _
"Data Source=D63WV941;Initial Catalog=" & DB & ";User Id=sa;Password=sa; "
BegDate = frmWizard.dtBeg.Value
EndDate = frmWizard.dtEnd.Value
If ByDate = True Then
If ByCo = False Then
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, TRANSMITTAL_NR AS TransNum, " & _
"AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) " & _
"ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''pick up transmittals
End If
Else
'''by company here
If AllCo = True Then
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, " & _
"TRANSMITTAL_NR AS TransNum, " & _
"AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) " & _
"ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''pick up transmittals
End If
Else
'''individual company here
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, " & _
"TRANSMITTAL_NR AS TransNum, AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit " & _
"From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) AND "
j = 0
For k = 1 To frmWizard.tvCo.Nodes.Count
If frmWizard.tvCo.Nodes(k).Checked = True Then
j = j + 1
C = Left(frmWizard.tvCo.Nodes(k).Text, 2)
D = Mid(frmWizard.tvCo.Nodes(k).Text, 3, 2)
If j = 1 Then
If frmWizard.tvCo.Nodes(k).Text = "Null" Then
SQL = SQL & "(COMPANY IS NULL) AND (DIVISION IS NULL) "
Else
SQL = SQL & "(COMPANY = '" & C & "') AND (DIVISION='" & D & "') "
End If
Else
SQL = SQL & "OR (COMPANY = '" & C & "') AND (DIVISION='" & D & "') "
End If
End If
Next k
SQL = SQL & "ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''load trans #
End If
End If
End If
End If
'On Error GoTo TransERR
TransCon.ConnectionTimeout = 0
TransCon.Open TransCon.ConnectionString
Set TransRS = New ADODB.Recordset
TransRS.Open SQL, TransCon, adOpenKeyset, adLockReadOnly
Do While Not TransRS.EOF
Screen.MousePointer = vbHourglass
ShowProgress False
DoEvents
NextRow
Comp = TransRS(0).Value
Div = TransRS(1).Value
TransDate = TransRS(2).Value
If IsNull(TransRS(3).Value) Then
Trans = "NULL"
Else
Trans = TransRS(3).Value
End If
TransCount = 1
Debit = TransRS(4).Value
Credit = TransRS(5).Value
AddValues
TransRS.MoveNext
Loop
Screen.MousePointer = vbHourglass
ShowProgress False
DoEvents
Exit Sub
TransERR:
MsgBox "You have encountered an error." & vbNewLine & _
"Error #: " & Err.Number & vbCrLf & _
"Description: " & Err.Description, vbCritical + vbOKOnly, "Help"
End Sub
I have a rather lengthy and complex SQL statement in which I'm getting a timeout. I have the connection.TimeOut set to 0. Is this the same as setting it to infinity (as in SQL Server)? It only times out in certain circumstances, like when I choose more than one company. I have listed the code below.
Thanks,
Ron
Sub UpdateTrans()
Dim DB As String, D As String, C As String, T As String
Dim i As Integer, j As Integer, k As Integer
DB = "TSMaster"
Dim TransCon As New ADODB.Connection
Dim TransRS As New ADODB.Recordset
Set TransCon = New ADODB.Connection
TransCon.ConnectionString = "Provider=sqloledb.1;" & _
"Data Source=D63WV941;Initial Catalog=" & DB & ";User Id=sa;Password=sa; "
BegDate = frmWizard.dtBeg.Value
EndDate = frmWizard.dtEnd.Value
If ByDate = True Then
If ByCo = False Then
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, TRANSMITTAL_NR AS TransNum, " & _
"AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) " & _
"ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''pick up transmittals
End If
Else
'''by company here
If AllCo = True Then
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, " & _
"TRANSMITTAL_NR AS TransNum, " & _
"AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) " & _
"ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''pick up transmittals
End If
Else
'''individual company here
If AllTrans = True Then
SQL = "SELECT COMPANY AS Co, DIVISION AS Div, FIN_TRANS_DT, " & _
"TRANSMITTAL_NR AS TransNum, AMOUNTS_1 / 100 AS Debit, AMOUNTS_2 / 100 AS Credit " & _
"From dbo.SV_MACORD_FT_SHIP " & _
"WHERE (FIN_TRANS_DT BETWEEN CONVERT(DATETIME, '" & BegDate & " 00:00:00', 102) " & _
"AND CONVERT(DATETIME, '" & EndDate & " 00:00:00', 102)) AND "
j = 0
For k = 1 To frmWizard.tvCo.Nodes.Count
If frmWizard.tvCo.Nodes(k).Checked = True Then
j = j + 1
C = Left(frmWizard.tvCo.Nodes(k).Text, 2)
D = Mid(frmWizard.tvCo.Nodes(k).Text, 3, 2)
If j = 1 Then
If frmWizard.tvCo.Nodes(k).Text = "Null" Then
SQL = SQL & "(COMPANY IS NULL) AND (DIVISION IS NULL) "
Else
SQL = SQL & "(COMPANY = '" & C & "') AND (DIVISION='" & D & "') "
End If
Else
SQL = SQL & "OR (COMPANY = '" & C & "') AND (DIVISION='" & D & "') "
End If
End If
Next k
SQL = SQL & "ORDER BY TRANSMITTAL_NR, COMPANY, DIVISION, FIN_TRANS_DT"
Else
'''load trans #
End If
End If
End If
End If
'On Error GoTo TransERR
TransCon.ConnectionTimeout = 0
TransCon.Open TransCon.ConnectionString
Set TransRS = New ADODB.Recordset
TransRS.Open SQL, TransCon, adOpenKeyset, adLockReadOnly
Do While Not TransRS.EOF
Screen.MousePointer = vbHourglass
ShowProgress False
DoEvents
NextRow
Comp = TransRS(0).Value
Div = TransRS(1).Value
TransDate = TransRS(2).Value
If IsNull(TransRS(3).Value) Then
Trans = "NULL"
Else
Trans = TransRS(3).Value
End If
TransCount = 1
Debit = TransRS(4).Value
Credit = TransRS(5).Value
AddValues
TransRS.MoveNext
Loop
Screen.MousePointer = vbHourglass
ShowProgress False
DoEvents
Exit Sub
TransERR:
MsgBox "You have encountered an error." & vbNewLine & _
"Error #: " & Err.Number & vbCrLf & _
"Description: " & Err.Description, vbCritical + vbOKOnly, "Help"
End Sub