Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

SQL中的update代码错误3144,但将变量替换成常量可以运行

小眼睛  发表于:2015-05-22 19:30:51  
复制

以下为代码:

    Dim i As Integer

    Dim str1 As Integer
    Dim str2 As String 
    Dim str3 As String 
    Dim a(50) As String
    Dim sql As String
    Dim n As Integer
    Dim m1 As String
    i = 1
    str1 = 1
    str2 = “数学,英语,"  ‘str2为课程名称
    str3 = "14金2"     ’str3为班级名称
    Do While str1 <> 0   
    str1 = InStr(str2, ",")
    If str1 <> 0 Then
    a(i) = Left(str2, str1 - 1)
    str2 = Mid(str2, str1 + 1)
    i = i + 1
    End If
    Loop
    
    i = 1
    sql="UPDATE 学生成绩表 INNER JOIN " & str3 & " ON 学生成绩表.学生姓名 = [" & str3 & "].学生姓名 SET ["& str3 & "]. "& a(i) & " = [学生成绩表].[期末总成绩] WHERE 学生成绩表.考试科目='" & a(i) & "'  AND 学生成绩表.班级='" & str3 & "'"
    MsgBox sql
    DoCmd.RunSQL sql

运行时报错

但是该语句在查询中可以运行


请各位大虾帮忙看看到底什么问题。

 

Top
小眼睛 发表于:2015-05-22 20:36:30

补充一下更新的两张表的图

学生成绩表

14金2学生成绩表




金宇 发表于:2015-05-23 08:44:32
提示什么错误?最好将你的示例上传

小眼睛 发表于:2015-05-23 10:34:48

示例程序如下

点击下载此附件

代码区域运行出现以下错误

但是在查询设计器中可以运行。



小眼睛 发表于:2015-05-23 11:37:24

问题自己解决了。之前的更新语句我实在找不到错误在哪里,因此我将更新拆分成两步来完成,通过建立了一张临时表来传值。我将更改后的代码贴上来,大家共同学习。

    DoCmd.SetWarnings False
      sql = "select 班级,学生姓名,期末总成绩 as " & a(i) & " into temporary from 学生成绩表 where 班级='" & str3 & "' and 考试科目='" & a(i) & "'" '生成临时表temporary
    MsgBox sql
    DoCmd.RunSQL sql
    
    sql = "update " & str3 & "学生成绩表  inner join [temporary] on [" & str3 & "学生成绩表].学生姓名 = temporary.学生姓名 set [" & str3 & "学生成绩表]." & a(i) & " = [temporary].[" & a(i) & "]"
    MsgBox sql
    DoCmd.RunSQL sql

    DoCmd.SetWarnings True



金宇 发表于:2015-05-27 08:27:37

sql = "UPDATE  学生成绩表  INNER  JOIN  [" & str3 & "学生成绩表]  ON  学生成绩表.学生姓名 =[" & str3 & "学生成绩表].学生姓名  SET  [" & str3 & "学生成绩表]." & a(i) & " = [学生成绩表].[期末总成绩]  WHERE  学生成绩表.考试科目='" & a(i) & "'  AND  学生成绩表.班级='" & str3 & "'"


这样就可以正常更新,我检查到[" & str3 & "学生成绩表]." & a(i) & "  .这里原来有空隔,并且整个sql语句结束的时候多了两个双引号



总记录:5篇  页次:1/1 9 1 :