做了个程序,使用ADO连接数据库,并显示到DATAGRID里面,程序可以增加数据信息到数据库,也可从数据库中删除选中数据信息。
为了能在增加以及删除时 自动编号列的编号能顺序编号,首先我的表里面有一个“序号”的自动编号列。在删除数据信息的时候,我将该“序号”列删除,重建一个“序号”的自动编号列。
现在又个问题,当将表里面的数据都删除的时候,重新增加信息的时,编号不是从1开始,而是从2开始,这是为什么?谢谢高手的解答。删除按钮的代码
Private Sub Command2_Click()
If Adodc1.Recordset.BOF = False Or Adodc1.Recordset.EOF = False Then
If MsgBox("确定删除?", vbYesNo, "警告") = vbYes Then
Adodc1.Recordset.Delete
cha = "select * from 表 order by 序号"
Adodc1.RecordSource = cha
Adodc1.Refresh
Call xuhao
End If
Else
MsgBox "未选中数据!", , "警告"
End If
End SubSub xuhao()
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb;"
myRs.Open "alter table [表] drop column 序号", myCon
myRs.Open "alter table [表] add 序号 autoincrement not null ",myCon
myCon.Close
cha = "select * from 表"
Adodc1.RecordSource = cha
Adodc1.Refresh
End Sub
为了能在增加以及删除时 自动编号列的编号能顺序编号,首先我的表里面有一个“序号”的自动编号列。在删除数据信息的时候,我将该“序号”列删除,重建一个“序号”的自动编号列。
现在又个问题,当将表里面的数据都删除的时候,重新增加信息的时,编号不是从1开始,而是从2开始,这是为什么?谢谢高手的解答。删除按钮的代码
Private Sub Command2_Click()
If Adodc1.Recordset.BOF = False Or Adodc1.Recordset.EOF = False Then
If MsgBox("确定删除?", vbYesNo, "警告") = vbYes Then
Adodc1.Recordset.Delete
cha = "select * from 表 order by 序号"
Adodc1.RecordSource = cha
Adodc1.Refresh
Call xuhao
End If
Else
MsgBox "未选中数据!", , "警告"
End If
End SubSub xuhao()
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb;"
myRs.Open "alter table [表] drop column 序号", myCon
myRs.Open "alter table [表] add 序号 autoincrement not null ",myCon
myCon.Close
cha = "select * from 表"
Adodc1.RecordSource = cha
Adodc1.Refresh
End Sub
1)新增时取 MAX(ID)+1 作为新的编号
2)删除时用一个事务做两步
a) DELETE table1 WHERE ID = 10001
b) UPDATE table1 SET ID = ID -1 WHERE ID > 10001
程序中处理序号的方法有许多,有的数据在查询时用SQL语句就可以解决,也可以根据显示数据的表格总行数,用循环插入,都很简单...