-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Оптимизация кода, запроса

Вторник, 07 Июля 2015 г. 08:14 + в цитатник
Доброго времени суток!
Начальные данные: две таблицы (tblPasport-(один-ко-многим)-tblMetering) - Паспорта и измерения.
Необходимо: вывести n-ю запись таблицы измерения(название прибора и номер) указанного паспорта. Но именно в порядке сортировки tblMetering.id ASC,
так как данные забиваются в определенной последовательности.

Делаю сие этой функцией:
Public Function sTypeDevice(i1 As Integer, i2 As Integer) As String
'Входные параметры: i1-код паспорта, i2-какую запись берем
Dim str As String
Dim rs As Object
Dim k As Integer
Dim myarr()
str = "SELECT nDevice,FactoryNum FROM tblMetering LEFT JOIN tblNameDevice ON tblMetering.[idNameDevice] = tblNameDevice.[id] Where idPasport=" & i1 & " Order By tblMetering.id ASC"

On Error GoTo 1: sTypeDevice = ""
Set rs = CurrentDb.OpenRecordset(str)
If rs.BOF Then
   sTypeDevice = "": GoTo 1
End If

k = Nz(DCount("*", "tblMetering", "idPasport=" & i1), 0)
myarr = rs.GetRows(k)
sTypeDevice = Nz(myarr(0, i2 - 1), "") & ";" & Nz(myarr(1, i2 - 1), "")

1:
rs.Close
Set rs = Nothing
Exit Function
End Function

В запросе: sTypeDevice(tblPasport.id,1) as tdv1
Отображается как "КСД-3;202309". После чего функцией mid беру необходимое "поле" из выражения Mid([tdv1],1,InStr([tdv1],";")-1).

Только вот беда, на машине с 2Гб оперативы все это довольно таки долго вычисляется. Можно сказать зависает на пару секунд(3-4). Это если в запросе вычислять.

Используются данные для построения отчета.
Combobox-в нет, только вот вычисляемое поле.

Пробовал указывать выражение в поле, вместо вычисления, загружается отчет быстрее, а вот форме хоть и быстро открывается но данные выражения
отображаются не сразу(что естественно, так как это выражение в поле формы).

Посоветуйте как лучше выполнить задуманное, но чтобы "грузить" акс/машину поменьше. Спасибо!

http://www.sql.ru/forum/1164768/optimizaciya-koda-zaprosa


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку