Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
полез кое что поправить в программе. Наткнулся на такой код (обработчики ошибок убрал для простоты)

'---------------------------------------------------------------------------------------
' Procedure : MaskCaseValTok
' Author    : osmor
' Date      : 28.08.2009
' Purpose   : Определение маски больших и маленьких букв для ValTok
'---------------------------------------------------------------------------------------
'
Public Function MaskCaseValTok() As Variant

  
   Dim rst As New adodb.Recordset
   Dim i As Integer

         rst.Open "select valTok , CaseMaskVal from ostmp_tblAlias", CurrentProject.Connection, adOpenKeyset, adLockPessimistic
With rst 
  For i = 1 To 10  ' зачем здечсь этот цикл
        
        Do While Not .EOF
            .Update "CaseMaskVal", CaseToBin(![ValTok])
            .MoveNext
        Loop
        
       .MoveFirst
  Next
 

End With
   rst.Close
    Set rst = Nothing
    
End Function


вот CaseToBin к ней вопросов нет


'---------------------------------------------------------------------------------------
' Procedure : CaseToBin
' Author    : osmor
' Date      : 28.08.2009
' Purpose   : Состаляет маску больших и малельких букв для переданной строки
' для strParam = "AAaaA"  CaseToBin = "11001"
' если все буквы маленькие возвращает "0"
'---------------------------------------------------------------------------------------
'
Public Function CaseToBin(strParam As String) As String
Dim N() As Byte
Dim L() As Byte
Dim i As Integer
Dim intStep As Integer
Const ZERO As String = "0"
Const ONE As String = "1"
If StrComp(LCase(strParam), strParam, vbBinaryCompare) = 0 Then CaseToBin = ZERO: Exit Function
L() = LCase(strParam)
N() = strParam
CaseToBin = String(Len(strParam), ZERO)

intStep = LenB("A")
For i = 0 To UBound(L) Step intStep
    If L(i) > N(i) Then Mid$(CaseToBin, i / intStep + 1, 1) = ONE
Next

End Function



Суть этой операции простая, в таблице есть 2 текстовых поля
Одно с данными второе пустое
Нужно второе заполнить "Маской" где для каждого символа из поля1 будет стоять "1" для ЗАГЛАВНЫХ букв и "0" для маленьких
например:
для поле1 = "AAaaAA"
поле2 будет = "11001"
А вот теперь собственно вопрос
НА КОЙ Х... я поставил в MaskCaseValTok цикл
For i = 1 to 10
никак не пойму его назначение. Функционально он совершенно не нужен... но я его почему-то поставил... может я чего-то не вижу и он НУЖЕН?
Может я просто пытался проверить скорость на больших объемах и потом забыл убрать (заказчик уже год с этим живет.... )

В общем плиз посмотрите, нужен ли этот цикл...
Совсем отупел на своей административной работе


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.