VB6.0 怎么实现自动生成编号?

我在添加数据是要自动生成一个编号(我使用的是Asscess2000数据库,使用了Adodc1DTPicker1等基本控件)格式:XXX-XXX-XXX第一个XXX是部门缩... 我在添加数据是要自动生成一个编号(我使用的是Asscess2000数据库,使用了Adodc1 DTPicker1等基本控件)
格式:XXX-XXX-XXX
第一个XXX是部门缩写,在我的数据表type中
第二个XXX是根据DTPicker1所选的时间至2007-1-1的第XXX周(初始时间是2007年1月1日(星期一),如DTPicker1选择2007-1-1,则XXX=001;2007-2-8,则XXX=002依次类推。
第三个XXX是从001开始的自动编号
(001 002 003 004 。。。。。。)每添加一条自动+1
请问高手、大虾、神人们如何实现?谢谢了
生成在一个文本框Text1即可
可是我不知道第二个XXX怎么实现
如DTPicker1选择2007-1-1,则XXX=001;2007-1-8,则XXX=002依次类推。 (上面写错了,不好意思)2007-1-15,则XXX=003,2007-1-22,则XXX=004,依次类推。
每个部门的第三个XXX都是从001开始排的。
展开
 我来答
oaita
推荐于2016-06-18 · TA获得超过708个赞
知道小有建树答主
回答量:669
采纳率:100%
帮助的人:806万
展开全部
'调试通过。。。。。。。。。。。。

Option Explicit
Dim idnum(2) As Long '主要保存用于自动增长的ID 一个部门存储一个,有多少部门有多少数组

Private Sub Combo1_Click()
Text1.Text = getNewID
End Sub

Private Sub Command1_Click()
'当我们保存记录时,需要让idnum+1 并且保存到文件中去
idnum(Combo1.ListIndex + 1) = idnum(Combo1.ListIndex + 1) + 1
Dim fname As String
If Right(App.Path, 1) = "\" Then
fname = App.Path & "myid.txt"
Else
fname = App.Path & "\myid.txt"
End If
Open fname For Output As #1
'每个部门的顺序要牢记 或者你改成ini读取方式
Print #1, "id=" & CStr(idnum(1))
Print #1, "id=" & CStr(idnum(2))
Close #1
End Sub

Private Sub Command2_Click()
Text1.Text = getNewID
End Sub

Private Sub DTPicker1_Change()
Text1.Text = getNewID
End Sub

Private Sub Form_Load()
On Error Resume Next
Command1.Caption = "保存编号"
Command2.Caption = "生成编号"
Combo1.AddItem "开发部"
Combo1.AddItem "质检部"
Combo1.ListIndex = 0

'自动增长id我主要通过记录到文件中来实现
'在程序初始化时判断当前目录有没有myid.txt 如果没有刚建立其内容为id=***,有的话刚把***读取出来
Dim fname As String
If Right(App.Path, 1) = "\" Then
fname = App.Path & "myid.txt"
Else
fname = App.Path & "\myid.txt"
End If

If Dir(fname) = "" Then
'说明文件不存在
Open fname For Output As #1
Print #1, "id=0"
Print #1, "id=0"
idnum(1) = 0
idnum(2) = 0
Close #1
Else
'文件存在读取id值
Open fname For Input As #1
Dim aline As String
Line Input #1, aline
idnum(1) = Val(Mid(aline, 4))

Line Input #1, aline
idnum(2) = Val(Mid(aline, 4))
Close #1
End If

End Sub

Private Function getNewID() As String
'第一步,得到部门编号
'你应该根据选择的部门名称查询到对应的部门编号,在此我省去查询数据库的过程,直接得到编号
Dim partid As String
partid = Format(Combo1.ListIndex + 1, "000")

Dim dataid As String
'此处日期的控制判断,你自己考虑解决吧
dataid = Format((DTPicker1.Value - CDate("2006-12-31")) \ 7 + 1, "000")
Dim addid As String

'超出范围自行控制
addid = Format(idnum(Combo1.ListIndex + 1) + 1, "000")
getNewID = partid & dataid & addid

End Function
ymhacker
2008-03-08 · TA获得超过948个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:311万
展开全部
1. 在 包含 type 字段的表中建立 ID 字段, 类型为 自动编号
2. 用 datagrid 和 adodc 关联数据库以及表
3. 在 form 上画出 command1 , text1 和 DTPicker1 控件
4. 在command1 中添加代码
dim i as integer'定义一个全局变量,就是放到程序的最前面,不要放到sub块里面

Private Sub Command1_Click()
i=DateDiff("ww", "2007-1-1", DTPicker1.Value) + 1
'判断长度
'如果长度为1,补2个0
if len(i)=1 then
text1.Text="00"& i
else '否则补1个0,因为最大52个星期。2位数,所以补1个0
text1.Text="0"& i
end if

Datediff日期计算
"ww"表示周(星期)
用DTPicker1.Value-2007-1-1默认为0,所以+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清静秀8E
2008-03-07 · TA获得超过206个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:233万
展开全部
方法一:
你的数据库该表应该有个自动递增ID,每增加记录的时候可以先读出当前数据库表中递增ID号的最大数,然后在你的第三个XXX那里加上1即可
方法二:加个控件记录你当前已经最大ID号,然后在你的xxx那里+1即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
castro2009
2008-03-07
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
1. 在 包含 type 字段的表中建立 ID 字段, 类型为 自动编号
2. 用 datagrid 和 adodc 关联数据库以及表
3. 在 form 上画出 command1 , text1 和 DTPicker1 控件
4. 在command1 中添加代码

Dim iniDate As Date
iniDate = "2007-01-01"

Text1.Text = Adodc1.Recordset("type") & "-" & Format(Int((DTPicker1.value - iniDate) / 7), "000") & "-" & Format(Adodc1.Recordset("ID"), "000")

注: 楼主说明中需要取的是2007-01-01至dtpicker1的周数,但例子中给出的却是2007-01-01至dtpicker1的月数,如果是月数,则用以下代码

Dim iniDate As Date
iniDate = "2007-01-01"

Text1.Text = Adodc1.Recordset("type") & "-" & Format((Year(DTPicker1.Value) - 2007) * 12 + Month(DTPicker1.Value), "000") & "-" & Format(Adodc1.Recordset("ID"), "000")

使用: 在 datagrid 中选择一条记录,单击 command1, text1即生成编号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alwaysfirst
2008-03-07 · TA获得超过491个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:228万
展开全部
dim i as integer
i=DateDiff("ww", "2007-1-1", DTPicker1.Value) + 1
'判断长度
'如果长度为1,补2个0
if len(i)=1 then
text1.Text="00"& i
else '否则补1个0,因为最大52个星期。2位数,所以补1个0
text1.Text="0"& i
end if

Datediff日期计算
"ww"表示周(星期)
用DTPicker1.Value-2007-1-1默认为0,所以+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式