尝试使用textmerge命令访问字段

时间:2013-05-27 15:53:20

标签: sql visual-foxpro

我在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是循环的增量变量。

我知道这是导致我麻烦的最后一部分,但我无法找到解决方案。

提前感谢您的帮助。

2 个答案:

答案 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])