nicht initiallisiertes recordset



  • Moin

    ich hab nen problem mit einem nicht initiallisierten recordset:
    folgendes Problem:
    ich möchte ne ausfallsicherung für meine DB schreiben...
    heist wenn die datenbank ausfällt soll das mitgeloggt werden...

    nun hab ich mein programm so aufgebaut das ich immer nur noch sql-befehlen in nen string packe und diesen string (aktion) dann an die entsprechende funktion übergebe die dann nen insert update oder delete macht ... beim select soll das gelesene recordset zurück gegeben werden das ich dann wiederrum auswerte ...
    wenn datenbank da ist funktioniert das auch alles...

    nun will ich aber ne ausfallsicherung schreiben:
    wenn die db aus irgend nem grund ausfällt soll die aktion gelogt werden und es soll ein leeres recordset zurück gegeben werden ...
    das mit dem loggen geht ... aber ich bekomm das leere recordset net hin ...

    _RecordsetPtr pRecordset; <-- das muss irgendwie anders initiallisiert werden so das while (!pRecordset->GetadoEOF()){ <-- funktioniert und das programm nicht abstürzt ...

    wie bekomm ich das hin ???
    mfg LT

    _RecordsetPtr DB::DBSelectNow(CString aktion){
    	CACS400App* pApp = (CACS400App*)AfxGetApp();
    
    	pApp->wnd->m_bk_dbv_status_rgb2 = RGB(0,255,0);
    	pApp->wnd->SetDlgItemText ( IDC_DBV_STATUS2, LSTRING263 ) ;
    	_RecordsetPtr pRecordset;
    	if(DBConTRUE==TRUE){
    		try	{
    			_CommandPtr pCommand;
    
    			HRESULT hr = pCommand.CreateInstance (__uuidof (Command));
    
    			if (FAILED (hr)){
    				AfxMessageBox ("Can't create an instance of Command");
    			}
    
    			pCommand->ActiveConnection = m_pConn;
    			pCommand->CommandText = (_bstr_t) aktion;
    
    			hr = pRecordset.CreateInstance (__uuidof (Recordset));
    
    			if (FAILED (hr)){
    				AfxMessageBox ("Can't create an instance of Recordset");
    			}
    
    			pRecordset->CursorLocation = adUseClient;
    			pRecordset->Open ((IDispatch *) pCommand, vtMissing, adOpenForwardOnly,
    								adLockReadOnly, adCmdUnknown);
    
    		} 
    		catch( _com_error &e )	{
    			_bstr_t bstrSource(e.Source());
    			_bstr_t bstrDescription(e.Description());
    			TRACE( "Exception thrown for classes generated by #import" );
    			TRACE( "\tCode = %08lx\n", e.Error());
    			TRACE( "\tCode meaning = %s\n", e.ErrorMessage());
    			TRACE( "\tSource = %s\n", (LPCTSTR) bstrSource);
    			TRACE( "\tDescription = %s\n", (LPCTSTR) bstrDescription);
    
    			CString ausg;
    			ausg.Format("Select: %s",(LPCTSTR) bstrDescription);
    			AfxMessageBox (ausg);
    		}catch (...){
    			TRACE ( "*** Unhandled Exception ***" );
    		}
    
    		pApp->wnd->m_bk_dbv_status_rgb2 = RGB(255,0,0);
    		pApp->wnd->SetDlgItemText ( IDC_DBV_STATUS2, LSTRING264 ) ;
    	}else{
    		DBAusfallSicherung(aktion);
    	}
    	return pRecordset;
    }
    

Anmelden zum Antworten