如何使用vb.net和sql server或ms进行自动编号.使用权 [英] how to make AutoNumber with vb.net and sql server or ms. access

查看:155
本文介绍了如何使用vb.net和sql server或ms进行自动编号.使用权的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好大师,

我想请教主人,我想在使用vb.net或vb 6.0的最终演讲的源代码中使用这样的AutoNumber

文本1.文字="0207110001"

02 =引入许多文件
07 =月份介绍
11 =年份的介绍
0001 =排序编号

因此,即使在同一个月中,排序数字也会增长"1",如果月份增加了"1",而年份也增加了"1",那么回到排序数字的开头="0001"

请高手帮助和启发,我喜欢与数据库连接并且对数据库进行检查的源代码.

hello masters,

I want to ask the help of the master, I''d like an AutoNumber like this in the source code for the final lecture using vb.net or vb 6.0

text1. text = "0207110001"

02 = the introduction of a number of documents
07 = introduction of months
11 = the introduction of year
0001 = sorting number

so while still in the same month a sorting number will grow "1" and if the month increased "1" and the year also increased "1" then back to the beginning of sorting number = "0001"

Please help and enlightenment from the masters love my source code that has a connection to the database and there are checks to the database

推荐答案

假设您有一个名为'NextNumber的表',您可以在其中存储您的增量号码.假设您的表具有以下字段(列)("DocPrefix","YearPrefix","MonthPrefix","NextNo","mCounter")
您可以尝试以下代码段:



公共函数GetNextAutoNo()作为字符串
昏暗的mstrDocPrefix,mstrMonthPrefix,mstrNext否作为字符串
将intYearPrefix,intmCounter,intNewmCounter变暗为Integer
昏暗的cmdNextAutoNumber为OleDbCommand = gbConn.CreateCommand
昏暗的sqlGetNextAutoNo As String ="SELECT * FROM NextAutoNo"
将drDataReader昏暗化为OleDbDataReader
''*********初始化变量
GetNextAutoNo ="
''
gstrDocPrefix =":mstrDocPrefix ="
gbstrMonthPrefix =":mstrMonthPrefix ="
gbstrNextNo =":mstrNextNo ="
gbintYearPrefix = 0:intYearPrefix = 0
gbintCounter = 0:intmCounter = 0
''注意:gstrDocPrefix,gbstrMonthPrefix,gbstrNextNo,gbIntYearPrefix和gbintCounter是在此公共函数外部声明的全局变量
试试
OpenDBConnection()
使用cmdNextAutoNumber
.Connection = gbConn
.CommandText = sqlGetNextAutoNo
drDataReader = .ExecuteReader
如果drDataReader.HasRows然后
While(drDataReader.Read())
mstrDocPrefix = IIf(不是IsDBNull(drDataReader.Item("DocPrefix").ToString),drDataReader.Item("DocPrefix").ToString,"01")
intYearPrefix = IIf(不是IsDBNull(drDataReader.Item("YearPrefix").ToString),CInt(drDataReader.Item("YearPrefix").ToString),Year(Today))
mstrMonthPrefix = IIf(不是IsDBNull(drDataReader.Item("MonthPrefix").ToString),drDataReader.Item("MonthPrefix").ToString,Month(Today))
mstrNextNo = IIf(不是IsDBNull(drDataReader.Item("NextNo").ToString),drDataReader.Item("NextNo").ToString,"0001")
intmCounter = IIf(不是IsDBNull(drDataReader.Item("mCounter").ToString),CInt(drDataReader.Item("mCounter").ToString),1)
结束时
其他
mstrDocPrefix ="01"
intYearPrefix =年(今天)
mstrMonthPrefix =月份(今天)
mstrNextNo ="0001"
intmCounter = 1
如果结束
结尾为
''
''intNewmCounter = intmCounter + 1
如果不是(intYearPrefix = Year(Today))然后
intYearPrefix =年(今天)
intNewmCounter = 1
如果结束
''
mstrCurrentMonth =月(今天)
mstrCurrentMonth = IIf(Len(mstrCurrentMonth)< 2,"0"& mstrCurrentMonth,mstrCurrentMonth)
如果不是(mstrMonthPrefix.Trim = mstrCurrentMonth.Trim)然后
mstrMonthPrefix = mstrCurrentMonth
intNewmCounter = 1
如果结束
''
如果(intNewmCounter = 1)或(Len(mstrNextNo)< 4),则
intmCounter = intNewmCounter
mstrNextNo = GenerateNextNumber(intNewmCounter)
如果结束
''
GetNextAutoNo = mstrDocPrefix.Trim& mstrMonthPrefix.Trim& intYearPrefix.ToString& mstrNextNo.Trim

intmCounter + = 1

