Access交流中心

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

照葫芦画瓢不成功啊,求助

chinasa  发表于:2013-08-13 10:27:01  
复制

'Set RS = CurrentDb.OpenRecordset("SELECT TB1.A, Sum(TB1.B) AS BB FROM TB1 GROUP BY TB1.A;")    这是老师原文,下面这句是我照搬的。
Set RS = CurrentDb.OpenRecordset("SELECT tbl_check_TC_ts_marks.BL_NO_ID, tbl_check_TC_ts_marks.CARGO_MARKS_AND_NUMBERS FROM tbl_check_TC_ts_marks GROUP BY tbl_check_TC_ts_marks.BL_NO_ID, tbl_check_TC_ts_marks.CARGO_MARKS_AND_NUMBERS;")

 

     '   SQL = "UPDATE TB2 SET  TB2.Y = " & RS("BB") & " WHERE TB2.X ='" & RS("A") & "'"    这是老师原文,下面这句是我照搬的。
    SQL = "UPDATE tbl_check_TC_TS SET tbl_check_TC_TS.CARGO_MARKS_AND_NUMBERS = " & RS("CARGO_MARKS_AND_NUMBERS") & " WHERE tbl_check_TC_TS.BL_NO_ID ='" & RS("BL_NO_ID") & "'"

 

我把上面这两句进行修改后,运行时提示我输入参数值N,然后又提示输入参数值M.最后在 DoCmd.RunSQL SQL出错。

 

 

老师的全文如下:

Sub A()

Dim SQL As String
Dim RS As DAO.Recordset

Set RS = CurrentDb.OpenRecordset("SELECT TB1.A, Sum(TB1.B) AS BB FROM TB1 GROUP BY TB1.A;")
RS.MoveFirst
Do While RS.EOF = False

    SQL = "UPDATE TB2 SET  TB2.Y = " & RS("BB") & " WHERE TB2.X ='" & RS("A") & "'"
    DoCmd.SetWarnings FLASE
    DoCmd.RunSQL SQL
    DoCmd.SetWarnings True
    RS.MoveNext
Loop
End Sub

 

 

Top
chinasa 发表于:2013-08-13 13:47:23

我测试了下,发现运行时提示要求输入数值N和数值M的,这里的N和M,是我tbl_check_TC_ts_marks(TB1)中一行记录的内容,其内容是“N/M”.

当我尝试把N/M中的斜杠删除后,再运行时提示输入参数值“NM”.

 

这里有两个问题:

1.为什么会提示输入参数值NM?

2.记录中的“N/M”内容本身就存在斜杠,这个问题如何处理?

 

望各位老师给予指点!



cspa 发表于:2013-08-13 14:01:04

access认为N和M是变量了。把代表"N/M"的变量两端加上 "'" ,改为"'" & 变量 & "'"  试试。



chinasa 发表于:2013-08-13 15:04:46

这里的“N/M”就是    “tbl_check_TC_ts_marks.CARGO_MARKS_AND_NUMBERS”    也是   RS("A")

 

我这样写对吗?RS("A")我已经加上引号了。

tbl_check_TC_ts_marks.CARGO_MARKS_AND_NUMBERS是表与字段名的引用,需要加引号吗?

 



cspa 发表于:2013-08-13 20:01:31

改为这样试试:

    SQL = "UPDATE tbl_check_TC_TS SET tbl_check_TC_TS.CARGO_MARKS_AND_NUMBERS ='" & RS("CARGO_MARKS_AND_NUMBERS") & "' WHERE tbl_check_TC_TS.BL_NO_ID ='" & RS("BL_NO_ID") & "'"



dbaseIIIer 发表于:2013-08-14 01:12:56

又长又臭的代码,改改吧:

Set RS = CurrentDb.OpenRecordset("SELECT BL_NO_ID as ID, CARGO_MARKS_AND_NUMBERS as MN FROM tbl_check_TC_ts_marks")

1. 那些 tbl_check_TC_ts_marks 是可以省略的

2. 你这个表应该那个  bill of lading no id  本来就唯一的了,你再加个GROUP BY 进去就是浪费电脑的电!


如果 tbl_check_TC_ts_marks 理论上应该是数子类型的,所以后面就不需要 

Docmd.RunSQL "UPDATE tbl_check_TC_TS SET CARGO_MARKS_AND_NUMBERS = " & RS("MN") & " WHERE BL_NO_ID =" & RS("ID") 



chinasa 发表于:2013-08-14 08:21:48

我等下测试下看看,感谢两位的指点。

 

总版主跟我是同个行业的吗?bl_no_id你能表达为bill of lading no id,看来是同行。

另外,在这个表中bl_no_id不是唯一的,这个表示个子表。

       tbl_check_tc_ts_marks是备注类型,不是数字类型,该表主要存储唛头。



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