FoxPro 9.0 如何循环访问程序



>我有一个任务来循环遍历单列表"合约",并且对于每个循环,使用合约中的值调用一个程序"MyProgram"。最后将所有循环的结果显示在表格中。

Indata:
=================
Contracts.dbf
=================
P01
C04
CH45
T31
Result:
===========================
ResultFile.dbf
===========================
P01   C04    CH45     T31
---------------------------
100    11    302     -872
9.63   0     45.2     342

每个合约的值在 MyProgram 中生成,MyProgram 将合约作为参数,并生成一列与标题相同的合约结果。所以使用我的程序合同 P01 给

======
P01
------
100
9.63

到目前为止,我的程序看起来像

SELECT distinct contract FROM bs_case
COPY TO contracts.dbf
    NbContracts =RECCOUNT()
    CLOSE TABLES
counter  = 1
DO WHILE counter < NbContracts
    && calling MyProgram ()
    counter = counter + 1
ENDDO

我无法从"合同.dbf中提取合同名称,并且真的不知道如何创建最终结果文件"结果文件.dbf"

试试这个,它是伪的,但应该可以工作:

******
SELECT 0
CREATE CURSOR MyResults ( columnName C(10), value1 I, value2 N(8,2) )  &&Result cursor
SELECT contracts
LOCATE   &&Go to top of file.
SCAN     &&start loop
     =MyProgram(FIELD(1), contracts.ColumnName)  &&Pass name of column and it's value
ENDSCAN
SELECT MyResults  &&View results.
BROWSE LAST NORMAL
PROCEDURE MyProgram(fieldname, value1)
    ***Do stuff to
    ***generate calculatedvalue1 and calculatedvalue2
    ***Insert name of column, value1 and value2
    INSERT INTO MyResults (columnName, value1, value2) ;
        VALUES(fieldname, calculatedvalue1, calculatedvalue2)
END PROC

最新更新