⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flowchrt.c

📁 解压后请将扩展名改为.C,实现的是CVI里的数据库操作.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*----------------------------------------------------------------------------*/
/* Flow Chart Sample Program                                                                           */
/*----------------------------------------------------------------------------*/
/* define CVICALLBACK so example programs work under CVI 3.1*/
#if !defined(_NI_mswin32_) && !defined(_WIN32)
    #if (!defined(_CVI_)) || (defined(_CVI_) && ((_CVI_==1) || (_CVI_==301) || (_CVI_==310)))
        #ifndef CVICALLBACK
            #define CVICALLBACK
        #endif
    #endif    
#endif

#include "cvi_db.h"
#include <utility.h>
#include <userint.h>
#include <ansi_c.h>
#include <formatio.h>
#include "flowchrt.h"
#include "flowsql.h"

#define ONCOLOR  0xFFFF00 /* Yellow   */
#define OFFCOLOR 0x00FFBF /* Lt Green */

int mainPnl = 0;

static resCode, hmap, hdbc, hstmt;
static status, getcolor;

int CheckColor (int panel, int control, int color);
int DisplayHelpSection(char *title);
void EraseIfTableExists(int hdbc, char *tableNamePassed);
void InitializeDB(void);
int flagMapUsed = 0;

/*----------------------------------------------------------------------------*/
/* Load panel and RunUserInterface                                            */
/*----------------------------------------------------------------------------*/
void main ()
{
    /* Create and Add a few records to database table */
    InitializeDB();

    mainPnl = LoadPanel (0, "flowchrt.uir", PANEL);

    status = SetCtrlAttribute (mainPnl, PANEL_DBConnect, ATTR_CMD_BUTTON_COLOR, ONCOLOR);

    DisplayPanel (mainPnl);
    RunUserInterface ();
}

/*----------------------------------------------------------------------------*/
/* Connect Button button pressed                                              */
/*----------------------------------------------------------------------------*/
int CVICALLBACK ConnectCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Connect to the database */
            DBFunc_Connect();

            /* Goto Next State in the Flowchart */
            status = SetCtrlAttribute (mainPnl, PANEL_DBConnect,       ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            status = SetCtrlAttribute (mainPnl, PANEL_DBImmediateSQL,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBActivateSQL,   ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBBeginMap,      ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBDisconnect,    ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("Connect");
            break;
    }
    return 0;
}


/*----------------------------------------------------------------------------*/
/* Immediate SQL button pressed                                               */
/*----------------------------------------------------------------------------*/
int CVICALLBACK ImmediateCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Issue Immediate SQL */
            DBFunc_ImmediateSQL();

            /* Goto Next State in the Flowchart.                              */
            /* Once Immediate SQL is complete, you return as if you just      */
            /* issued a DBConnect                                             */

            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("ImmediateSQL");
            break;
    }
    return 0;
}

