Почему WinCC не соединяется с БД?
Эдик;
13.10.04
Re: Почему WinCC не соединяется с
БД?
Маслов
Дмитрий; 13.10.04
Вот примерчик скрипта WinCC для соединения с RT-базой данных через
ODBC. Подставляете нужный Вам DSN и будет работать с Вашей
базой.
#pragma code ("odbc32.dll")
#include "sql.h"
#pragma code ()
int ConnectDB()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
RETCODE retcode;
SQLCHAR SQLState[50],SQLMsg[100];
SDWORD FAR* SQLErrorCode;
SQLCHAR DataSourceName[MAX_DM_DSN_NAME+2];
char PrPath[MAX_PATH+1];
CMN_ERROR cmnError;
DM_PROJECT_INFO ProjectInfo;
//------get project information
memset(&cmnError, 0, sizeof(CMN_ERROR));
memset(&ProjectInfo, 0, sizeof(DM_PROJECT_INFO));
if (!DMGetRuntimeProject(PrPath,MAX_PATH, &cmnError))
printf("!!!Error - DMGetRuntimeProject(...)\r\n");
if (!DMGetProjectInformation(PrPath, &ProjectInfo,
&cmnError))
{
printf("!!!Error - DMGetProjectInformation(...)\r\n");
return 0;
}
else
{
strcpy((char*)DataSourceName,ProjectInfo.szDSNName);
strcat((char*)DataSourceName,"R");
}
retcode = SQLAllocEnv(&henv); /* Environment handle */
if (retcode == SQL_SUCCESS)
{
retcode = SQLAllocConnect(henv, &hdbc); /* Connection handle
*/
if (retcode == SQL_SUCCESS)
{
retcode = SQLConnect(hdbc, DataSourceName, SQL_NTS,(SQLCHAR*)
"dba", SQL_NTS,(SQLCHAR*) "sql", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocStmt(hdbc, &hstmt); /* Statement handle
*/
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
return 4;
else
{
printf("!!! ERROR !!! SQLAllocStmt\r\n");
return 3;
}
}
else
{
printf("!!! ERROR !!! SQLConnect \r\n");
return 2;
}
}
else
{
printf("!!! ERROR !!! SQLAllocConnect \r\n");
return 1;
}
}
else
{
printf("!!! ERROR !!! SQLAllocEnv \r\n");
return 0;
}
}
См. http://www.wincc.ru
Re: Почему WinCC не соединяется с
БД?
Владимир; 13.10.04
Дмитрий, подскажите пожалуйста, не могу никак разобрать, WIN CC
5.1, необходимо передавать на другую машину оперативные данные
(около 150 байт) информации о состоянии системы управления. В
проекте есть внешние теги, в которых хранятся эти данные. Где, в
какой таблице базы данных RT я могу отыскать значения этих тегов ?
Или их вообще в принципе нет ? Как я могу передать эти данные на
другую машину ?
Re: Почему WinCC не соединяется с
БД?
Маслов
Дмитрий; 14.10.04
1. В RT-базе данных хранятся только архивные значения тегов.
Текущие значения, естественно, там не хранятся.
2. Передавать на другую машину - расплывчатая формулировка. В каком
виде Вам нужны эти данные: в файле, в БД, получение какой-либо
самописной программой, просто отображание и т.д.?
Варантов множество, но надо сначала понять, что Вам нужно.
См. http://www.wincc.ru