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

📄 sample11_1.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
字号:
#include "cvi_db.h" #include <ansi_c.h> #include <utility.h>#include <cvirte.h>	#include <userint.h>#include "sample11_1.h"int panelHandle,panel2;int hdbc=0,hstmt;char SelectTable[256],content[3][256];float dou1,dou2;void InitDataSource(void); void ExitDataSource(void);   void ShowError(){MessagePopup("Database Error",DBErrorMessage());}void GetCollumInfo(void);    void ShowTable(char SelectTable[256]); void FromBufToPara(char buf[]);int main (int argc, char *argv[]){	if (InitCVIRTE (0, argv, 0) == 0) return -1;	/* out of memory */	if ((panelHandle = LoadPanel (0, "sample11_1.uir", PANEL)) < 0)		return -1;	InitDataSource();	DisplayPanel (panelHandle);	RunUserInterface ();	ExitDataSource();	return 0;}  int CVICALLBACK ListTable (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	char buf[256];	switch (event)	{		case EVENT_COMMIT:			GetCtrlVal (panelHandle, PANEL_LISTTABLE, SelectTable);																			panel2=LoadPanel (0, "sample11_1.uir", PANEL_2);			if(strcmp(SelectTable,"testres")!=0)  return 0;			ShowTable(SelectTable);			if(DBNumberOfRecords (hstmt)<=0){				SetCtrlAttribute (panel2, PANEL_2_DELETE, ATTR_DIMMED, 1);				SetCtrlAttribute (panel2, PANEL_2_MODIFY, ATTR_DIMMED, 1);			} 			InstallPopup( panel2);			break;		case EVENT_VAL_CHANGED:			GetCollumInfo();			break;	}	return 0;} int CVICALLBACK ok (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event== EVENT_COMMIT)  		QuitUserInterface (0);	return 0;}int CVICALLBACK Quit (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event== EVENT_COMMIT){		DBDeactivateSQL(hstmt);     		RemovePopup(panel2);		DiscardPanel(panel2);	}	return 0;}int CVICALLBACK Delete (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	int index;	if(event== EVENT_COMMIT && DBNumberOfRecords (hstmt)>0) {   		GetCtrlIndex (panel2, PANEL_2_LISTTABLECONTENT, &index);		DeleteListItem (panel2, PANEL_2_LISTTABLECONTENT, index, 1);  		DBAllowFetchAnyDirection (hdbc, 1); 		DBFetchRandom(hstmt,index+1); 		DBDeleteRecord (hstmt);		if(DBNumberOfRecords (hstmt)<=0){			SetCtrlAttribute (panel2, PANEL_2_DELETE, ATTR_DIMMED, 1);			SetCtrlAttribute (panel2, PANEL_2_MODIFY, ATTR_DIMMED, 1);		}	}	return 0;}int CVICALLBACK Add (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){   	int panel4,index,paneltemp4,contr,retval;	char temp[256];	if(event== EVENT_COMMIT) { 		GetCtrlIndex (panel2, PANEL_2_LISTTABLECONTENT, &index);  		panel4=LoadPanel (0, "sample11_1.uir", PANEL_4);		if(control==PANEL_2_MODIFY){			GetLabelFromIndex (panel2, PANEL_2_LISTTABLECONTENT, index, temp);			SetCtrlVal (panel4, PANEL_4_NEWRECORD, temp);		}			InstallPopup(panel4);		while(1){			if(GetUserEvent (1, &paneltemp4, &contr)==1)				if(contr==PANEL_4_OK&&paneltemp4==panel4){					GetCtrlVal (panel4, PANEL_4_NEWRECORD, temp);					if(strcmp(temp,"")==0){						MessagePopup("Error","Input error ,no changed");						continue;					}					if(control==PANEL_2_MODIFY) {						DBAllowFetchAnyDirection (hdbc, 1); 						if(index>-1) DBFetchRandom(hstmt,index+1); 					}					else						DBCreateRecord (hstmt); 					retval=0;//do not move this ,							//used to resulve the bug of  DBFetchRandom func					FromBufToPara(temp);					retval=DBPutRecord (hstmt);					if(retval!= DB_SUCCESS) {						MessagePopup("Error","Input error,no changed");						continue;					}					break;				}		}		RemovePopup (0);		DiscardPanel( panel4);		if(control==PANEL_2_MODIFY)     			ReplaceListItem (panel2, PANEL_2_LISTTABLECONTENT, index, temp, temp);     		else			InsertListItem (panel2, PANEL_2_LISTTABLECONTENT, -1, temp, temp); 		SetCtrlAttribute (panel2, PANEL_2_DELETE, ATTR_DIMMED, 0);		SetCtrlAttribute (panel2, PANEL_2_MODIFY, ATTR_DIMMED, 0);   	}	return 0;}int CVICALLBACK Modify (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event== EVENT_COMMIT)    		Add(0,PANEL_2_MODIFY,EVENT_COMMIT,NULL,0,0);	return 0;}void ShowTable(char SelectTable[256]){	 	int collumsta; 	char buf[256];	sprintf(buf,"SELECT * FROM %s",SelectTable);	hstmt = DBActivateSQL(hdbc, buf);	DBBindColChar (hstmt, 1, 11, content[0],&collumsta, "");	DBBindColFloat (hstmt, 2,&dou1 ,&collumsta );	DBBindColFloat (hstmt, 3,&dou2 ,&collumsta );	ClearListCtrl (panel2,PANEL_2_LISTTABLECONTENT ); 	while (DBFetchNext (hstmt) == DB_SUCCESS){		sprintf(buf,"  %s   %9.3f       %9.3f",content[0],dou1,dou2);    		InsertListItem (panel2, PANEL_2_LISTTABLECONTENT, -1, buf, buf); 	}  }void GetCollumInfo(){    int collumNum,recordNum,hstmt;	char buf[256],tbName[256];	GetCtrlVal (panelHandle, PANEL_LISTTABLE, tbName);																	sprintf(buf,"SELECT * FROM %s",tbName);	hstmt = DBActivateSQL(hdbc, buf);   	collumNum=DBNumberOfColumns(hstmt);	recordNum=DBNumberOfRecords (hstmt);	SetCtrlVal (panelHandle, PANEL_TABLERECORDNUM,recordNum );	SetCtrlVal (panelHandle, PANEL_TABLFIELDNUM,collumNum );	SetCtrlVal (panelHandle, PANEL_TABLENAME,tbName );      DBDeactivateSQL(hstmt); } void GetTableInfo(){    int resCode,hstmt;    long  tableStat;    char tbName[256];    hstmt = DBTables(hdbc,"","","", DB_TBL_TABLE );    DBBindColChar(hstmt, 3, 128, tbName,&tableStat, "");	while ((resCode = DBFetchNext (hstmt)) == DB_SUCCESS){		InsertListItem (panelHandle, PANEL_LISTTABLE, -1, tbName, tbName); 	}    resCode = DBDeactivateSQL(hstmt);  }  void GetDatabaseInfo(){    int resCode,hstmt;    long  remarksStat;    char dbName[256];    hstmt = DBDatabases(hdbc);    DBBindColChar(hstmt, 1, 256, dbName,&remarksStat, "");	while ((resCode = DBFetchNext (hstmt)) == DB_SUCCESS)		SetCtrlVal (panelHandle, PANEL_DATASOURCENAME,dbName );	DBDeactivateSQL(hstmt);  }void InitDataSource(){    int resCode,hstmt,panel3,paneltemp3,control;     long  remarksStat;    char srcName[256],remarks[256];    panel3=LoadPanel (0, "sample11_1.uir", PANEL_3);       hstmt = DBSources(DB_SRC_AVAILABLE);    DBBindColChar(hstmt, 1, 256, srcName,                            &remarksStat, "");	while ((resCode = DBFetchNext (hstmt)) == DB_SUCCESS)		InsertListItem (panel3, PANEL_3_LISTSOURCE, -1, srcName, srcName);      resCode = DBDeactivateSQL(hstmt);	InstallPopup(panel3); 		  	while(1){		if(GetUserEvent (1, &paneltemp3, &control)==1)			if(control==PANEL_3_LISTSOURCE&&paneltemp3==panel3)			{				GetCtrlVal (panel3, PANEL_3_LISTSOURCE, srcName); 				break;			}	}	sprintf(remarks,"DSN=%s",srcName);     hdbc = DBConnect (remarks);     if (hdbc <= 0) ShowError();      GetDatabaseInfo();    GetTableInfo();	GetCollumInfo(); 	RemovePopup (0);	DiscardPanel( panel3);	 }void ExitDataSource(){	int resCode;    resCode = DBDisconnect (hdbc);    if (resCode != DB_SUCCESS) ShowError();} void FromBufToPara(char buf[256]){	int i;	char *cha1,*cha2,*cha3,buf1[256];	strcpy(buf1,buf);	i=0;                                                                 						while(buf1[i]==' ')                                                   							i++;                                                             						cha3=&buf1[i];                                                        						cha1=strchr (cha3, ' ');	if(cha1==NULL){		strcpy(content[0],cha3);		dou1=0;		dou2=0;		return ;	}	cha1[0]='\0';                                                        						strcpy(content[0],cha3);                                             						i=1;                                                                 						while(cha1[i]==' ')                                                  							i++; 	cha2=strchr (&cha1[i], ' ');		if(cha2==NULL){		dou1=atof(&cha1[1]); 		dou2=0;		return ;	} 	cha2[0]='\0';                                                        						dou1=atof(&cha1[1]);                                                 						dou2=atof(&cha2[1]);}

⌨️ 快捷键说明

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