vfp实验报告怎么写sql

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
VF数据库程序设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
VFP中select_-_sql命令及示例
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口vfp+sql使用方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
vfp+sql使用方法
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢千里之行 始于足下
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 6868 人关注过本帖
标题:求助:SQL 的Update命令,在VFP中到底应该怎样写?
等 级:贵宾
威 望:54
帖 子:382
专家分:1302
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:17&&&
求助:SQL 的Update命令,在VFP中到底应该怎样写?
各位大侠新年好,本来我认为是一个简单的问题,但楞是折腾了我几天,该试的都试过了,百度也搜索了,百度上的关于UPdate的写法,多与SQL-Sever、Oracle、MYSQL相关,专门针对VFP讲的很少,所以查了半天,还是不是要领.特来请教:
先看图,我有两张自由表,一张是ckddmx(中文含义:出库订单明细),有wldm、wlms4sql、sl、dj、cjrq(中文含义:物料代码、物料描述、数量、单价、出具日期)这几个主要字段,其中wlms4sql字段为空,需要从另一个表中更新.
另一个表为jxk(中文含义:机型库),字段为:pcode、pname、level1(中文含义:物料代码、物料描述、属性)
我的软件环境为VFP8.0版.
现在需要把ckddmx中的wlms4sql字段更新,更新的数据由jxk中的pname来替换,两个表中的wldm、pcode字段含义是一样的,只是名称不同而已,这个字段是关键字。
以前我处理这类问题,主要是两种办法,都可以成功,
一、用VFP中的Scan+Locate+Replace+Endscan命令,循环把需要的字段替换掉,这个办法用了好多年,在数据量大的时候,有点吃力。
二、用VFP中的Set relation to +Replace 命令,两表建立临时关系,再替换,也能行。(我把这两种方法写上,一是证明我不是单纯求作业,二是不希望您的答案再提这两种方法了,我已经会了)
现在由于数据量大,想用效率更高的SQL命令,避免在一个库循环,因循环太费时间了,但新的尝试总是不能成功。
我先后试过以下10条语句,在VFP中执行后,都是出错,出错信息我写在语句下方:
1、UPDATE ckddmx set ckddmx.wlms4sql = jxk.pname where ALLTRIM(ckddmx.wldm) = ALLTRIM(jxk.pcode)
反馈信息:能运行成功,但只是一次更新一条记录,显然不是我想要的结果,我要的是一次全部更新。
2、UPDATE ckddmx INNER JOIN jxk ON alltrim(ckddmx.wldm)=alltrim(jxk.pcode) SET ckddmx.wlms4sql = jxk.
反馈信息:命令中含有不能识别的短语或关键字。
3、UPDATE ckddmx LEft JOIN jxk ON alltrim(ckddmx.wldm)=alltrim(jxk.pcode) SET ckddmx.wlms4sql = jxk.
反馈信息:命令中含有不能识别的短语或关键字。
4、UPDATE ckddmx INNER JOIN jxk ON alltrim(ckddmx.wldm)=alltrim(jxk.pcode) SET ckddmx.wlms4sql = jxk.pname where alltrim(ckddmx.wldm)=alltrim(jxk.pcode);
反馈信息:命令中含有不能识别的短语或关键字。
5、UPDATE ckddmx LEFT JOIN jxk ON alltrim(ckddmx.wldm)=alltrim(jxk.pcode) SET ckddmx.wlms4sql = jxk.pname where alltrim(ckddmx.wldm)=alltrim(jxk.pcode);
反馈信息:命令中含有不能识别的短语或关键字。
6、UPDATE ckddmx SET ckddmx.wlms4sql = (SELECT pname FROM jxk WHERE (ckddmx.wldm = jxk.pcode)) WHERE EXISTS ( SELECT * FROM jxk WHERE (ckddmx.wldm = jxk.pcode))
反馈信息:函数名缺少)
7、update ckddmx set wlms4sql=(select jxk.pname from jxk where jxk.pcode=ckddmx.wldm) where exists (select pname from jxk where jxk.pcode=ckddmx.wldm)
反馈信息:函数名缺少)
8、UPDATE ckddmx SET ckddmx.wlms4sql = jxk.pname FROM jxk INNER JOIN jxk ON (ckddmx.wldm = jxk.pcode)
反馈信息:命令中含有不能识别的短语或关键字。
9、UPDATE ckddmx SET ckddmx.wlms4sql = jxk.pname WHERE EXISTS ( SELECT pname FROM jxk WHERE (ckddmx.wldm = jxk.pcode))
反馈信息:可以运行,但把wlms4sql字段的所有记录全更新成了一个相同的值了,显然也不是我要的结果。
10、UPDATE ckddmx SET ckddmx.wlms4sql = jxk.pname WHERE EXISTS ( SELECT pname FROM jxk WHERE&&alltrim(ckddmx.wldm)=alltrim(jxk.pcode))反馈信息:SQL关联字段时出错。 注:这句比9、多用了一个ALLTRIM()
值得一提的是其中 2、3、4、5 四句,我自认为是正确的,我把这两个表导入到Access中,用Access中的SQL来运算,2、3、4、5、这四句都可以成功,能得到我要的效果。
另外,我还把这两个表导入到FoxTable2012中,用SQL窗口运行,也是没问题的,但为什么一到了VFP的界面,运行就会出错呢?真是百思不解。
PS:VFP中关于update,还有一条“UPDATE ON <字段> FROM <工作区号>|<数据库别名> REPLACE <字段1> WITH <表达式1> [ <字段2>”, 这里我们不讨论这个,因为这条算VFP的命令,不是SQL-UPDATE,而我现在只想知道关于SQL-UPdate的知识,谢谢大家。
附件: 您没有浏览附件的权限,请
搜索更多相关主题的帖子:
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
授人以渔,不授人以鱼。
来 自:红土地
等 级:贵宾
威 望:323
帖 子:11084
专家分:41909
建议用select语句来组成一个新表来替代。
活到老,学到老!
E-mail:hu-
等 级:贵宾
威 望:54
帖 子:382
专家分:1302
回楼上的,用select组成新表可以成功,而且要用左连接,不然会丢失字段,您的办法我知道,但是当数据量大的时候,总不能每天都生成新表吧?
还是想用UPdate来做,我搞不明白的是,在Access和 FoxTable2012中能运行的语句,为什么在VFP中就不行?
我的电脑上还没VFP9.0,我一直用的是8.0,难道是版本的原因吗?
来 自:齐鲁大地
等 级:贵宾
威 望:36
帖 子:957
专家分:1257
UPDATE ckddmx set ckddmx.wlms4sql = jxk.pname from jxk where ALLTRIM(ckddmx.wldm) = ALLTRIM(jxk.pcode)
楼主,图片中第二个表名可是“jixingku”哟。
认真看书学习,弄通Fox主义。
等 级:贵宾
威 望:78
帖 子:1534
专家分:3292
在9.0中可以用语句:UPDATE T1 SET Wlms4sql=T2.Pname FROM T2 WHERE T1.Wldm=T2.Pcode 一次性搞定,但是我不知道8.0支不支持其中的FROM子句(红色部分)。
如果8.0不支持UPDATE-SQL的FROM 子句,你可以试试以下语句,我在9.0下试验通过:
UPDATE T1 SET Wlms4sql=NVL((SELECT T2.Pname FROM T2 WHERE T2.pcode=T1.Wldm),&&)
[ 本帖最后由 taifu945 于
13:39 编辑 ]
附件: 您没有浏览附件的权限,请
等 级:贵宾
威 望:54
帖 子:382
专家分:1302
回复 5楼 wzxc
谢谢提醒,我传的图片有误,我的库名是jxk,这里可以不考虑名称造成的问题。
等 级:贵宾
威 望:54
帖 子:382
专家分:1302
回复 6楼 taifu945
谢谢这位热心朋友,我刚刚试过你的第二种方法,在8.0中的提示是:“函数名缺少)”
不过,既然你在9.0下能搞定,看来是我该放弃8.0的时候了。
等 级:贵宾
威 望:78
帖 子:1534
专家分:3292
嗯,改用9.0吧。在SQL方面,9.0比低版本改进了不止一点点。不过,也不应该呀,从5.0版本开始,VFP就支持NVL()函数了。你复制第二条语句时,确定没有漏东西?
[ 本帖最后由 taifu945 于
13:55 编辑 ]
等 级:贵宾
威 望:54
帖 子:382
专家分:1302
回楼上的:我在机器上是这样运行的:
UPDATE ckddmx SET ckddmx.wlms4sql=NVL((SELECT jxk.Pname FROM jxk WHERE jxk.pcode=ckddmx.wldm),&&)确定没有漏什么东西。
看来可能是因为8.0不支持From子句,如果我换成9.0,应该可以解决。
在知道原因的同时,我被另一个问题困扰:难道在8.0不支持From子句的情况下,用8.0的真的就不能解决这个问题吗?
或者说:假设在9.0尚未发布,大家都用8.0的时候,这样的问题就不能解决吗?
这里没有钻牛角尖的意思,纯是为了求知,欢迎各位继续讨论,讨论的标题就是:
假设在9.0尚未发布,大家都用8.0的时候,这样的问题该如何解决?
[ 本帖最后由 厨师王德榜 于
13:57 编辑 ]
版权所有,并保留所有权利。
Powered by , Processed in 0.070107 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 vfp导入到sql 的文章

 

随机推荐