powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ODBCconnection.Refresh
2 сообщений из 2, страница 1 из 1
Проблемы с ODBCconnection.Refresh
    #39858945
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема начиналась здесь
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
Проблемы с ODBCconnection.Refresh
    #39858964
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решила вопрос - надо было всего-лишь в свойствах соединения отключить Фоновое обновление.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ODBCconnection.Refresh
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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