Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ODBCconnection.Refresh / 2 сообщений из 2, страница 1 из 1
08.09.2019, 10:22
    #39858945
Mari.P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с ODBCconnection.Refresh
Тема начиналась здесь
https://www.sql.ru/forum/1316775/pomogite-svyazatsya-s-tablicey
но поскольку в Access присоединить таблицу не получается, придется все делать в Excel.
Написала простенький код на VBA Excel2013 x86. Проблема - слетает на ActiveWorkbook.Connections(4).ODBCConnection.Refresh
c ошибкой Run-time error '1004': Application-defined or object-defined error.
Причем когда проходишь всю процедуру отладчиком - ошибки нет, все работает нормально.
Подскажите пожалуйста уважаемые профессионалы, что ему не хватает? Может быть памяти? или Office надо поставить x64?


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
Sub GetData()
Dim objWBConnect As WorkbookConnection
Dim StrSQL, DBYear, DBMonth, DBDay, DBHour, DEYear, DEMonth, DEDay, DEHour, StrID, StrPar As String
Dim i, j, k, id, Counter As Long
Dim DateBeg, DateEnd, Dateoff As Date
Dim sheet1 As Worksheet

k = 2
' берем ID и название параметра с листа CDBPoint
id = ActiveWorkbook.Worksheets(3).Cells(k, 1)
StrID = Trim(Str(id))
StrPar = ActiveWorkbook.Worksheets(3).Cells(k, 2)
StrPar = Mid(StrPar, 11)
Sheets.Add
ActiveSheet.Name = StrPar
ActiveSheet.Columns("E").NumberFormat = "mm/dd/yyy hh:mm:ss"
DateBeg = CDate("01 09 2018 00:00:00")
DateEnd = CDate("04 09 2018 00:00:00")
Dateoff = CDate("01 09 2019 00:00:00")
'номер строки куда пишем
Counter = 1
' цикл по таблице CHistoric с 01.09.2018 по 01.09.2019
While DateBeg < Dateoff

DBYear = Trim(Str(Year(DateBeg)))
If Month(DateBeg) < 10 Then DBMonth = "0" + Trim(Str(Month(DateBeg))) Else DBMonth = Trim(Str(Month(DateBeg)))
If Day(DateBeg) < 10 Then DBDay = "0" + Trim(Str(Day(DateBeg))) Else DBDay = Trim(Str(Day(DateBeg)))
If Hour(DateBeg) < 10 Then DBHour = "0" + Trim(Str(Hour(DateBeg))) Else DBHour = Trim(Str(Hour(DateBeg)))

DEYear = Trim(Str(Year(DateEnd)))
If Month(DateEnd) < 10 Then DEMonth = "0" + Trim(Str(Month(DateEnd))) Else DEMonth = Trim(Str(Month(DateEnd)))
If Day(DateEnd) < 10 Then DEDay = "0" + Trim(Str(Day(DateEnd))) Else DEDay = Trim(Str(Day(DateEnd)))
If Hour(DateEnd) < 10 Then DEHour = "0" + Trim(Str(Hour(DateEnd))) Else DEHour = Trim(Str(Hour(DateEnd)))


StrSQL = "SELECT TOP(50000) CDBHistoric.FormattedValue, CDBHistoric.Id," + _
"CDBHistoric.Quality, CDBHistoric.RecordTime, CDBHistoric.ValueAsReal " + _
"FROM Historic.CDBHistoric CDBHistoric " + _
"WHERE (CDBHistoric.Id=" + StrID + ")  AND " + _
"(CDBHistoric.RecordTime > TIMESTAMP '" + DBYear + "-" + Trim(DBMonth) + "-" + Trim(DBDay) + " " + DBHour + ":00:00')  " + _
"AND (CDBHistoric.RecordTime < TIMESTAMP '" + DEYear + "-" + Trim(DEMonth) + "-" + Trim(DEDay) + " " + DEHour + ":00:00') " + _
"ORDER BY  CDBHistoric.RecordTime"

ActiveWorkbook.Connections(4).ODBCConnection.CommandText = StrSQL
ActiveWorkbook.Connections(4).ODBCConnection.Refresh

  j = 2
 ' берем ID
 Cond = ActiveWorkbook.Worksheets(3).Cells(2, 1)
 '  цикл по строкам
 While ActiveWorkbook.Worksheets(1).Cells(j, 3) = Cond
 'цикл по столбцам
For i = 1 To 5
 ActiveSheet.Cells(Counter, i) = ActiveWorkbook.Worksheets(1).Cells(j, i)
Next i
 j = j + 1
 Counter = Counter + 1
Wend

' сдвигаем дату на три дня
DateBeg = DateEnd
DateEnd = DateAdd("d", 3, DateEnd)

Wend ' конец цикла по всему параметру

End Sub
...
Рейтинг: 0 / 0
08.09.2019, 13:06
    #39858964
Mari.P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с ODBCconnection.Refresh
Решила вопрос - надо было всего-лишь в свойствах соединения отключить Фоновое обновление.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ODBCconnection.Refresh / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]