powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VAScript_SQLServer 2000
9 сообщений из 9, страница 1 из 1
VAScript_SQLServer 2000
    #32653243
St@s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Работаю над архивом SCADA системы. Использую встроеный в SCADA систему VBScript и SQLServer 2000. Каждую секунду в БД записываются состояния всех объектов SCADA системы. Надо последовательно вычитывать строки из БД для просмотра состояния объектов за какой то промежуток времени, чтобы получилось типа "кино".
Есть проблемка в скорости вычитывания данных из БД.
В начале таблицы вычитывает быстро. Можно вести просмотр с интервалом в 1 секунду и меньше. Но если строк в таблице больше 50 тыс. скорость снижается.

Для доступа к БД использую следующий код:

Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.open "day_" & user_dd, "DSN=movie;UID=;PWD=;", 0, 1, 2
...
hours = rs.fields("hour")
mins = rs.fields("min")
sec = rs.fields("sec")
...

Посоветуйте как быть.
Заранее спасибо.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32654050
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала:
А где запрос, учитывающий в критериях этот "какой то промежуток времени"? Сортировка тоже не важна?
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32654391
St@s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую таким способом. Неработает. Пишет incorrect syntax near the keyword 'select'

Dim user_dd As Object
Dim user_hh As Object
Dim user_mm As Object
Dim rs As Object
Dim user_day As String

user_day = "day_" & user_dd 'таблица из БД
Set rs = CreateObject("ADODB.Recordset")
rs.open"select * from user_day where hour = user_hh and min = user_mm;", "DSN=movie;UID=;PWD=;", 0, 1, 2 ' hour, min и sec - столбцы в БД
...
rs.move = ms_pos_k.Value
sec = rs.fields("sec")
If rs.EOF Then
ms_pos_k = 0
GoTo endl
End If

Где user_dd, user_hh и user_mm - день, час и минута точки начала просмотра архива. ms_pos_k - номер строки в БД. Вся программа находится в таймере.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32654830
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос надо бы сперва в Query Analizer спытать и отладить, а потом уже в прогу вставлять.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32655088
St@s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запрос такой
select * from day_8_2 where hour = 12 and min = 41 and sec = 1;
выводит одну строку.
Пробую вставлять в прогу, ошибка.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32655451
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так у тебя указано в вызове Open, что это таблица (adCmdTable=2), а не запрос.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32655519
St@s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно об этом подробней, я с VBScript раньше не сталкивался, только начинаю разбираться. Как тогда правильно запрос посылать.
Заранее спасибо!
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32656586
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и поподробнее. Убери 3 последних параметра в rs.Open и всего делов.
...
Рейтинг: 0 / 0
VAScript_SQLServer 2000
    #32657113
St@s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал таким способом:

Dim rs As Object
Dim cn As Object

user_day = "day_" & user_dd & "_" & day_part
Set cn = CreateObject("Adodb.Connection")
cn.Provider = "sqloledb"
ProvStr = "Server=HEX;Database=mydb;UID=stas;pwd=123;"
cn.Open ProvStr
Set rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn
rs.open "select * from " & user_day & " where hour = " & hours.value & " And min = " & mins.value '& " And sec = " & sec
...

Заработало. Скорость вычитывания одинаковая что в начале, что в конце таблицы. Пока устраивает. Посмотрим что будет дальше. Слышал, что есть способы пошустрее, что-то вроде: rs.GetRows. Есть ли такое и если есть как с ним работать. Спасибо большое за поддержку.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VAScript_SQLServer 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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