VB程序员博客
01 16th, 2010
我好像从来不用哦
我说的是大键盘右侧的那十几个键,以数字为主。
数据库或EXCEL表格在录入大量数学时可能会用到,如会计录入某些数据
用 如果是一连串数字 我就那个小键盘
如果偶尔输入数字 就不用了
用。每次用支付宝缴水电费电话费账单的时候,都是用它来输入条码数字的。
常用,笔记本没有小键盘是个小噩梦~
<
跳劲舞 8键 
非常常用~~~~
当然是用来输入数字了
小键盘可以盲打
主键盘上面一字排开的数字能盲打吗?
录入数字只需一只手,很快。(指法:将中指放在 5 上,食指、中指和无名指各管一行。加减回车用小指。)
可惜录入 16 进制数不好用。
主键盘上数字也能盲打,不过没有小键盘一只手来得方便。
操作软件时输入数量、金额、编码时经常要用到。
用内存工具修改游戏也经常要用到。
带来的后果就是用电话、ATM 时必须盯着键盘。
常用
常,特别是输卡号的时候。。。
很常用一般输入密码之类的
我们这边财务用得比较多.
还有很多经常数字录入工作的员工,用的不是笔记本,所以是大键盘,一般都习惯把鼠标放在左手用.
常用小键盘.
一般财务用得多,还有常用录入数字时比较多
只有大批量录入数字时才用
可以用 Alt + 小键盘数字 输入特殊字符。
我用的是智能陈桥,可用小键盘输入半角数字(即使设置是 五笔/全角)。
财会经常输入大量的数字,用小键盘输入快速方便。
我…..多年不用全键盘了….本本键盘打坏了一个,我说某些键不灵了,厂家直接免费换了一个…然后就比较小心地使用了,直到现在还完全良好,哈哈….
小键盘还是大有用的必要的
还是比较常用的,比如说输入密码时
小键盘用处大着呢
1:用来常规数字密码或其他长串数字的输入。
2:对搓拳皇必备工具(手柄除外)
3:魔兽争霸时物品栏对应着小键盘的78,45,12
4:在数字键失灵或失效时的救命草。
2:对搓拳皇必备工具(手柄除外)
//
好多年没对搓过了………….真怀念
<
不太用
<
输密码时,小键盘速度是大键盘上的3倍以上,我的CSDN密码在小键盘上2S就能输完
这些速度无所谓——-再说我没小键盘,按FN切换出来又麻烦…
04 10th, 2009
dim sn as string
sn="0125"
sn=cstr(sn+1)
结果sn=126
但是我要的结果是0126
那么如果sn="00125"呢,是不是要搞成"00000",变成5个0?
啊哈.慢了一步.
不慢,还没有搞定。我是不是还要判断字符串的长度,这样比较麻烦。搞个最优化的方案。
聪明!
12 31st, 2008
如何产生由数字和英文字母组成的随机序列号
比如:
1WDR45E5I
3R5JIRWWE3B33
4RTY464FERLJT8I
这样一个序列,主要是用在产品的序列号上,一个产品用一个序列号,长度固定或可变都可以,要能产生无数个随机序列号.请各位大侠帮帮忙,小弟VB只懂皮毛.
把你要出现的字母放入数组中,用RND得到数组下标。即可。
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
像这种号一般都没有O(噢)
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
nlen = 16 '计算16位长度的随机串
For i = 1 To nlen
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Debug.Print t
Print t
End Sub
…………
关键还是要有好的随机生成规则
由yachong(蚜虫) 修改:
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
Randomize
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
nlen = 16 '计算16位长度的随机串
For i = 1 To Rnd * 35 + 1
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Print t
End Sub
楼上的方法不错..
来转转
用日期序列+时间序列。。
DateSerial+TimeSerial
换个思路行不….?
序列号我直接使用顺序生成,不就行了….也就是生成流水号,像RMB一样
至于贴到你的产品上…….你的产品不会总是顺序卖出去吧??????
Option Explicit
Private Declare Function CoCreateGuid Lib "ole32.dll " (pGuid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll " (pGuid As GUID, ByVal PointerToString As Long, ByVal MaxLength As Long) As Long
Private Const GUID_OK As Long = 0
Private Type GUID
Guid1 As Long
Guid2 As Integer
Guid3 As Integer
Guid4(0 To 7) As Byte
End Type
Public Function CreateGUIDKey() As String
Const GUID_LENGTH As Long = 38
Dim udtGUID As GUID
Dim strFormattedGUID As String
Dim lngResult As Long
lngResult = CoCreateGuid(udtGUID)
If lngResult = GUID_OK Then
strFormattedGUID = String$(GUID_LENGTH, 0)
StringFromGUID2 udtGUID, StrPtr(strFormattedGUID), GUID_LENGTH + 1
Else
strFormattedGUID = " "
End If
CreateGUIDKey = strFormattedGUID
End Function
调用:
dim code as string
code=CreateGUIDKey
code就是全球唯一序列号了,如果不要里面的“{”和“-”,自己替换成空即可。
好家伙,收藏了…….
嗯,收藏……..
昨天晚上还为了怎么生成uid犯难呢
呵呵,收藏
Mark
收藏
GUID
MD5
mark
藏
refer to:
http://www.vbaccelerator.com/home/VB/Tips/Create_GUIDs/article.asp
12 31st, 2008
如何产生由数字和英文字母组成的随机序列号
比如:
1WDR45E5I
3R5JIRWWE3B33
4RTY464FERLJT8I
这样一个序列,主要是用在产品的序列号上,一个产品用一个序列号,长度固定或可变都可以,要能产生无数个随机序列号.请各位大侠帮帮忙,小弟VB只懂皮毛.
把你要出现的字母放入数组中,用RND得到数组下标。即可。
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
像这种号一般都没有O(噢)
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
nlen = 16 '计算16位长度的随机串
For i = 1 To nlen
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Debug.Print t
Print t
End Sub
…………
关键还是要有好的随机生成规则
由yachong(蚜虫) 修改:
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
Randomize
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
nlen = 16 '计算16位长度的随机串
For i = 1 To Rnd * 35 + 1
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Print t
End Sub
楼上的方法不错..
来转转
用日期序列+时间序列。。
DateSerial+TimeSerial
换个思路行不….?
序列号我直接使用顺序生成,不就行了….也就是生成流水号,像RMB一样
至于贴到你的产品上…….你的产品不会总是顺序卖出去吧??????
Option Explicit
Private Declare Function CoCreateGuid Lib "ole32.dll " (pGuid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll " (pGuid As GUID, ByVal PointerToString As Long, ByVal MaxLength As Long) As Long
Private Const GUID_OK As Long = 0
Private Type GUID
Guid1 As Long
Guid2 As Integer
Guid3 As Integer
Guid4(0 To 7) As Byte
End Type
Public Function CreateGUIDKey() As String
Const GUID_LENGTH As Long = 38
Dim udtGUID As GUID
Dim strFormattedGUID As String
Dim lngResult As Long
lngResult = CoCreateGuid(udtGUID)
If lngResult = GUID_OK Then
strFormattedGUID = String$(GUID_LENGTH, 0)
StringFromGUID2 udtGUID, StrPtr(strFormattedGUID), GUID_LENGTH + 1
Else
strFormattedGUID = " "
End If
CreateGUIDKey = strFormattedGUID
End Function
调用:
dim code as string
code=CreateGUIDKey
code就是全球唯一序列号了,如果不要里面的“{”和“-”,自己替换成空即可。
好家伙,收藏了…….
嗯,收藏……..
昨天晚上还为了怎么生成uid犯难呢
呵呵,收藏
Mark
收藏
GUID
MD5
mark
藏
refer to:
http://www.vbaccelerator.com/home/VB/Tips/Create_GUIDs/article.asp
12 7th, 2008
比如2004565874541254加下密
再到另一地方读取时再获得上面的值
看你要加密到什么程度。。。简单且无聊的加密:
s = "2004565874541254"
Debug.Print StrReverse(s)
你要字符串的还是字节流的?
你要压缩数据的还是增大数据的?
你要简单的还是复杂的?
你要原理还是原码?
……
最好自己写算法,加密和解密
楼主是不是想取得硬盘序列号或其它什么号,然后再设计注册机,这个好简单,当然我也只设计过简单的,不过听说这个没多大用,一下子就会被破解了,所以不用花太多精力和时间
解单点的吧,别算出来太长
加密字符串,把它算成有字母有数字的那种
谢谢了
MIME编码呀 然后单纯作字母作移位
最简单的应该就是二进制的与、或操作了。
1
原来结贴之后还可以跟帖啊~
了解~睡觉~
11 25th, 2008
Sub ll()
Dim aa(4)
aa(0) = "1"
aa(1) = "SS"
aa(2) = "dd"
aa(3) = "12.3333"
aa(4) = "0.2033"
For ii = 0 To UBound(aa)
Select Case aa(ii)
Case Is <= 1
tt = Format(aa(ii), "0.0##")
Case Is > 1, Is < 100
tt = Format(aa(ii), "0.0#")
Case Else
tt = aa(ii) End Select
Debug.Print tt
Next ii
End Sub
输出结果
1.0
SS
dd
12.33
0.203
请教各位大侠的问题是
Case Else
tt = aa(ii) End Select
红色部分去掉后,结果与红色部分保留输出结果是等价的.
IS?
aa(0) = "1"
aa(1) = "SS"
aa(2) = "dd"
aa(3) = "12.3333"
aa(4) = "0.2033"
全是字串,Case Is <= 1
之类的条件?我就不要再说了吧
因为红色部分是永远执行不了,因为你没有>100。
试试
Dim aa(4)
aa(0) = "300"
aa(1) = "SS"
aa(2) = "dd"
aa(3) = "121.3333"
aa(4) = "0.2033"
For ii = 0 To UBound(aa)
Select Case aa(ii)
Case Is <= 1
tt = Format(aa(ii), "0.0##")
Case Is > 1, Is < 100
tt = Format(aa(ii), "0.0#")
Case Else
tt = aa(ii)
End Select
Debug.Print tt
Next ii
End Sub
Private Sub Form_Load()
ll
End Sub
输出
300.0
SS
dd
121.33
0.203
因为红色部分是永远执行不了,因为你没有>100
11 18th, 2008
Private Sub Command1_Click()
10 MsgBox "1"
20 MsgBox "2"
999 MsgBox "3"
56564665 MsgBox "4"
End Sub
像上面这段代码,行头为什么可以加数字啊? 加上这些数字有什么作用?
Private Sub Command1_Click()
GoTo 999
10 MsgBox "1"
20 MsgBox "2"
999 MsgBox "3"
56564665 MsgBox "4"
End Sub
是行标签
行号
好像很古老的BASIC用
这里还有一个自动添加行号的工具
http://www.vbkbase.com/Html/tools/VBControls/31020080908195057.html
谢谢各位了~~~~
11 11th, 2008
要求:
1. 用usercontrol做三个对话框(分别可以输入年,月,日),能对入力的数字做验证,也就是只能输入数字,数字以外的东西输入不进去,输入的三个框中是分别是2008 01 01到2009 01 01以内的数字,如果不在这个范围内,要显示输入错误的信息。
这个我在form里面已经实现。写在usercontrol里面编译后拖到form里面usercontrol里面的代码怎么都没有了?
2. 点“表示”按钮的时候,label标签中显示刚刚输入的数字,如20080918
3. 用Timer和statusStrip控件实现在下面的状态框的左下角显示当前的时间
4. 按追加按钮,在数据集(dataset)中将ID和日期输入
5. 出力按下的时候,将数据集中的数据输出成一个XML格式的表格
对不起我好像只有20分了,希望高手给好好指点一下,因为自己刚刚学vb.net,对于工具怎么使用都不怎么会,所以请耐心的和我说一下,小弟不胜感激~~
10 13th, 2008
DBF数据格式如下:
sn data
AAA-1 122
AAA-2 222
AAA-3 221
AAA-10 11
AAA-11 22
AAA-13 44
AAA-21 77
————————-
需查找sn列中去掉“AAA-”后的数字大于10的sn,data列。
请问SQL语句如何写?
如果sql = "select sn,data from tableName where sn>'AAA-10' order by sn"
貌似会AAA-2 > AAA-10
可我要求的的是AAA-10 > AAA-2
DBF没用过,不知道相关函数,比如ACCESS可以:
sql = "select sn,data from tableName where clng(mid(sn,5))>10 order by clng(mid(sn,5)"
如果AAA-不是固定的,可用一下instr
sql = "select sn,data from tableName where sn>'AAA-10' and length(sn)>5 order by sn"
access
SELECT sn, data from mytable where clng(mid(sn,5,len(sn)-4))>10
08 20th, 2008
例如:543.78元
我想得到的为伍百肆拾三元柒毛八分哦
Private Function dfNumberToBig(ByVal strN As String) As String
Select Case strN
Case "0 "
dfNumberToBig = "零 "
Case "1 "
dfNumberToBig = "壹 "
Case "2 "
dfNumberToBig = "贰 "
Case "3 "
dfNumberToBig = "叁 "
Case "4 "
dfNumberToBig = "肆 "
Case "5 "
dfNumberToBig = "伍 "
Case "6 "
dfNumberToBig = "陆 "
Case "7 "
dfNumberToBig = "柒 "
Case "8 "
dfNumberToBig = "捌 "
Case "9 "
dfNumberToBig = "玖 "
End Select
End Function
谢谢楼上的兄弟拉
请问还有什么好的方法不?
源代码都有了,复制下来用不就行了,这不都是现成的了吗?
谢谢microtry了
我没看懂上面的代码哦。。
能加点注释不啊。。
万分感谢。。。。
同一种程序有很多写法,上面那个算法写得有点麻烦了。等我给你一个简练点的。
建立一个模块,将下面的代码拷贝的模块里。
注意:暂时没实现下面两个功能。
1、零百零十零万的缩位。
2、没有超出长度的处理,超过预期数字长度将导致程序崩溃。如果你把它用在商业用途,一定要小心这个现象。
函数叫ChinaNumericGet,参数是一个Double值。你只要“金额=ChinaNumericGet(数字)”就可以了。至于这个程序具体的原理如果详细说起来比较多,大致就是一个查表法。
我写程序不喜欢用Select和If Then,因为太麻烦,不容易扩展。
如果你把conBitNameTable的值改为“头十百千万十百千亿十百千万十百千兆十百千万十百千亿十百千万十百千”;把Format(pValue, "#.00 ")改成Format(pValue, "# ")。则可以用来给养猪场清点大肥猪。
^_^
Const conBitNameTable As String = "分角元十百千万十百千亿十百千万十百千兆十百千万十百千亿十百千万十百千 "
Const conNumericTable As String = "零壹贰叁肆伍陆柒捌玖 "
Public Function ChinaNumericGet(ByVal pValue As Double) As String
Dim tOutStr As String
Dim tValueStr As String
Dim tValueBits() As Byte
Dim tValueBitsLen As Long
Dim tValueBitsIndex As Long
tValueStr = Format(pValue, "#.00 ")
tValueStr = Replace(tValueStr, ". ", " ")
tValueBits() = StrConv(tValueStr, vbFromUnicode)
tValueBitsLen = UBound(tValueBits())
Dim tValueBitsLenCheck As Boolean
tValueBitsLenCheck = tValueBitsLen > (Len(conBitNameTable) - 1)
Dim tBitStr As String
Dim tBitIndex As Long
For tValueBitsIndex = tValueBitsLen To 0 Step -1
tBitStr = Mid(conNumericTable, tValueBits(tValueBitsIndex) - 47, 1)
tBitIndex = tValueBitsLen - tValueBitsIndex + 1
tBitStr = tBitStr & Mid(conBitNameTable, tBitIndex, 1)
tOutStr = tBitStr & tOutStr
Next
ChinaNumericGet = tOutStr
End Function
下面是程序的实际运行结果。
输入:1233456789.123
输出:壹十贰亿叁千叁百肆十伍万陆千柒百捌十玖元壹角贰分
输入:1000000000.123
输出:壹十零亿零千零百零十零万零千零百零十零元壹角贰分
楼上的妹妹,程序要给别人用首先确保你的代码是自完备的,否则会导致别人的代码甚至项目崩溃,我的代码7年前写的,虽然不够完美,但至少是安全的代码和没有错误的代码
举个例子:
执行你的代码:Text1.Text = ChinaNumericGet( "abc ")
结果崩溃:实时错误‘13’类型不匹配
执行我的代码:Text1.Text = dfTransToBig( "abc ")
结果:空字符串
其次您的计算结果好象有误啊:
再举个例子
输入:1000050000.123
ChinaNumericGet输出:壹十零亿零千零百零十伍万零千零百零十零元壹角贰分
dfTransToBig输出:壹拾亿伍万圆壹角贰分(这里不需要读出零)
十亿五千万被你转换成“壹十零亿零千零百零十伍万……”
包括你举的1000000000.123的结果,读都读不通
在举个关于读零的例子
输入1005.123
ChinaNumericGet输出:壹千零百零十伍元壹角贰分(还是读不通)
dfTransToBig输出:壹仟零伍圆壹角贰分(这里只读一次零)
顺便说一句,你的“十”应该是“拾”,当然这倒是小问题了
解决这个问题是要求你具备一些基本数学和财务知识的
关注,小鲜美很长时间没来VB版了啊,呵呵
写法的确许多。读法要看楼主具体要求了。
也给贴个示例,如果要向microtry(米醋)那样的读法,可以用replace进一步格式化
Function GetRMB(dMoney As Currency) As String
Dim sMoney As String
Dim sGetRMB As String
Dim sPos As Variant
Dim i As Integer, j As Integer
'格式化
sMoney = Format(dMoney, "##0.00 ")
'用中文替换阿拉伯数字并去掉小数点
sMoney = Replace(sMoney, "0 ", "零 ")
sMoney = Replace(sMoney, "1 ", "壹 ")
sMoney = Replace(sMoney, "2 ", "贰 ")
sMoney = Replace(sMoney, "3 ", "叁 ")
sMoney = Replace(sMoney, "4 ", "肆 ")
sMoney = Replace(sMoney, "5 ", "伍 ")
sMoney = Replace(sMoney, "6 ", "陆 ")
sMoney = Replace(sMoney, "7 ", "柒 ")
sMoney = Replace(sMoney, "8 ", "捌 ")
sMoney = Replace(sMoney, "9 ", "玖 ")
sMoney = Replace(sMoney, ". ", vbNullString)
'从字符串的最后一位开始向前插入相应的单位
sGetRMB = "整 "
sPos = Array( "分 ", "角 ", "元 ", "拾 ", "佰 ", "仟 ", "万 ", "拾 ", "佰 ", "仟 ", "亿 ", "拾 ", "佰 ", "仟 ", "万 ", "兆 ")
For i = Len(sMoney) To 1 Step -1
sGetRMB = Mid(sMoney, i, 1) & sPos(j) & sGetRMB
j = j + 1
Next
If dMoney < 0 Then sGetRMB = "负 " & sGetRMB
GetRMB = sGetRMB
End Function
我的代码只是阐述一种算法,而不是给他用的。既然这样说的话,我就给一个完整的代码好了。
谢谢楼上的大哥大姐了。。
good