Есть два, условно одинаковых, кода. Первый возвращает числа в формате 0,00 (Общий), а второй (Мой) – 0,0000000000000 (13 нолей после ","). Эти числа именно в значение в ячейки, не формат отображения. Формат отображения настраивается без проблем в «Формате ячейки». Различные значения «com1.Parameters.Item("@id").Value» не причина. Они есть в обоих кодах (в полных версиях) в разных местах, результат один. Если их поменять местами – результат не меняется. Друзья, научите где искать причину такого разного результата в значение чисел?
Общий:
Код |
---|
Private Sub CommandButton1_Click()
Dim n As Double
Dim i As Double
n = 2 '2
While Лист4.Range("a" + CStr(n)).Value <> ""
n = n + 1
Wend
Dim dt As Date
dt = Лист4.Range("a" + CStr(n - 1)).Value
Лист4.Range("a" + CStr(n)).Select
Dim con1 As New ADODB.Connection
Dim com1 As New ADODB.Command
Dim rs1 As New ADODB.Recordset
con1.ConnectionString = "Provider=sqloledb;Data Source=web-nnv;Initial Catalog=www-fs;Integrated Security=SSPI;"
'Range("n74326") = con1 'Лощилов
con1.Open
'Range("n74326") = con1 'Лощилов
com1.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
com1.ActiveConnection = con1
com1.CommandText = "pProc2"
com1.Parameters.Refresh
com1.Parameters.Item("@ct").Value = "H"
com1.Parameters.Item("@id").Value = 3217
com1.Parameters.Item("@stt").Value = dt
com1.Parameters.Item("@stp").Value = Now
com1.Parameters.Item("@st").Value = 1800
com1.Parameters.Item("@rfr").Value = 1
com1.Prepared = True
i = n
rs1.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rs1.LockType = ADODB.LockTypeEnum.adLockOptimistic
Set rs1 = com1.Execute
rs1.MoveFirst
rs1.MoveNext
While Not rs1.EOF
Лист4.Range("a" + CStr(i)).Value = rs1.Fields("Time").Value + 3 / 24
Лист4.Range("b" + CStr(i)).Value = rs1.Fields("Value").Value
i = i + 1
rs1.MoveNext
Wend
rs1.Close
con1.Close
Set rs1 = Nothing
Set con1 = Nothing
Set com1 = Nothing
Лист4.Range("a" + CStr(i - 1)).Select
End Sub |
Мой:
Код |
---|
Sub Факт() 'Выгрузка факта.
Dim n As Double
Dim I As Double
n = 57139
While Лист4.Range("a" + CStr(n)).Value <> ""
n = n + 1
Wend
n = n - 1 'Обновление последней строки
Dim dt As Date
dt = Лист4.Range("a" + CStr(n - 1)).Value
Лист4.Range("a" + CStr(n)).Select
Dim con1 As New ADODB.Connection
Dim com1 As New ADODB.Command
Dim rs1 As New ADODB.Recordset
con1.ConnectionString = "Provider=sqloledb;Data Source=web-nnv;Initial Catalog=www-fs;Integrated Security=SSPI;"
con1.Open
com1.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
com1.ActiveConnection = con1
com1.CommandText = "pProc2"
com1.Parameters.Refresh
com1.Parameters.Item("@ct").Value = "H" 'ТИ, ПВ - H
com1.Parameters.Item("@id").Value = 3434 'ЧЭС/ МРЭС; ПВ/ТИ - 3434/24597
com1.Parameters.Item("@stt").Value = dt
com1.Parameters.Item("@stp").Value = Now
com1.Parameters.Item("@st").Value = 1800
com1.Parameters.Item("@rfr").Value = 1
com1.Prepared = True
I = n
rs1.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rs1.LockType = ADODB.LockTypeEnum.adLockOptimistic
Set rs1 = com1.Execute
rs1.MoveFirst
rs1.MoveNext
While Not rs1.EOF
Лист4.Range("a" + CStr(I)).Value = rs1.Fields("Time").Value + 3 / 24
Лист4.Range("b" + CStr(I)).Value = rs1.Fields("Value").Value
' Лист4.Range("b" + CStr(I)).Value = Format(rs1.Fields("Value").Value, "#0.00")
I = I + 1
rs1.MoveNext
Wend
rs1.Close
con1.Close
Set rs1 = Nothing
Set con1 = Nothing
Set com1 = Nothing
Лист4.Range("a" + CStr(I - 1)).Select
End Sub |