mstrNextNo = GenerateNextNumber(intmCounter)
''将值传输到全局变量
‘***左侧的变量是在此子例程外部声明的全局变量
gstrDocPrefix = mstrDocPrefix
gbstrMonthPrefix = mstrMonthPrefix
gbstrNextNo = mstrNextNo
gbintYearPrefix = intYearPrefix
gbintCounter = intmCounter
异常捕获
MsgBox(例如消息,MsgBoxStyle.Exclamation,自动编号错误!")
终于
CloseDBConnection()
结束尝试
返回GetNextAutoNo
结束功能

公共函数GenerateNextNumber(ByVal NextCounter作为整数)作为字符串
GenerateNextNumber ="
选择案例NextCounter
案例1至9
GenerateNextNumber ="000"& NextCounter
案例10至99
GenerateNextNumber ="00"& NextCounter
案例100至999
GenerateNextNumber ="0"& NextCounter
案例1000至9999
GenerateNextNumber = NextCounter
结束选择
返回GenerateNextNumber
结束功能

在您的表单中,您可以添加以下代码:

私人子Button_Click(ByVal发送者为System.Object,ByVal e为System.EventArgs)处理Button.Click
Text1.Text = GetNextAutoNo
结束子

希望对您有帮助.

谢谢
Assuming you have a table called ‘NextNumber’ where you store your incremental number. Assume your table has the following fields(columns) ("DocPrefix","YearPrefix","MonthPrefix","NextNo","mCounter")
you can try this code segments:



Public Function GetNextAutoNo() As String
Dim mstrDocPrefix, mstrMonthPrefix, mstrNextNo As String
Dim intYearPrefix, intmCounter, intNewmCounter As Integer
Dim cmdNextAutoNumber As OleDbCommand = gbConn.CreateCommand
Dim sqlGetNextAutoNo As String = "SELECT * FROM NextAutoNo"
Dim drDataReader As OleDbDataReader
''*********Initialise Variables
GetNextAutoNo = ""
''
gstrDocPrefix = "" : mstrDocPrefix = ""
gbstrMonthPrefix = "" : mstrMonthPrefix = ""
gbstrNextNo = "" : mstrNextNo = ""
gbintYearPrefix = 0 : intYearPrefix = 0
gbintCounter = 0 : intmCounter = 0
''Note: gstrDocPrefix,gbstrMonthPrefix,gbstrNextNo,gbIntYearPrefix, and gbintCounter are global variables declared outside this public function
Try
OpenDBConnection()
With cmdNextAutoNumber
.Connection = gbConn
.CommandText = sqlGetNextAutoNo
drDataReader = .ExecuteReader
If drDataReader.HasRows Then
While (drDataReader.Read())
mstrDocPrefix = IIf(Not IsDBNull(drDataReader.Item("DocPrefix").ToString), drDataReader.Item("DocPrefix").ToString, "01")
intYearPrefix = IIf(Not IsDBNull(drDataReader.Item("YearPrefix").ToString), CInt(drDataReader.Item("YearPrefix").ToString), Year(Today))
mstrMonthPrefix = IIf(Not IsDBNull(drDataReader.Item("MonthPrefix").ToString), drDataReader.Item("MonthPrefix").ToString, Month(Today))
mstrNextNo = IIf(Not IsDBNull(drDataReader.Item("NextNo").ToString), drDataReader.Item("NextNo").ToString, "0001")
intmCounter = IIf(Not IsDBNull(drDataReader.Item("mCounter").ToString), CInt(drDataReader.Item("mCounter").ToString), 1)
End While
Else
mstrDocPrefix = "01"
intYearPrefix = Year(Today)
mstrMonthPrefix = Month(Today)
mstrNextNo = "0001"
intmCounter = 1
End If
End With
''
''intNewmCounter = intmCounter + 1
If Not (intYearPrefix = Year(Today)) Then
intYearPrefix = Year(Today)
intNewmCounter = 1
End If
''
mstrCurrentMonth = Month(Today)
mstrCurrentMonth = IIf(Len(mstrCurrentMonth) < 2, "0" & mstrCurrentMonth, mstrCurrentMonth)
If Not (mstrMonthPrefix.Trim = mstrCurrentMonth.Trim) Then
mstrMonthPrefix = mstrCurrentMonth
intNewmCounter = 1
End If
''
If (intNewmCounter = 1) Or (Len(mstrNextNo) < 4) Then
intmCounter = intNewmCounter
mstrNextNo = GenerateNextNumber(intNewmCounter)
End If
''
GetNextAutoNo = mstrDocPrefix.Trim & mstrMonthPrefix.Trim & intYearPrefix.ToString & mstrNextNo.Trim

intmCounter += 1

mstrNextNo = GenerateNextNumber(intmCounter)
''Transfer values to global variables
‘***the variables on the left are global variables declared outside this sub routine
gstrDocPrefix = mstrDocPrefix
gbstrMonthPrefix = mstrMonthPrefix
gbstrNextNo = mstrNextNo
gbintYearPrefix = intYearPrefix
gbintCounter = intmCounter
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Auto Number Error!")
Finally
CloseDBConnection()
End Try
Return GetNextAutoNo
End Function

Public Function GenerateNextNumber(ByVal NextCounter As Integer) As String
GenerateNextNumber = ""
Select Case NextCounter
Case 1 To 9
GenerateNextNumber = "000" & NextCounter
Case 10 To 99
GenerateNextNumber = "00" & NextCounter
Case 100 To 999
GenerateNextNumber = "0" & NextCounter
Case 1000 To 9999
GenerateNextNumber = NextCounter
End Select
Return GenerateNextNumber
End Function

In your form you can add this code:

Private Sub Button_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
Text1.Text=GetNextAutoNo
End Sub

I hope this will assist you.

Thanks


执行此操作的最佳方法是将序列号存储在数据库中,然后每当其他数字增加时就将其重置.总数可以用代码或数据库来构建,您可以编写一个proc来完成,并根据需要增加该数目.
The best way to do this is to store your sequence number in the DB, and then reset it every time the other numbers increase. The overall number would be built in code, or in the DB, you could write a proc to do it and increment the number as needed.


这篇关于如何使用vb.net和sql server或ms进行自动编号.使用权的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