Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
New CURSOR
Message
 
To
29/09/2004 10:58:42
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Title:
Miscellaneous
Thread ID:
00947174
Message ID:
00947201
Views:
14
>Peter,
>
>To create new cursor because it is different from the first one
>means Desc field split into 3 fields desc1 desc2 desc3 in the
>table2 or newcursor after the process .
>
>Level1 level2 level3 Desc are fieldnames
>
>010 002 BBBBBB are data for each row or record in the table1
>
>Rgds


Try this: (not tested very well). Not very elegant code but:
CREATE DBF cTest (Lev1 C(3), Lev2 C(3), Lev3 C(3), Descr C(20))

INSERT INTO cTest (Lev1, Descr) VALUES ("010","AAA")
INSERT INTO cTest (Lev1, Lev2, Descr) VALUES ("010","002", "BBBBBB")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","002","005", "CCCCCC")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","002","013", "DDDDDD")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","002","015", "EEEEEE")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","002","016", "FFFFFF")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","002","018", "GGGGGG")
INSERT INTO cTest (Lev1, Lev2, Descr) VALUES ("010","003", "HHH")
INSERT INTO cTest (Lev1, Lev2, Lev3, Descr) VALUES ("010","003","005", "JJJJJJ")

...

SELECT GetDesc(1, cTest.Lev1+cTest.Lev2+cTest.Lev3) AS Descr1,;
       GetDesc(2, cTest.Lev1+cTest.Lev2+cTest.Lev3) AS Descr2,;
       GetDesc(3, cTest.Lev1+cTest.Lev2+cTest.Lev3) AS Descr3;
       FROM cTest WHERE .NOT. EMPTY(Lev3);
       INTO CURSOR cTest1
BROWSE


FUNCTION GetDesc(clevel, cCode)
    LOCAL ret_val
    DO CASE
       CASE cLevel == 1
            SELECT cTest.Descr FROM cTest WHERE cTest.Lev1 == LEFT(cCode,3) INTO ARRAY aArr
            ret_val = aArr[1]
       CASE cLevel == 2
            SELECT cTest.Descr FROM cTest WHERE cTest.Lev1 == LEFT(cCode,3) .AND. cTest.Lev2 = SUBSTR(cCode,4,3) INTO ARRAY aArr
            ret_val = aArr[1]
       CASE cLevel == 3
            SELECT cTest.Descr FROM cTest WHERE cTest.Lev1 == LEFT(cCode,3) .AND. cTest.Lev2 = SUBSTR(cCode,4,3) .AND. cTest.Lev3 = RIGHT(cCode,3) INTO ARRAY aArr
            ret_val = aArr[1]
    ENDCASE

RETURN PADR(ret_val, 30, " ")
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform