FoxPro_管理游标中表格过滤的数据

问题描述 投票:0回答:1

我创建了一种方法,允许用户通过从表单中的字段中选择不同的参数来过滤表的数据......用户的选择在动态变化的“cTextSearch”中收集和管理。

现在我需要“复制”游标中过滤的数据,以便在程序的其他部分(例如报告)中使用游标。

如何在不破坏代码的情况下将数据过滤到临时光标中?

到目前为止,我测试了多种方法,唯一有效的方法是“COPY TO”语法...但是,这会创建一个不需要的新 dbf 文件。另一种语法反而破坏了代码。 我还尝试使用“SELECT .... INTO CURSOR ...”,但在这些其他情况下,输出不是过滤后的表,而是整个表。

当你检查我的代码时,我还使用“COPY TO..”将过滤后的数据转储到 Excel 文件中。到目前为止,这一直有效,但并没有解决我的问题。

或者光标表现不佳或者没有获取过滤后的数据。

IF !EMPTY(cTextSearch) AND !bResetFilter

nOldWA = SELECT(0)

SELECT (cAliasName)
GO TOP

cCommand = "SET FILTER TO "+ cTextSearch 
&cCommand

SELECT (cAliasName)

 &&COPY TO (cTempCursor) TYPE FOXPLUS
     
     COPY TO (cCsvFile) TYPE CSV
    
SELECT(nOldWA)

ThisForm.bFilterOn = .T.

结束

visual-foxpro cursors visual-foxpro-9
1个回答
0
投票

您可以使用 SELECT ... INTO CURSOR,但正如您所知,它不尊重 SET FILTER。因此,您必须将过滤条件放入查询的 WHERE 子句中。

由于您的过滤条件位于 cTextSearch 中,请尝试以下操作:

SELECT * ;
  FROM YourTable ;
  WHERE &cTextSearch ;
  INTO CURSOR csrYourResults

显然,您需要替换表的名称和您想要的光标名称,如果您不想复制所有字段,请在第一个列表中列出您想要的字段而不是星号。

© www.soinside.com 2019 - 2024. All rights reserved.