删除数据库单条记录所引起起的思考

tully 2006-03-23 10:29:26
前提,在VB窗体中,用adodb的connection及recordset进行数据库操作,并用用listbox1控件进行绑定显示。
在listbox1显示的窗体中对记录进行,增加,修改。
表名为userinfo,字段为id,name,password
进行单条记录修改时,为了对些记录进行标识,必须设一个识别号,在窗体上设为一个text1控件txtid。
现在一个问题就是txtid如何取得字段id的值。

----------------
是否还有别的方法可以在使用listbox控件显示数据库时对单个记录进行删除??

部分代码如下:
Private Sub listboxDisplay()
ListName.Clear
Dim cn As Connection
Dim rs As Recordset
Dim tempStr As String
Dim cnStr As String
Dim rsStr As String
cnStr = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\db\StockInfo2k.mdb"
rsStr = "select name from userinfo"
Set cn = New Connection
Set rs = New Recordset
cn.CursorLocation = adUseClient
cn.Open cnStr
rs.Open rsStr, cn
Do Until rs.EOF
tempStr = rs("name")
ListName.AddItem tempStr
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
'txtId.Text = ListName.Columns(1)--------------无法执行
End Sub
-----------------------------------------------
或者有别的方法:

那么是否有方法对数据库里自动编号的字段,进行重新自动编号。
如下:
1 小张
2 小李
3 大兵
4 大王
5 老黄
6 老孙
---------
当进行了对其中几个删除后
1 小张
5 老黄
6 老孙
-------------
有什么方法可以在数据库里进行重新排序,变成
1 小张
2 老黄
3 老孙
---------------------------------------------------------------------

...全文
107 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LichKingSZ 2006-03-23
Private Sub listboxDisplay()
ListName.Clear
Dim cn As Connection
Dim rs As Recordset
Dim tempStr As String
Dim cnStr As String
Dim rsStr As String
cnStr = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\db\StockInfo2k.mdb"
rsStr = "select * from userinfo" '这里改了
Set cn = New Connection
Set rs = New Recordset
cn.CursorLocation = adUseClient
cn.Open cnStr
rs.Open rsStr, cn
Do Until rs.EOF
tempStr = rs("name")
ListName.AddItem tempStr
listname.itemdata(listname.newindex)=rs("id") '加了这句
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

'你要删除的时候就这样行了
strSQL="delete from userinfo where id=" & ListName.itemdata(listname.listindex)
...
回复
LichKingSZ 2006-03-23
最详细莫过于MSDN了。。哈。。

ItemData 属性


返回或设置 ComboBox 或 ListBox 控件中每个项目具体的编号。

语法

object.ItemData(index) [= number]

ItemData 属性语法包含下面部分:

部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Index 对象中指定项目的编号。
Number 与指定项目相关联的数。


说明

ItemData 属性是一个长整型数的数组,它有与控件的 List 属性相同数目的项目。可以用与每一项相关的数来标识它们。例如,在 ListBox 控件中,可以用雇员身份号来标识每一个雇员的名字。填 ListBox 时,也要将雇员号填入 ItemData 相应的元素中。

ItemData 常常用做与 ListBox 控件中项目相关的数据结构数组的索引。

注意 利用 AddItem 方法在列表中插入一个项目时,在 ItemData 数组中也会自动插入一项。但是其值不会重新初始化为 0;它保持列表在插入项目之前该位置的值。用 ItemData 属性时,一定要在向列表中加入新项时,设置它的值。


你的“修改”功能代码是什么。。怎么会排成未位。。。
回复
tully 2006-03-23
可以谈一下原理吗?
经上述修改后。
可以准确地进行记录修改等操作。
但是修改记录后,则修改后的记录自动变成最后一列。看期其自动编号被排成末位。
------------
找了控件大全的电子档看了一下,没有关于listbox控件的。
想详细地请教这个原理。
---------------
希望该记录修改后,还能排在其原先的位置。
回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2006-03-23 10:29
社区公告
暂无公告