用UPDATE语句无法更新数据

zlh18984234193 2019-06-06 09:49:48

程序如图所示,我的数据库中有“姓名、第一单元到第八单元”共9个字段,当在窗体的姓名和单元中输入数据时能正确写入数据到数据库,如果记录中已经有了学生姓名,输入单元数据后应该更新这个单元的数据,但程序显示成功,数据却没有更新,请各位指点,哪儿出错……
...全文
532 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlh18984234193 2019-06-12
  • 打赏
  • 举报
回复
谢谢!听君一席话,胜过查阅N本书!我因工作需要,才开始学习VB,今后若有难处,还请多多指教!
milaoshu1020 2019-06-11
  • 打赏
  • 举报
回复
赞同楼上,用rs.open应该不适用于delete的sql语句;
应该用cn.execute;
现在还是人类 2019-06-11
  • 打赏
  • 举报
回复
like 我竟然打错字了
现在还是人类 2019-06-11
  • 打赏
  • 举报
回复
看了你的两个函数我也是醉了,首先是 ExecSQL 这个函数,有什么必要去写这么一个函数? 你直接 cn.execute SQL 不就可以了,还多弄个 Recordset 对象出来干嘛。 还有你的 RecExist 函数,只是为了判断数据是否存在? 如果给个大点的数据表查询给你,估计你单是为了判断是否有数据在时间上都耗死你。 因为ADO的这个RecordCount属性是轮训查询记录来统计数量的,有个几十万条含文本的数据都轮到你CPU发烫。 所以如果想得到查询的数据条数,通常的做法是直接用 SQL 语句用相同的条件先查询数据条数,再进行具体数据的查询。 SQL语句中有个叫聚合函数的理念,比如 Count 这个函数,就可以统计查询数据的数量。 而使用聚合函数得到这个数量的速度,远比你用ADO对象的RecordCount 属性得到数量的速度快出 n 倍,如:

' conn 为全局的数据连接对象

Dim str_sql As String, _
        i As Long, _
        rs As Recordset, _
        rs_count As Long
Set rs = New Recordset
' 这里是根据条件统计数据数量
str_sql = "select count(id) as c from 表1 where ff link '%ABC%'"
rs.open str_sql,conn,3,1
rs_count = rs!c
rs.close
if rs_count>0 then
    ' 这里是用相同的条件同时排序查询具体的数据
    str_sql = "select * from 表1 where ff link '%ABC%' order by id"
    rs.open str_sql,conn,3,1
    for i=1 to rs_count
        debug.print rs!id
        if i<rs_count then rs.movenext
    next i
    rs.close
end if
 Set rs = Nothing
这样的操作特别是对于数据量大的时候速度差别最为明显。 所以我之前才说你的数据库操作习惯很不正确。
zlh18984234193 2019-06-11
  • 打赏
  • 举报
回复
引用 7 楼 milaoshu1020 的回复:
你的ExecSQL函数是什么样子的?能不能发一下?

谢谢您的指点及提醒!帮我解决了大问题,我的很多编程习惯不够规范:数据库使用完后应该关闭释放内存。
zlh18984234193 2019-06-10
  • 打赏
  • 举报
回复
引用 7 楼 milaoshu1020的回复:
你的ExecSQL函数是什么样子的?能不能发一下?
谢谢指点,明天请你指正。
milaoshu1020 2019-06-10
  • 打赏
  • 举报
回复
你的ExecSQL函数是什么样子的?能不能发一下?
zlh18984234193 2019-06-09
  • 打赏
  • 举报
回复
如果您方便的话,请指点一下"insert into\update\delete from\select from"这几个语句的语法结构,主要是空格该加在哪里?为了能找到不能正确得到结果的原因,我都快崩溃了!
zlh18984234193 2019-06-09
  • 打赏
  • 举报
回复
谢谢指点!我想破脑袋也没找出语法错误,原来就差了一个空格!另外,这个程序中的一段删除数据库记录的代码也是运行没有错误提示,我也找不出错在哪里,可就是删除不了,是不是哪里也差一个空格呢?
现在还是人类 2019-06-09
  • 打赏
  • 举报
回复
应该是你的数据对比条件本来就不对,还有就是你的数据库操作习惯很不正确哟。
milaoshu1020 2019-06-07
  • 打赏
  • 举报
回复
不一样,加了一个空格;
zlh18984234193 2019-06-07
  • 打赏
  • 举报
回复
谢谢关注!但你回复的修改前后一样,什么意思呢?
milaoshu1020 2019-06-06
  • 打赏
  • 举报
回复
strsql = "update 学生成绩统计 set"
改成
strsql = "update 学生成绩统计 set "
试试?

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