我在Visual FoxPro上编写一个从.DBF文件中检索数据的程序,我在使用SQL查询时遇到了一些麻烦。我的程序收到用户的一些输入,主要是一些开始和结束时间和日期。
我的麻烦是我在INNERJOIN查询中使用TEXTMERGE()命令,该查询本身就是一个循环。但是,我无法建立两个表之间的关系。导致我麻烦的代码如下:
SELECT Field1,Field2,Field3 FROM Table1 INNER JOIN TEXTMERGE("StrPath\Table<<i>>.DBF") ON Table1.Field1 = TEXTMERGE("StrPath\Table<<i>>.Field1")
i是循环的增量变量。
我知道这是导致我麻烦的最后一部分,但我无法找到解决方案。
提前感谢您的帮助。
答案 0 :(得分:1)
对查询连接执行textmerge调用听起来真的很难看。但是,听起来您有多个具有相同结构的表并尝试查找常见记录,例如在年份之间分隔的表数据或公司之间。由于你已经处于&#34; i&#34;的循环中,为什么不尝试做类似......
for i = 2 to whatEverRange
lcOtherTable = "strPath\Table" + allt( str( i ))
select T1.Field1, T1.Field2, T1.Field3;
from Table1 T1;
inner join (lcOtherTable) TX;
on T1.Field1 = TX.Field1;
into cursor C_WhateverTempResultSet
if reccount( "C_WhateverTempResultSet" ) > 0
*/ Do whatever with results
endif
endfor
(paren变量)将打开你想要的表,只需给它一个简化的&#34;别名&#34; (通过TX)所以你不必去评估任何其他东西。正确的&#34;其他&#34; table将与别名&#34; TX&#34;一起用于你的&#34; ON&#34;命令可以将T1.Field1连接到TX.Field1 ...更容易阅读和调试。
答案 1 :(得分:0)
以下内容可行。
SELECT Field1,Field2,Field3
FROM Table1 INNER JOIN TEXTMERGE("StrPath\Table<<i>>.DBF")
ON Table1.Field1 = EVAL(JUSTSTEM(JUSTFNAME(TEXTMERGE("StrPath\Table<<i>>"))) + [.Field1])