Access交流中心

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

怎么利用代码循环得到access数据库里的表的前2位字母 构造sql语句

冷书生  发表于:2016-11-29 16:16:54  
复制

数据表名如下图,

LINE表结构如下图,

POINT表结构如下图,

我想通过sql代码执行,批量更新Line表里的“起点管顶高”和“终点管顶高”字段内容
起点管顶高(计算方式:point表的地面高程-line表的起始埋深)

终点管顶高(计算方式:point表的地面高程-line表的终止埋深)
我的代码:
'*****************************分割线***************************
DoCmd.SetWarnings False
Dim dbs As Database
Dim tdf As TableDef
Dim strsql As String
Dim strName As String
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
strName = tdf.Name

DoCmd.RunSQL "UPDATE & LEFT(strName,2) &_LINE INNER JOIN & LEFT(strName,2) &_POINT ON & LEFT(strName,2) &_LINE.起始物探点号 = & LEFT(strName,2) &_POINT.物探点号 SET & LEFT(strName,2) &_LINE.起点管顶高程 = [& LEFT(strName,2) &_POINT].[地面高程]-[& LEFT(strName,2) &_LINE].[起始埋深]"
MsgBox "操作已执行完毕!", vbInformation + vbOKOnly
Next
MsgBox "操作执行完毕"
'*****************************分割线***************************
请问为什么不能执行,???谢谢指点

 

Top
西出阳关无故人 发表于:2016-12-02 10:48:40

应该是这样:

...

dim sql as string
Set dbs = CurrentDb

For Each tdf In dbs.TableDefs
strName = tdf.Name

sql="UPDATE " & LEFT(strName,2) & "_LINE  INNER JOIN " & LEFT(strName,2) & "_POINT ON " & LEFT(strName,2) & "... ..."

debug.print sql      '通过这一句在立即窗口打印你的sql语句,检查该sql语句的正确性。你的语句肯定是有问题的。

DoCmd.RunSQL sql

...




zhf_2003 发表于:2016-12-09 14:02:05

试试看

strsql = "UPDATE " & LEFT(strName,2) & "_LIE," & LEFT(strName,2) & "_POINT" & chr(10) 

strsql = strsql & "SET " & LEFT(strName,2) & "_LINE.起点管顶高程 = " & LEFT(strName,2) & "_POINT.地面高程-" & LEFT(strName,2) & "_LINE.起始埋深," & CHR(10)

strsql = strsql & LEFT(strName,2) & "_LINE.终点管顶高程 = " & LEFT(strName,2) & "_POINT.地面高程-" & LEFT(strName,2) & "_LINE.终止埋深" & CHR(10)

strsql = strsql & "WHERE " & LEFT(strName,2) & "_POINT.物探点号 = " &  LEFT(strName,2) & "_LINE.起始物探点号;"

DoCmd.RunSQL strsql


语法:SET A,B SET A.字段1=B.字段*,A.字段2=两个表任意字段的运算  where A.字段A=B.字段B;




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