/*++ Copyright (c) 1994 Microsoft Corporation Module Name: mkilog.c Abstract: This module creates a log table using ODBC data sources. Author: Kyle Geiger & Murali R. Krishnan (MuraliK) 1-Nov-1995 Revision History: --*/ #include #include # include "dynodbc.h" #include "html.h" #include "resource.h" # define DEFAULT_LEN ( 256) # define MAX_DATA 2048 # define FOUND_DRIVER ( 7) #define SUCCESS(rc) (!((rc)>>1)) int __cdecl main( int argc, char * argv[]) { RETCODE rc; // Return code for ODBC functions HENV henv; // Environment Handle char szDSN[MAX_DATA+1]; // Variable to hold DSN name SWORD cbDSN; // Output length of data DSN char szDesc[MAX_DATA+1]; // Variable to hold DSN description SWORD cbDesc; // Output length of data description int fFirst; char szList[MAX_DATA]; char szSQLServer[MAX_DATA]; char szCreateLogTable[MAX_DATA]; HINSTANCE hInst = GetModuleHandle(NULL); if ( !DynLoadODBC()) return (1); pSQLAllocEnv(&henv); rc=pSQLDrivers(henv, SQL_FETCH_FIRST, (UCHAR FAR *) szDSN, MAX_DATA, &cbDSN, (UCHAR FAR *) szDesc, MAX_DATA, &cbDesc); LoadString(hInst, IDS_SQL_SERVER, szSQLServer, sizeof(szSQLServer)); while (SUCCESS(rc)) { if (!_stricmp(szDSN, szSQLServer) ) rc=FOUND_DRIVER; else rc=pSQLDrivers(henv, SQL_FETCH_NEXT, (UCHAR FAR * ) szDSN, MAX_DATA, &cbDSN, (UCHAR FAR * ) szDesc, MAX_DATA, &cbDesc); } LoadString(hInst, IDS_CREATE_LOG_TABLE, szCreateLogTable, sizeof(szCreateLogTable)); StartHTML(szCreateLogTable, 1); if (FOUND_DRIVER != rc) { char szAttemptCreateLog[MAX_DATA*3]; LoadString(hInst, IDS_ATTEMPT_CREATE_LOG, szAttemptCreateLog, sizeof(szAttemptCreateLog)); printf( szAttemptCreateLog); pSQLFreeEnv(henv); return (1); } rc=pSQLDataSources(henv, SQL_FETCH_FIRST, (UCHAR FAR *) szDSN, MAX_DATA, &cbDSN, (UCHAR FAR *) szDesc, MAX_DATA, &cbDesc); fFirst=FALSE; while (SUCCESS(rc)) { if (!_stricmp(szDesc, szSQLServer) ) { char szOption[MAX_DATA]; if (!fFirst) { char szSelectName[MAX_DATA]; fFirst=TRUE; LoadString(hInst, IDS_SELECT_NAME, szSelectName, sizeof(szSelectName)); strcpy(szList,szSelectName); } LoadString(hInst, IDS_OPTION, szOption, sizeof(szOption)); sprintf(szList+strlen(szList),szOption, szDSN); } rc=pSQLDataSources(henv, SQL_FETCH_NEXT, (UCHAR FAR *) szDSN, MAX_DATA, &cbDSN, (UCHAR FAR *) szDesc, MAX_DATA, &cbDesc); } // while data sources found /* any datasources for SQL Server found? if so, generate the form for create*/ if (fFirst) { char szSelect[MAX_DATA]; char szCreateMSLog[MAX_DATA*3]; LoadString(hInst, IDS_SELECT, szSelect, sizeof(szSelect)); strcat(szList, szSelect); LoadString(hInst, IDS_CREATE_MS_LOG, szCreateMSLog, sizeof(szCreateMSLog)); printf( szCreateMSLog, szList); } else { char szCreateMSLog[MAX_DATA*3]; LoadString(hInst, IDS_CREATE_MS_LOG_2, szCreateMSLog, sizeof(szCreateMSLog)); printf( szCreateMSLog ); } EndHTML(); pSQLFreeEnv(henv); return (1); } // main()