|
|
|
| Имею такую тормозилку:
Public Sub TestCaption()
Dim rst As DAO.Recordset
Dim i As Integer
Dim strCaption As String
Set rst = CurrentDb.OpenRecordset("SELECT * FROM sqlListOrderCurrent WHERE False", , dbReadOnly)
Debug.Print apiTimeGetTime, "Start"
With rst
For i = 1 To .Fields.Count - 1
' strCaption = .Fields(i).Properties("Caption") '48487000-Start 48488234-Finish Итого: 1234 (до 1400)
strCaption = .Fields(i).Name '48390500-Start 48390500-Finish Итого: 0 (до 5)
Next i
.Close
End With
Set rst = Nothing
Debug.Print apiTimeGetTime, "Finish"
End Sub
|
То есть, имена полей считываются за доли секунды, а подписи - с заметным тормозом.
Почему, более - менее понятно.
Вопрос: как-бы ускориться?
Ну не переходить-же опять на русские имена полей! | |
|
| |
|
|
|
| Возможно быстее будет цикл по Fields объекта QueryDef или ADODB.Recordset.
А где вам это нужно? Если запрос предназначен для экспорта, то укажите в нем псевдонимы для полей. | |
|
| |
|
|
|
|
цикл по Fields объекта QueryDef
|
Пробовал, у меня получается медленнее, чем через rst.
Попробую.
укажите в нем псевдонимы для полей
|
Хороший вариант, но работы добавит. (Запросов много)
Спасибо Анатолий. | |
|
| |
|
|
|
| Применение алиасов не увеличило время по сравнению с именами полей, так что результат вполне приличный.
Еще раз спасибо. | |
|
| |
|
|
|
| Резюме:
Пошел по компромисному пути, подсмотренному у ......, - добавил табличку соответствия таблица+поле=подпись. Заодно добавил в нее несколько сервисных полей.
Суммарное время выполнения сократилось в 2.5 раза. | |
|
| |
|
|
|
| мало ли...
если вдруг Вы обращаетесь к таблице на mssql сервере, то подписи можно узнать через ado.
как-то так:
Set rs = con.Execute("SELECT TABLE_NAME, COLUMN_NAME, IsNull(c_descr.value,'') AS FDescr, DATA_TYPE " & _
"FROM information_schema.Columns " & _
"LEFT join sysproperties c_descr ON id = OBJECT_ID(TABLE_NAME) and smallid = ORDINAL_POSITION " & _
"WHERE (TABLE_NAME IN (" & LstTbl & ")) AND (name='MS_Description')")
|
и работает быстро | |
|
| |
|
|
|
| Спасибо Валерий Николаевич, я пока палубные приложения терзаю.
На сервер только одним глазом из-за угла иногда посматриваю.
Так-что пока:
"Любимый сервер может спать спокойно..." | |
|
| |