以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  用replacefor 的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149920)

--  作者:gudao123456
--  发布时间:2020/5/15 12:01:00
--  用replacefor 的问题
如何用replacefor替换满足两个条件的记录,如表A中,有列x,y,z,G.替换条件是:用x值相同且y=\'户主\'的行的Z列的值替换当前行的G列值。可以吗?是否一定要遍历查找替换?
--  作者:有点蓝
--  发布时间:2020/5/15 12:15:00
--  
使用sql
u
pdate 表A set G=b.f from 表A as a,表A as b where a.x = b.x and b.y=\'户主\'
--  作者:gudao123456
--  发布时间:2020/5/15 16:17:00
--  
谢谢! 我这个是同一个表,不同的行列
[此贴子已经被作者于2020/5/15 16:21:46编辑过]

--  作者:有点蓝
--  发布时间:2020/5/15 16:26:00
--  
2楼就是同一个表的sql。搞不定就上传实例
--  作者:gudao123456
--  发布时间:2020/5/17 16:01:00
--  
谢谢!但这执行代码:

u
pdate 表A set G=b.f from 表A as a,表A as b where a.x = b.x and b.y=\'户主\'
时,出现了:对象名“表A”无效。
表A是有44万条记录的外部数据源,是导入后再定向到外部数据源,后再用合并方式,将数据读入的。
不知何故,谢谢!



--  作者:有点蓝
--  发布时间:2020/5/17 19:23:00
--  
sql不是代码,不能放到命令窗口执行。到这里执行:http://www.foxtable.com/webhelp/topics/1484.htm


--  作者:gudao123456
--  发布时间:2020/5/17 19:31:00
--  
我是在执行SQL命令窗口执行的
而且对表也用{表A}了 就是不行。查了一下网上,也有有关“SQL对象无效的解决办法”,但可能是理论太多或我的知识有限,还未研究通。

没时间研究,只能用下面代码完成,就是时间运行时间有点长,好在户主都在每户的第一个,否则也挺麻烦的。

Dim sfzhm As String
Dim hbh As String
Dim hzxm As String
For Each dr As DataRow In  DataTables("用户信息_1").DataRows
    hbh=dr("户编号")
    If dr("与户主关系")="户主"
        hzxm=dr("姓名")
        sfzhm=dr("证件号码")
    End If
    dr("户主姓名")=hzxm
    dr("户主证件号码")=sfzhm
Next

sql 速度是很快的,我觉很好,只是还没有学多少
[此贴子已经被作者于2020/5/17 20:30:42编辑过]