/*----------------------------------------------------------------------------*/
/* Begin Map Button button pressed                                            */
/*----------------------------------------------------------------------------*/
int CVICALLBACK MapCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Set Map/SQL flags for Deactivate Callback */
            flagMapUsed = 1;

            /* Restrict other paths for Activate and Immediate SQL */
            status = SetCtrlAttribute (mainPnl, PANEL_DBImmediateSQL,  ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBActivateSQL,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = ProcessDrawEvents ();

            /* Issue BeginMap */
            DBFunc_BeginMap();
            status = SetCtrlAttribute (mainPnl, PANEL_DBBeginMap,      ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBMapColumnTo,   ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue MapColumnTo */
            DBFunc_MapColumnTo();
            status = SetCtrlAttribute (mainPnl, PANEL_DBMapColumnTo,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBActivateMap,   ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue  ActivateMap */
             DBFunc_ActivateMap();
            status = SetCtrlAttribute (mainPnl, PANEL_DBActivateMap,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            /* Goto Next State in the Flowchart */
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);

            /* Now that Mapping is done, force user to use DeactivateMap and not Disconnect */
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBDisconnect,    ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("BeginMap");
            break;
    }
    return 0;
}

/*----------------------------------------------------------------------------*/
/* Activate SQL Button button pressed                                         */
/*----------------------------------------------------------------------------*/
int CVICALLBACK BindCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Set Map/SQL flags for Deactivate Callback */
            flagMapUsed = 0;

            /* Restrict other paths for BeginMap and Immediate SQL */
            status = SetCtrlAttribute (mainPnl, PANEL_DBImmediateSQL,  ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBBeginMap,      ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = ProcessDrawEvents ();

            /* Issue ActivateSQL */
            DBFunc_ActivateSQL();
            status = SetCtrlAttribute (mainPnl, PANEL_DBActivateSQL,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBBindCol,       ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue BindCol */
            DBFunc_BindCol();
            status = SetCtrlAttribute (mainPnl, PANEL_DBBindCol,       ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            /* Goto Next State in the Flowchart */
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);

            /* Now that Mapping is done, force user to use DeactivateMap and not Disconnect */
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBDisconnect,    ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("ActivateSQL");
            break;
    }
    return 0;
}

/*----------------------------------------------------------------------------*/
/* Fetch Button pressed                                                       */
/*----------------------------------------------------------------------------*/
int CVICALLBACK FetchCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Restrict other paths for CreateRecord */
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = ProcessDrawEvents ();

            /* Issue Fetch */
            DBFunc_Fetch();
            Delay(0.5);
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_UseValuesFetch,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);

            /* Issue Use Values */
            status = ProcessDrawEvents ();
            Delay(0.5);
            status = SetCtrlAttribute (mainPnl, PANEL_UseValuesFetch,  ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_AssignValues2,   ATTR_CMD_BUTTON_COLOR, ONCOLOR);

            /* Issue Assign */
            status = ProcessDrawEvents ();
            Delay(0.5);
            status = SetCtrlAttribute (mainPnl, PANEL_AssignValues2,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBPutRecord2,    ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue PutRecord */
            DBFunc_PutRecord2();
            status = SetCtrlAttribute (mainPnl, PANEL_DBPutRecord2,    ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            /* Goto Next State in the Flowchart */
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, ONCOLOR);

            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("Fetch");
            break;
    }
    return 0;
}

/*----------------------------------------------------------------------------*/
/* Create Record Button button pressed                                        */
/*----------------------------------------------------------------------------*/
int CVICALLBACK CreateCallback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{
    switch (event)
    {
        case EVENT_COMMIT:
            /* If Button not color active, return */
            if (CheckColor(panel, control, ONCOLOR)==0) return 0;

            /* Restrict other paths for CreateRecord */
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = ProcessDrawEvents ();

            /* Issue CreateRecord */
            DBFunc_CreateRecord();

            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_AssignValues1,   ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue Assign */
            Delay(0.5);
            status = SetCtrlAttribute (mainPnl, PANEL_AssignValues1,   ATTR_CMD_BUTTON_COLOR, OFFCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBPutRecord1,    ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = ProcessDrawEvents ();

            /* Issue PutRecord */
            DBFunc_PutRecord1();
            status = SetCtrlAttribute (mainPnl, PANEL_DBPutRecord1,    ATTR_CMD_BUTTON_COLOR, OFFCOLOR);

            /* Goto Next State in the Flowchart */
            status = SetCtrlAttribute (mainPnl, PANEL_DBFetch,         ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBCreateRecord,  ATTR_CMD_BUTTON_COLOR, ONCOLOR);
            status = SetCtrlAttribute (mainPnl, PANEL_DBDeactivateMap, ATTR_CMD_BUTTON_COLOR, ONCOLOR);


            break;
        case EVENT_RIGHT_CLICK:
            DisplayHelpSection("CreateRecord");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -