CVI是工业测控编程的利器,当CVI要处理和分析大量的环境数据时,好的编程模型是使用上数据库来保存成行千上万的数据,然后CVI通过ODBC接口,使用SQL语言来实现复杂的数据操作(条件选择,Max,Min,Avg,指定时间Select等功能)。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
CVI的SQL tools是以ODBC为接口来链接各种支持ODBC的数据库的,要注意的是,CVI在通过ODBC来选择数据库表的各记录时所写的SELECT要符合该数据库的SQL特点,如ACCESS的SQL就和ANSI SQL有些区别,所以不能直接把其他数据库SQL 语句搬过来就用,下面是很常用的,CVI 选择ACCESSs datetime数据项时的SELECT语句,在ACCESS中要用format来格式化datetime输出,CVI可以用WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
resultcode = DBBindColChar (hstat, 4, 50, value_drinkTime, &status_drinkTime, "");来片历,就可读出ACCESSs datetime,并正确格式化。WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
NOTE1:CVI SQL Tools 本身没有与datetime相关的绑定实现,只能以SQL的方式发送需求给数据库,让数据库格式化好CVI所支持的格式后,CVI才能正确读取数据库中的记录。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
NOTE2:CVI 所能直接绑定的类型如下:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
/* Bind Columns method functions */WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
extern int SQLFUNC DBBindColChar(int hstmt, int colNum, unsigned long stringSize, char *valPtr, long *varStatus, char *fmt);WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
extern int SQLFUNC DBBindColShort(int hstmt, int colNum, short *valPtr, long *varStatus);——可——编——程——控-制-器-技——术——门——户
extern int SQLFUNC DBBindColInt(int hstmt, int colNum, int *valPtr, long *varStatus);WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
extern int SQLFUNC DBBindColLongLong(int hstmt, int colNum, __int64 *valPtr, long *varStatus);WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
extern int SQLFUNC DBBindColFloat(int hstmt, int colNum, float *valPtr, long *varStatus);WWW_P※LCJS_COM-PLC-)技.术_网
extern int SQLFUNC DBBindColDouble(int hstmt, int colNum, double *valPtr, long *varStatus);WW.W_PLC※JS_C,OM-PL,C-技.术_网
extern int SQLFUNC DBBindColBinary(int hstmt, int colNum, WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
unsigned long binSize, void* valPtr, long* varStatus);WW.W_PLCJS_COM-PLC-技.术_网
NOTE3:下面是用ACCESS的查询设计工具测试好SQL后,CVI再调用是很好的CVI开发数据库程序的“编程模式”。