| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1875 人关注过本帖
标题:缺少更新键列信息
只看楼主 加入收藏
JossinC
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-7-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
缺少更新键列信息
Private Sub Command2_Click()
DataGrid2.Visible = False
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim r As New ADODB.Recordset
conn.Open "provider=Microsoft.jet.oledb.4.0;data source=" & App.Path & "\trainTime.mdb;persist security info = false"
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Calendar1.Value = "" Then
MsgBox "请输入完整的信息"
GoTo m
Else
sq = "select * from [Ticket],[Train] where Ticket.tno = Train.tno and Ticket.tno = '" & Text1.Text & "' and Fsta = '" & Text2.Text & "' and Lsta = '" & Text3.Text & "' and Dtime= #" & Calendar1.Value & "#"
rs.Open sq, conn, 1, 2
If rs.RecordCount = 0 Then
MsgBox " 无此车票"
GoTo m
rs.Close
Else
rs.Close

sql = "select Train.tno as 车次号,Dtime as 出发日期,Cnum as 座位数量,LastTicket as 剩余票数 from [Ticket],[Train] where Ticket.tno = Train.tno and Ticket.tno = '" & Text1.Text & "' and Fsta = '" & Text2.Text & "' and Lsta = '" & Text3.Text & "' and Dtime= #" & Calendar1.Value & "#"
rs.CursorLocation = adUseClient
rs.Open sql, conn, 1, 2
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
DataGrid1.Visible = True
a = MsgBox("确定购买?", 35, "确认")
If a = vbYes Then
If rs!剩余票数 < 1 Then
MsgBox "此票已售完"
Else
   sql = "select * from purchase"
   r.Open sql, conn, 1, 2
   r.AddNew
   r!tno = rs!车次号
   r!Dtime = rs!出发日期
   rs!剩余票数 = rs!剩余票数 - 1

   r!Seat = rs!座位数量 - rs!剩余票数
   rs.Update
   r.Update
   End If
   End If
   End If
   End If
m:

   
   
   
End Sub
运行起来出现了上述缺少更新或刷新的键列信息,主键没有问题,请问大神们怎么修改?

[此贴子已经被作者于2016-7-18 20:33编辑过]

搜索更多相关主题的帖子: 信息 where false source security 
2016-07-18 20:31
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:10 
我估计是purchase中字段你给的不全,如果中间有不可为空的字段,应该就是这个错误
2016-07-18 22:46
JossinC
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-7-18
收藏
得分:0 
我看了一下Purchase数据表,没有问题。显示的是rs.update 报错,用监视窗口显示表达式在上下文中未定义,类型empty。
2016-07-19 19:25
JossinC
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-7-18
收藏
得分:0 
回复 2楼 xiangyue0510
我看了一下Purchase数据表,没有问题。显示的是rs.update 报错,用监视窗口显示表达式在上下文中未定义,类型empty。
2016-07-19 19:26
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:10 
程序代码:
RS.Open "Select * From 数据表名", 数据库连接对象, 第一个参数, 第二个参数
'第一个参数:游标
adOpenForwardOnly = 0     '游标只向前浏览记录
adOpenKeyset = 1          '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。
adOpenDynamic = 2         '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中支持全功能浏览。
adOpenStatic = 3          '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动
'第二个参数:锁定类型
adLockReadOnly = 1        '锁定类型,默认的,只读,不能作任何修改
adLockPessimistic = 2     '当编辑时立即锁定记录,最安全的方式
adLockOptimistic = 3      '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等

'假定数据库连接对象是 conn ,因此一般
'读采用
RS.Open sql1, conn, 2, 2
'写(包括新增与修改)采用
RS.Open sql2, conn, 3, 2

'你的 rs.Open sql, conn, 1, 2  是不能更新数据的,当然在 rs.update 出现错误。

其他语句没有详细看,你自己检测吧。

请不要选我!!!
2016-07-19 19:54
快速回复:缺少更新键列信息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051445 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved