1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Active Scripting

Discussion in 'T&T - Scripting' started by Joe Caverly, Apr 2, 2010.

  1. Joe Caverly

    Joined:
    Aug 28, 2009
    Messages:
    680
    Likes Received:
    8
    The only thing that I do not like about Visual FoxPro for Windows is the inability to work at the console, the way I could with Clipper 5.01 and dBASE IV 2.0 for DOS. By console, I mean TCC/CMD console, not the Visual FoxPro Command Window.

    Since it is inevitable that the Windows 7 64-bit OS will one day be forced upon me, putting an end to my good ole' 16-bit applications, I have decided to take advantage of the features of VBScript and TCC to extract data from my .DBF files.

    I have been using DOSBox, but it lacks the OS features available in TCC.

    So, below is a Visual Basic script that extracts data from a .DBF file, sending the results to TCC. Note that Microsoft Visual FoxPro is required for this script, and that you would have to make modifications for your .DBF location and structure.

    Code:
    rem ******************************************************************
    rem * This script is called from TCC as follows;                     *
    rem * script bmo.vbs %+ echo %jlc Records                            *
    rem ******************************************************************
    rem
    rem ******************************************************************
    rem * Create and return a reference to the                           *
    rem *   Visual FoxPro Automation Object                              *
    rem ******************************************************************
    rem
    set vfp = CreateObject("visualfoxpro.application")
    rem
    rem ******************************************************************
    rem * Enter commands,                                                *
    rem *   just as you would from the FoxPro Command Window             *
    rem ******************************************************************
    rem
    vfp.DoCmd("use C:\jlc\Data\vfp\jlcbank\register.dbf shared")
    vfp.DoCmd("set fields to acct_numb, trans_date, payee, amount")
    vfp.DoCmd("set filter to left(acct_numb,4) = '5191'")
    vfp.DoCmd("go top")
    vfp.DoCmd("count all for left(acct_numb,4) ='5191' to m->bmo")
    rem
    rem ******************************************************************
    rem * Create a script-level variable                                 *
    rem *                                                                *
    rem * Note that VBScript only supports the Variant data type.        *
    rem * When I assign an integer number to the variable,               *
    rem *   it becomes an integer variable.                              *
    rem ******************************************************************
    rem
    intBMO = vfp.Eval("m->bmo")
    vfp.DoCmd("go top")
    rem
    rem ******************************************************************
    rem * Display the selected records to stdout,                        *
    rem *   via the TCC COM interface                                    *
    rem ******************************************************************
    rem
    for counter = 1 to intBMO
      vfp.DoCmd("store acct_numb + payee + DTOS(trans_date) + str(amount,9,2) to m->jlc")
      shell.writeln(vfp.Eval("m->jlc"))
      vfp.DoCmd("skip")
    next
    rem
    rem ******************************************************************
    rem * Create an environment variable in TCC                          *
    rem *                                                                *
    rem * Note that I have to convert the VBScript integer variable      *
    rem *  to a string                                                   *
    rem ******************************************************************
    rem
    str2TCC = "set jlc=" + CStr(intBMO)
    rem
    rem ******************************************************************
    rem * Using the TCC COM interface,                                   *
    rem *   create an environment variable in TCC                        *
    rem ******************************************************************
    rem
    shell.exec(str2TCC)
    rem
    rem ******************************************************************
    rem * Destroy reference to the Visual FoxPro Automation Object       *
    rem ******************************************************************
    rem
    set vfp=Nothing
    
    The script is run from TCC as follows;

    Code:
    script bmo.vbs %+ echo %jlc Records
    
    It should not be too difficult to modify this script to work with other Automation Objects, such as Microsoft Excel, or Microsoft Access, providing you with a method to work with the desired data in TCC.

    Joe
     

Share This Page