Новичок
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.1.2008
Репутация: нет Всего: нет
|
Мои приветствия. В нижеприведенном примере, как только я раскомментировал код со строки ADSGetIndexHandle() - AEP не отрабатывает, уходит в работу с головой. Что может быть, посмотрИте, посоветуйте. WBR, Oleg. Код | /******************************************************************************/ UNSIGNED32 ENTRYPOINT WINAPI StoredProcFilter ( UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection // and can be used to track the state ADSHANDLE hConnection, // (I) active connection that can be used // for all data operations UNSIGNED32 *pulNumRowsAffected // (O) optional output parameter, used to specify // how many rows were updated. ) { UNSIGNED32 ulNumRecs; UNSIGNED32 ulLen; UNSIGNED16 bEof; UNSIGNED16 usCount; UNSIGNED16 ulLen16; UNSIGNED16 i; UNSIGNED8 aucTblFrom[200]; UNSIGNED8 aucTag[ 200 ]; UNSIGNED8 aucVal1[ 200 ]; UNSIGNED8 aucVal2[ 200 ]; UNSIGNED8 aucTblTo[ 200 ]; UNSIGNED8 aucName[20]; UNSIGNED8 aucValue[256]; ADSHANDLE hDataTable1; ADSHANDLE hDataTable2; ADSHANDLE hIndex; ADSHANDLE hStmt; ADSHANDLE hCursor;
// Obtain cursor to input table ACECHECK( AdsCreateSQLStatement( hConnection, &hStmt ) ); ACECHECK( AdsExecuteSQLDirect( hStmt, "SELECT * FROM __input", &hCursor ) );
/* * Get each of the input parameter values */ ulLen = sizeof( aucTblFrom ); ACECHECK( AdsGetString( hCursor, "TblFrom", aucTblFrom, &ulLen, ADS_TRIM ) );
ulLen = sizeof( aucTag ); ACECHECK( AdsGetString( hCursor, "Tag", aucTag, &ulLen, ADS_TRIM ) );
ulLen = sizeof( aucVal1 ); ACECHECK( AdsGetString( hCursor, "Val1", aucVal1, &ulLen, ADS_TRIM ) );
ulLen = sizeof( aucVal2 ); ACECHECK( AdsGetString( hCursor, "Val2", aucVal2, &ulLen, ADS_TRIM ) );
ulLen = sizeof( aucTblTo ); ACECHECK( AdsGetString( hCursor, "TblTo", aucTblTo, &ulLen, ADS_TRIM ) );
ACECHECK( AdsCloseTable( hCursor ) ); ACECHECK( AdsCloseSQLStatement( hStmt ) );
// Obtain handles to data tables ACECHECK( AdsOpenTable( hConnection, aucTblFrom, // the name of the table NULL, // alias are never necessary ADS_DEFAULT, // input tables are always ADT files ADS_OEM, // input tables are always ANSI ADS_COMPATIBLE_LOCKING, // with ADT files, this is ignored ADS_IGNORERIGHTS, // from the server, rights checking is unnecessary ADS_DEFAULT, // default options &hDataTable1 ) );
ACECHECK( AdsOpenTable( hConnection, aucTblTo, // the name of the table NULL, // alias are never necessary ADS_DEFAULT, // input tables are always ADT files ADS_OEM, // input tables are always ANSI ADS_COMPATIBLE_LOCKING, // with ADT files, this is ignored ADS_IGNORERIGHTS, // from the server, rights checking is unnecessary ADS_DEFAULT, // default options &hDataTable2 ) );
ACECHECK( AdsGetIndexHandle( hDataTable1, aucTag, &hIndex ) ); /* ACECHECK( AdsGetIndexHandleByOrder( hDataTable1, 1, &hIndex ) );*/ ulLen16 = sizeof( aucVal1 ); ACECHECK( AdsSetScope( hIndex, ADS_TOP, aucVal1, ulLen16, ADS_STRINGKEY ) ); ulLen16 = sizeof( aucVal2 ); ACECHECK( AdsSetScope( hIndex, ADS_BOTTOM, aucVal2, ulLen16, ADS_STRINGKEY ) );
ACECHECK( AdsGetRecordCount( hIndex, ADS_RESPECTSCOPES, &ulNumRecs ) ); if ( ulNumRecs ) goto ExitStoredProcedure;
ACECHECK( AdsCopyTableContents( hDataTable1, hDataTable2, ADS_RESPECTSCOPES ) ); /* ACECHECK( AdsGetNumFields( hDataTable2, &usCount ) ); ACECHECK( AdsGotoTop(hIndex) );
/* do { for ( i = 1; i <= usCount; i++ ) { ulLen16 = 20; ACECHECK( AdsGetFieldName( hDataTable2, i, aucName, &ulLen16 ) ); ulLen = 256; ACECHECK( AdsGetField( hDataTable1, aucName, aucValue, &ulLen, ADS_NONE ) ); ACECHECK( AdsSetField( hDataTable2, aucName, aucValue, ulLen ) ); } ACECHECK( AdsSkip( hIndex, 1 ) ); ACECHECK( AdsAtEOF( hIndex, &bEof ) ); } while(!bEof);*/ ExitStoredProcedure: ACECHECK( AdsCloseTable( hDataTable2 )); ACECHECK( AdsClearAllScopes( hIndex )); ACECHECK( AdsCloseTable( hDataTable1 ));
return AE_SUCCESS;
/*
// Insert error number and message into __error table ACECHECK( AdsCloseTable( hCursor ) ); ACECHECK( AdsPrepareSQL( hStmt, "INSERT INTO __error ( errno, message ) VALUES ( :error, :message )" ) ); ACECHECK( AdsSetLong( hStmt, "error", ulRetCode ) ); ACECHECK( AdsSetString( hStmt, "message", aucMessage, sizeof( aucMessage ) ) ); ACECHECK( AdsExecuteSQL( hStmt, &hCursor ) ); ACECHECK( AdsCloseTable( hDataTable ) ); ACECHECK( AdsCloseTable( hCursor ) ); ACECHECK( AdsCloseSQLStatement( hStmt ) );
return ulRetCode;*/ } /* StoredProcFilter */
|
Все, этот вопрос снят.Это сообщение отредактировал(а) vdarasun - 24.3.2008, 06:56
|