VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 822|回复: 5

请教一个代码写法

[复制链接]

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-22 16:00:02 | 显示全部楼层 |阅读模式
我这有三个text第一个text是个固定的三位数,第二个text值是第一个text值的邻号,第三个是0到9之间剩下的数
我举个例子啊,如果text1.text="267"那么text2.text="13458"
text3.text="09"
  这个用VB来实现,怎么写?
  还有一个问题是我数据库表中记录是些三位数,我想统计前十条记录中某个数字出现的次数,这该怎么实现?
  比如 前三条记录是379,290,237
   那么我想知道9的出现次数就是二次,
  高手们帮帮忙,用代码怎么实现?
回复

使用道具 举报

0

主题

9

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-2 09:36:01 | 显示全部楼层
1.
private function GetNext(byval iValue as string) as string
  dim i as byte
  dim strRet as integer
  dim j as byte

  strRet = ""
  for i = 1 to 3
     j=cbyte(mid(ivalue,i,1))
     strRet = strRet & cstr(j-1) & cstr(j+1)
  next
  GetNext = strRet
end function

2.先读出前十条记录,连成一个字串,再用循环判断
objconn.open
sql = "select top 10 field from table"
objrs.open sql,objconn,1,1
strRet = objRs.getstring(,"","")
intCount = 0
for i = 1 to len(strRet)
   if mid(strRet , i ,1)= "9" then
      intCount = intCount +1
   end if
next
msgbox "共出现" & intCount & "次"
回复

使用道具 举报

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-2-2 15:27:01 | 显示全部楼层
你第一个代码没有弄出text3的结果,还有如果j为零呢,还有你那还会出现重复值
 不要光依我那个例子,要考虑全面,
 第二个代码,我那个记录不是以,分开的,就是数据库表中的记录,我用逗号表示的间隔
  你那个循环应该从记录表中取出每条记录然后对每条记录分别判断
回复

使用道具 举报

0

主题

34

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-2-6 22:45:02 | 显示全部楼层
Private Sub Command1_Click()
Dim n(3), n1, n2, a(9), i, j, s
For i = 1 To Len(Text1)
    n(i) = Mid(Text1, i, 1): a(n(i)) = 1
Next
For i = 1 To Len(Text1)
    If n(i) > 0 Then n1 = n1 & IIf(a(n(i) - 1) = 0 And n(i) > 0, n(i) - 1, ""): a(n(i) - 1) = 1
    If n(i) < 9 Then n1 = n1 & IIf(a(n(i) + 1) = 0 And n(i) < 9, n(i) + 1, ""): a(n(i) + 1) = 1
Next
For i = 0 To 9
    n2 = n2 & IIf(a(i), "", i)
Next
Text2 = n1: Text3 = n2
End Sub
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-7 12:30:01 | 显示全部楼层
''1
Option Explicit

Private Sub Form_Load()
  Dim m As Long, n As Long
  Dim Temp As String
  Dim Str1 As String, Str2 As String, Str3 As String
  
  Str1 = "378"
  
  For m = 1 To 3
     n = Val(Mid(Str1, m, 1))
     Temp = CStr(n - 1)
     If Temp < 0 Then Temp = ""
     If InStr(1, Str1, Temp) = 0 And InStr(1, Str2, Temp) = 0 Then Str2 = Str2 & Temp
     
     Temp = CStr(n + 1)
     If Temp > 9 Then Temp = ""
     If InStr(1, Str1, Temp) = 0 And InStr(1, Str2, Temp) = 0 Then Str2 = Str2 & Temp
  Next m
  
  For m = 0 To 9
    If InStr(1, Str1 & Str2, CStr(m)) = 0 Then Str3 = Str3 & CStr(m)
  Next m
  Debug.Print Str1, Str2, Str3
  
End Sub

回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-7 13:45:01 | 显示全部楼层
'''2
Option Explicit

Private Sub Form_Load()
''先将前三条读出,连成字符串 str1
Dim str1 As String, str2 As String
Dim m As Long
str2 = Replace(str1, "9", "")
Debug.Print Len(str2) - Len(str1) '
End Sub

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表