Vb.net 生成一个代码,如;50VIABC001“;如果该值为“;ABC";在“追加”之后再次出现;002‘&引用;003“;等等
我有一个网格,当用户点击任何名称时,它会将该名称的详细信息绑定到文本框、下拉列表等中 在这里,我有一个文本框,它为这个名字生成代码 我正在生成一个类似这样的代码。前4位数字“50VI”将保持不变,后面是“名字”、“中间名”和“姓氏”各1个字母。最后,它应该有3位数字,从“001”、“002”开始,依此类推 最后的3位数字应根据名字中间名和姓氏的3个字母确定 示例:50VIFMS001,其中F=FirstName M=MiddleName S=SirName。。 如果另一个人有类似的姓名格式,则代码应为“50VIFMS002”,依此类推 我已经在Vb.NET中编写了代码,但是现在我得到的值是“50VIFMS000”,其中“000”在任何地方都是相同的。所以我被最后三位数的部分卡住了Vb.net 生成一个代码,如;50VIABC001“;如果该值为“;ABC";在“追加”之后再次出现;002‘&引用;003“;等等,vb.net,gridview,data-binding,Vb.net,Gridview,Data Binding,我有一个网格,当用户点击任何名称时,它会将该名称的详细信息绑定到文本框、下拉列表等中 在这里,我有一个文本框,它为这个名字生成代码 我正在生成一个类似这样的代码。前4位数字“50VI”将保持不变,后面是“名字”、“中间名”和“姓氏”各1个字母。最后,它应该有3位数字,从“001”、“002”开始,依此类推 最后的3位数字应根据名字中间名和姓氏的3个字母确定 示例:50VIFMS001,其中F=FirstName M=MiddleName S=SirName。。 如果另一个人有类似的姓名格式,则代
Public Function GenNewCode()
Dim code As String = "50VI" & String.Concat(txtFName.Text.Trim,
txtMName.Text.Trim, txtLName.Text.Trim).ToUpper().Substring(0, 3)
Dim exec As New ExecuteQuery
Dim CNT As String = exec.ExecuteScalar("SELECT COUNT(*) FROM ADMDOCTMST WHERE DOCTCODE LIKE '" & code & "%'")
txtNewCode.Text = code & CNT.PadLeft(2, "0")
Return code
End Function
首先,启用选项Strict
Public Function GenNewCode()
函数具有返回类型
Dim code As String = "50VI" & String.Concat(txtFName.Text.Trim, txtMName.Text.Trim, txtLName.Text.Trim).ToUpper().Substring(0, 3)
检查你的括号。.ToUpper和.Substring作用于连接的字符串;不是每个字符串都是单独的,因此您需要输入名字中的前三个字符
txtNewCode.Text = code & CNT.PadLeft(2, "0")
您的序列从001开始,因此如果查询返回计数3。那就是001,002,003。您需要增加计数以获得新值。另外,.PadLeft最多只能工作9次。检查递增值的长度,然后相应地填充
Return code
自原始Dim代码以来,您没有更改代码的值,因此无法获得所需的值。设置代码&。。。添加到文本框不会更改代码的值
Public Function GenNewCode() As String
Dim FName As String = "Mary"
Dim MName As String = "ruth"
Dim LName As String = "Smith"
Dim FInitial As String = FName.Substring(0, 1).ToUpper
Dim MInitial As String = MName.Substring(0, 1).ToUpper
Dim LInitial As String = LName.Substring(0, 1).ToUpper
Dim code As String = "50VI" & FInitial & MInitial & LInitial
Dim exec As New ExecuteQuery
Dim CNT As Integer = CInt(exec.ExecuteScalar("SELECT COUNT(*) FROM ADMDOCTMST WHERE DOCTCODE LIKE '" & code & "%'"))
CNT += 1
Dim cntStr As String = CStr(CNT)
Dim Padding As Integer = 3 - cntStr.Length 'You want a total length of 3 so subtract existing length from 3
code &= cntStr.PadLeft(Padding, CChar("0"))
Return code
End Function
您是否调试并检查了Dim CNT as string=…中的内容?嗨,Dhaval,我在Dim CNT as string中得到了“0”。。和txtNewCode.text中的“50VIABH00”我猜我的代码不正确..如果名字像FirstName=A.MiddleName=“”(空)和lastName=C,它会给出这样的代码“50VIA.C”。。它需要“.”甚至“(空格)也需要。请帮我做这件事。谢谢你非常感谢你玛丽…它起了作用:-)祝你有一个愉快的一天。上帝保佑