ник: 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
никак не пойму его назначение. Функционально он совершенно не нужен... но я его почему-то поставил... может я чего-то не вижу и он НУЖЕН?
Может я просто пытался проверить скорость на больших объемах и потом забыл убрать (заказчик уже год с этим живет....
)
В общем плиз посмотрите, нужен ли этот цикл...
Совсем отупел на своей административной работе