设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 449|回复: 11
打印 上一主题 下一主题

#字库串的系列问题?#

[复制链接]
跳转到指定楼层
1#
发表于 2003-1-28 18:43:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

请教各位大侠,关于字库串的系列问题如下:(请大家原谅我的疑问!)
(1):长度问题,有一个文本框,如何用MSGBOX判断其含有的文本长度,例如上面是A1234,那么长度是“5”,如果是1234,长度是“4”?

(2):相加的问题
  2.1:有“0005601”的号码,需要加“1”转换为0005602,怎样办?
  2.2:有“AK14525”的号码,需要加“1”转换为“AK14526”,怎样板?要求是AK14525的长度和模式有时可能不同,例如值是AA22002等。
  
(3):相减的问题:
  3.1:有“0005601”的号码,需要减“1”转换为0005599,怎样办?
  3.2:有“0005601”的号码,需要减“0002330”转换为“0002231”,怎样办?当然可能数位有点不同,就是如何舍掉这个“0”!
  3.3:有“0005601”要减1为000560!
  3.4:有AK471要减1,为AK47
  
(4):特征号码问题:
  4.1:有AN555,AN5551,AN55551等号码,要求将左边的AN去掉,怎么办?
  4.2:有2225+555+3+21+5+35,怎样提取系列的数字?(加号的数量等是未知的,如果含有*/-等呢?)[em27]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-1-28 19:07:00 | 只看该作者
所有的使用DAO一个一个记录去检查。
相加、相减、特征等问题使用left(),len(),val(),mid().do while过程判断。
比如判断AK14525
txt1=ak14525
len1=1
tt=len(txt1)
do while len1<tt
if left(txt1,1)<"a" then
ObjectValue=txt1
exit do
else
len1=2
end if
checkT=mid(txt1,len1,1)
if checkT<"a" then
ObjectValue=right(txt1,tt-len1)
exit do
len1=len1+1
loop
if len1=1 then
表字段值=val(txt1)+1
else
表字段值=left(txt1,len1) & val(mid(txt1,len1-1))+1
end if
msgbox "OK!"
end sub
只是思路,记得引用DAO。


3#
发表于 2003-1-28 19:08:00 | 只看该作者
以上问题最好是从源头控制,等问题出来了再处理不是个办法。
4#
 楼主| 发表于 2003-1-28 19:29:00 | 只看该作者
cattjiu,你D方法都几复杂啊,就一个答案代码之多非吾辈能及,而竹笛兄的源头问题好像未明我要做什么,因为不是我能控制的,就2.1问题“2.1:有“0005601”的号码,需要加“1”转换为0005602,怎样办?”是应用在销售单上的,便于几张单据一齐输入,虽然不能计时入单就会计来讲有点欠佳,但实际需要的,单号可能没有,就用流水号,单号可能是发票(7位),可能是收据(X位),可能是0000001,又可能是10000001,我怎样控制呢?至于其他问题,我在做一个【支持无限分级的物料表】采用一表一窗体完成前进后退的所有功能需要,不忘谢谢大家
5#
发表于 2003-1-28 19:40:00 | 只看该作者
复杂也不复杂,不这样就手工搞定。
6#
发表于 2003-1-28 19:48:00 | 只看该作者
把问题分成前导0和特征码两种方法处理,特征码又分为定长(或已知)和不定长。
前面两种很容易,最后要判断分离特征码复杂一点。
7#
 楼主| 发表于 2003-1-28 19:54:00 | 只看该作者
trynew欲言又止了……简单介绍一下代码的方法嘛!
8#
发表于 2003-1-28 21:52:00 | 只看该作者
刚才要去吃饭
下面给出一个文本数值混合编号的增减量函数,看是否有启发:
Function TextNumAdd(NumStr As String, NumAdd As Integer) As String '增量可以为负数
    Dim i As Integer
    Const zerostr = "00000000000000000000"
    '取右边数值字符串
    For i = 1 To Len(NumStr)
        If IsNumeric(Right(NumStr, i)) Then TextNumAdd = Right(NumStr, i)
    Next
    '如果数值加上增量的位数小于原来数值字符串则补0
    If Len(Trim(Str(Val(TextNumAdd) + NumAdd))) < Len(TextNumAdd) Then
        TextNumAdd = Left(NumStr, Len(NumStr) - Len(TextNumAdd)) & _
            Left(zerostr, Len(TextNumAdd) - Len(Trim(Str(Val(TextNumAdd) + NumAdd)))) & _
            Trim(Str(Val(TextNumAdd) + NumAdd))
    Else
        TextNumAdd = Left(NumStr, Len(NumStr) - Len(TextNumAdd)) & _
            Trim(Str(Val(TextNumAdd) + NumAdd))
    End If
End Function
9#
 楼主| 发表于 2003-1-28 22:47:00 | 只看该作者

trynew……

trynew,为人为到底吧,您的代码比较深,看得【象雾又象花】,您能帮我做一个实例吗,我很想念您的源码,因为您真好人啊,如果我的物料分类做好了,送个比你啦,祝您新年进步……
10#
发表于 2003-1-28 23:19:00 | 只看该作者
那是因为帖子放上去把缩进空格都“吃”掉了。
这是一个函数,你靠过去就可以用了。
有空我做个实例方上去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-21 22:06 , Processed in 0.093502 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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