有个字段大约有2000长度
每次取100个
其中如果100个以内有回车符号则就取到回车前一个(也就说如果有回车就不能满100个字符了)
然后继续取下100个直到把这2000个取完
这个用vb如何写?
以下是我写的,不知道该如何处理 回车符号那,请各位高手执教Dim rst As ADODB.Recordset
Dim k As Integer
Dim nStr As Integer
Dim nPos As Integer
Dim slef As String
k = rstcount / 100
nStr = rst.Fields("a")
For lcount = 0 To k
nPos = InStr(nStr,vbCrLf)
If nPos > 0 Then
sleft = Left(nStr, nPos - 1)
nStr = Right(nStr, Len(nStr) - nPos)
Else
sleft = Left(nStr, 100)
nStr = Right(nStr, Len(nStr) - 100)
End If
Next
每次取100个
其中如果100个以内有回车符号则就取到回车前一个(也就说如果有回车就不能满100个字符了)
然后继续取下100个直到把这2000个取完
这个用vb如何写?
以下是我写的,不知道该如何处理 回车符号那,请各位高手执教Dim rst As ADODB.Recordset
Dim k As Integer
Dim nStr As Integer
Dim nPos As Integer
Dim slef As String
k = rstcount / 100
nStr = rst.Fields("a")
For lcount = 0 To k
nPos = InStr(nStr,vbCrLf)
If nPos > 0 Then
sleft = Left(nStr, nPos - 1)
nStr = Right(nStr, Len(nStr) - nPos)
Else
sleft = Left(nStr, 100)
nStr = Right(nStr, Len(nStr) - 100)
End If
Next
sStr原始string,sSubdo until len(sStr)=0 then
i=instr(sStr,chr(10))
if i>=100 then
i=100
end if
sSub=left(sStr,i)
sStr=Right(sStr, Len(sStr) - i)
loop
循环有点问题,死循环了
i=instr(sStr,chr(10))
if i>=100 then
i=100
end if
If i = 0 Then
If Len(sStr) > 100 Then
i = 100
Else
i = Len(sStr)
End If
sSub=left(sStr,i)
sStr=Right(sStr, Len(sStr) - i)
loop加点东西
Private Function F(ByVal str As String) As Variant
Dim i, j As Integer
Dim a() As String
j = 0
ReDim Preserve a(j)
For i = 1 To Len(str)
Debug.Print Mid(str, i, 1)
If Mid(str, i, 1) = Chr(10) Or Len(a(j)) = 100 Then
j = j + 1
ReDim Preserve a(j)
End If
If Mid(str, i, 1) <> Chr(10) Then
a(j) = a(j) & Mid(str, i, 1)
End If
Next
End FunctionPrivate Sub Command1_Click()
Dim a() As String
a = F(Text1)
End Sub
Private Function F(ByVal str As String) As Variant
Dim i, j As Integer
Dim a() As String
j = 0
ReDim Preserve a(j)
For i = 1 To Len(str)
If Mid(str, i, 1) = Chr(10) Or Len(a(j)) = 100 Then
j = j + 1
ReDim Preserve a(j)
End If
If Mid(str, i, 1) <> Chr(10) Then
a(j) = a(j) & Mid(str, i, 1)
End If
Next
F = a
End FunctionPrivate Sub Command1_Click()
Dim a() As String
a = F(Text1)
End Sub
Private Function DivideUp(ByVal SRCData As String) As Collection
Dim lPosKey As Long
Set DivideUp = New Collection
Do Until CBool(Len(SRCData) = 0)
lPosKey = InStr(SRCData, Chr(10))
lPosKey = IIf(0 < lPosKey And lPosKey < 101, lPosKey - 1, 100)
Call DivideUp.Add(Left$(SRCData, lPosKey))
SRCData = Mid$(SRCData, lPosKey + IIf(0 < lPosKey And lPosKey < 100, 2, 1))
Loop
End Function