Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Медленно работает функция
 
 автор: Аноним   (17.11.2006 в 21:17)
 
 

Пожалуйста, помогите разобраться. Я создала функцию, которая по имеющимся в таблице полям Фамилия, Имя, Отчество, Инициалы формирует полное ФИО. Делаю так:

Public Function ФИО(Код As Integer)
Dim StrSQL As String
Dim MyRst As DAO.Recordset
StrSQL = "SELECT Фамилия, Имя, Отчество, Инициалы FROM Люди WHERE Код = " + CStr(Код)
Set MyRst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
ФИО = MyRst![Фамилия]
If IsNull(MyRst![Имя]) Then
If Not IsNull(MyRst![Инициалы]) Then
ФИО = ФИО + " " + MyRst![Инициалы]
End If
Else
ФИО = ФИО + " " + MyRst![Имя]
If Not IsNull(MyRst![Отчество]) Then
ФИО = ФИО + " " + MyRst![Отчество]
End If
End If
End Function

При обработке относительно большого числа записей (200-300) возникает заметная задержка. Вариант Фамилия+пробел+Имя+пробел+Отчество работает очень быстро, но не обрабатывает записи, в которых не хватает данных.
Можно ли как-то оптимизировать эту обработку? Спасибо.

  Ответить  
 
 автор: osmor   (17.11.2006 в 23:40)   личное сообщение
 
 

а что Вы с этой сформированной таблице делаете?
может все это заменить на запрос на обновление?
ну или хотя бы заменить всю эту функцию на
select [Фамилия] & " " + iif(isnull([имя]),[Инициалы],[имя] & " " + [Отчество]) as [ФИО]
FROM Люди WHERE Код = " + CStr(Код)

но если вы что-то обновляете какое-то поле, то лучше все сделать запросом на обновление.(сделать его их моего запроса на выборку)
ЗЫ. 300 записей для ACCESS это даже не мало, это ничто..

  Ответить  
 
 автор: KrukVN   (20.11.2006 в 09:55)   личное сообщение
 
 

ёпрст! osmor, плиз скажи им чтоб [cоdе][/cоdе] юзали! Ну не читается код в таком форматировании. Он простой как семь копеек, а мозг напрягается на целый рубль, а сегодня понедельник. Ну не надо так
Хотяб так:

Public Function ФИО(Код As Integer)
Dim StrSQL As String
Dim MyRst As DAO.Recordset
    
    StrSQL = "SELECT Фамилия, Имя, Отчество, Инициалы FROM Люди WHERE Код = " + CStr(Код)
    Set MyRst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
    ФИО = MyRst![Фамилия]
    
    If IsNull(MyRst![Имя]) Then
        If Not IsNull(MyRst![Инициалы]) Then
            ФИО = ФИО + " " + MyRst![Инициалы]
        End If
      Else
        ФИО = ФИО + " " + MyRst![Имя]
        If Not IsNull(MyRst![Отчество]) Then
            ФИО = ФИО + " " + MyRst![Отчество]
        End If
    End If

End Function

  Ответить  
 
 автор: osmor   (20.11.2006 в 10:26)   личное сообщение
 
 


osmor, плиз скажи им чтоб [cоdе][/cоdе] юзали

Ну. ГОВОРЮ!!!!
"ВСЕМ ПОЛЬЗОВАТЬСЯ [cоdе][/cоdе] при вставке кода!!! Кто не будет пользоваться... тому... того... ну в общем пользуйтесь плз."

  Ответить  
 
 автор: KrukVN   (20.11.2006 в 10:32)   личное сообщение
 
 

Спасибо
атоблинкинуттакуюабрукадабру и... плиииз... пипл... кто нить... просмотрите ааа в чем тама собака, ну или где там раки
а пипл устал такие коды расшифровывать у пипла своих шифров тьма

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList