Ejemplo n.º 1
0
void CSessions::clearRecords()
{
	if (!IsBOF() || !IsEOF())
	{
		while (!IsEOF())
		{
			Delete();
			MoveNext();
		}
	}

}
Ejemplo n.º 2
0
int CSessions::addRecord()
{
	if (!IsBOF() || !IsEOF())
	{
		MoveLast();
		m_prevID = m_ID;
	}
	else
		m_prevID = -1;
	AddNew();
	m_ID = ++m_prevID;
	m_NAME.Format(_T("Session%d"), m_ID);
	Update();
	return m_prevID;
}
Ejemplo n.º 3
0
int CFaces::addRecord(int figureID)
{
	if (!IsBOF() || !IsEOF())
	{
		MoveLast();
		m_prevID = m_ID;
	}
	else
		m_prevID = -1;
	AddNew();
	m_ID = ++m_prevID;
	m_FIGURE_ID = figureID;
	m_NAME.Format(_T("%dFace%d"), figureID, m_ID);
	Update();
	return m_prevID;
}
Ejemplo n.º 4
0
int CFigures::addRecord(int sessionID)
{
	if (!IsBOF() || !IsEOF())
	{
		MoveLast();
		m_prevID = m_ID;
	}
	else
		m_prevID = -1;
	AddNew();
	m_ID = ++m_prevID;
	m_SESSION_ID = sessionID;
	m_NAME.Format(_T("%dFigure%d"), sessionID, m_ID);
	Update();
	return m_prevID;
}
Ejemplo n.º 5
0
 bool Loop()
 {
    size_t row = 0;
    if (!(IsBOF() && IsEOF())) for (MoveFirst(); !IsEOF(); MoveNext(), row++)
    {
       //TRACE(_T("row %3d\n"), row);
       NewRecord();
       for (int i = 0; i < GetFieldCount(); i++)
       {
          COleVariant var;
    	   GetFieldValue(i, var);
          SaveField(i, var);
       }
       SaveRecord();
    }
    return true;
 }
Ejemplo n.º 6
0
   dbf_data_type GetFieldType(int field, const CDaoFieldInfo& info, size_t* length)
   {
      dbf_data_type type;

      switch (info.m_nType)
      {
         case dbDate:
         {
            bool date = false;
            bool time = false;
            if (!(IsBOF() && IsEOF())) for (MoveFirst(); !IsEOF(); MoveNext())
            {
               COleVariant var;
      	      GetFieldValue(field, var);
               if (var.vt == VT_DATE)
               {
                  SYSTEMTIME st;
                  COleDateTime dt(var.date);
                  if (dt.GetAsSystemTime(st))
                  {
                     date = date || (st.wYear != 1899);
                     time = time || st.wHour || st.wMinute || st.wSecond;
                  }
               }
            }
            if (date && time)
            {
               type = DBF_DATA_TYPE_DATETIME;
               *length = DBF_LEN_DATETIME;
            }
            else if (time)
            {
               type = DBF_DATA_TYPE_TIME;
               *length = DBF_LEN_TIME;
            }
            else
            {
               type = DBF_DATA_TYPE_DATE;
               *length = DBF_LEN_DATE;
            }
            break;
         }
         case dbDecimal:
         case dbFloat:
         case dbSingle:
         case dbDouble:
            type = DBF_DATA_TYPE_FLOAT;
            break;
         case dbText:
         case dbMemo:
         case dbChar:
            type = DBF_DATA_TYPE_CHAR;
            if (0 == *length)
            {
               *length = 80;
            }
            break;
         case dbInteger:
         case dbLong:
         case dbByte:
         case dbNumeric:
         case dbBigInt:
            type = DBF_DATA_TYPE_INTEGER;
            // workaround: it may be a running number, check if highest one fits.
            // Increase field size if needed
            if (!(IsBOF() && IsEOF()))
            {
               MoveLast();
               COleVariant var;
      	      GetFieldValue(field, var);
               
               int n = 0;
               switch (var.vt)
               {
                  case VT_I2: 
                     n = var.iVal; break;
                  case VT_I4: 
                     n = var.lVal; break;
               }
               if (n)
               {
                  char temp[80];
                  size_t len = _snprintf(temp, _countof(temp), "%d", n);

                  if (len > *length)
                  {
                     *length = len;
                  }
               }
            }
            break;
         case dbBoolean:
            type = DBF_DATA_TYPE_BOOLEAN;
            *length = DBF_LEN_BOOLEAN;
            break;
         case dbCurrency:
         case dbBinary:
         case dbLongBinary:
         case dbGUID:
         case dbVarBinary:
         case dbTime:
         case dbTimeStamp:
         default:
            type = DBF_DATA_TYPE_UNKNOWN;
            break;
      }
      return type;
   }
Ejemplo n.º 7
0
BOOL UEADORecordset:: IsEmpty() const
{
	return IsEOF() && IsBOF();
}
Ejemplo n.º 8
0
//	überlagerte MoveNext-Funktion
//	die Funktion geht davon aus, daß der Index "Nummer" gesetzt ist
BOOL CAbfSet::MoveExt (const char *pS, int iDir, const char *pErzNr /* = NULL */)
{
	ASSERT_VALID (this);
	ASSERT (IsOpen ());
	ASSERT (NULL != pS && AfxIsValidString (pS));
	ASSERT ((0 == strcmp (pS, ">")) || (0 == strcmp (pS, "<")) || (0 == strcmp (pS, "=")));
	ASSERT ((AFX_DAO_NEXT == iDir) || (AFX_DAO_PREV == iDir) ||
			(AFX_DAO_FIRST == iDir) || (AFX_DAO_LAST == iDir));

	COleVariant varOldErz;			// alter Erzeuger	
	BOOL bResOp = FALSE;			// noch nichts getan
	
	try
	{
		CMutex mt;					 // dieses Codestück thread sicher machen
		CWaitCursor wc;
		varOldErz = GetBookmark ();	 // Marke von altem Erzeuger

	//	zur nächsten Abfallgruppe	
		BOOL bFirstOp = FALSE;
		switch (iDir)
		{
			case AFX_DAO_NEXT:			
			case AFX_DAO_PREV:
			{
				// JG einfach den synchronen DS finden
				if (NULL == pErzNr && NULL != g_pErzSet)
					pErzNr = (g_pErzSet->m_Nummer);

				ASSERT ((NULL != pErzNr && *pErzNr) || !m_Nummer.IsEmpty ());
#pragma MSG("JG Clean up this")
// Das wäre die Version mit Abfrage
/*				// m_strFilter strFilter;
				m_strFilter = "[Nummer] = """;
				m_strFilter += 
				pErzNr && *pErzNr ? pErzNr : m_Nummer;
				m_strFilter += """";
				Requery();
*/
				COleVariant VarNr (pErzNr && *pErzNr ? pErzNr : m_Nummer, VT_BSTRT);
				bFirstOp = Seek (pS, &VarNr);
			}
			break;
			case AFX_DAO_FIRST:
			case AFX_DAO_LAST:
			{
				CDaoRecordset :: Move (iDir);
				if (AFX_DAO_FIRST == iDir)
					iDir = AFX_DAO_NEXT;
				else
					iDir = AFX_DAO_PREV;
				bFirstOp = TRUE;
			}
			break;
			default:
				ASSERT (FALSE);
		}

	//	1. Satz gefunden ?
		if (bFirstOp)			
		{
		//	Buchmarken sammeln	
			CRecordInfoList NewList;			// neue Liste anlegen
			CRecordInfo *pInfo = NULL;			// Zeiger int.
			CString strNummer (m_Nummer);
			do
			{
			//	Infos speichern
				CRecordInfo *pInfo = new CRecordInfo (m_Abfallnummer, GetBookmark ());
				NewList.AddTail (pInfo);					
				try
				{
					CDaoRecordset :: Move (iDir);
				}
				catch (CDaoException *e)
				{
					:: DisplayDaoException (e);
					e -> Delete ();
					break;
				}
				catch (CException *e)
				{
					e -> Delete ();
					break;
				}
			}					
			while ((m_Nummer == strNummer) && !IsEOF () && !IsBOF ());					

		//	ggf. Lockmeldung ausgeben
			OutputLockErrorMessage ();

		//	jetzt auf 1. Erzeuger gehen
			POSITION pos;
			if (AFX_DAO_NEXT == iDir)
				pInfo = NewList.GetHead ();				
			else
			{
			//	letzter Satz soll 1. werden					
				pos = NewList.FindIndex (NewList.GetCount () - 1);
				pInfo = NewList.GetAt (pos);
			}

			ASSERT (NULL != pInfo);
			SetBookmark (pInfo -> m_varBookMark);
			pInfo -> m_bFirst = TRUE;

		//	jetzt Liste umkopieren
			m_RecordInfoList.RemoveAll ();			// alte Liste zuvor löschen
			pos = NewList.GetHeadPosition ();
			while (NULL != pos)
				m_RecordInfoList.AddTail (NewList.GetNext (pos));					
			NewList.CPtrList::RemoveAll ();
			bResOp = TRUE;	
			// JG
#pragma MSG("m_bValid accessing function")
//			m_bValid = TRUE;
			// alles OK		
		}	// Seek failed
		else
		{
			// hier wird zu dem alten Satz gegangen
			SetBookmark (varOldErz);				// es wurde kein weiterer Erzeuger gefunden
		}
	}
	catch (CException *e)
	{
		if (e -> IsKindOf (RUNTIME_CLASS(CDaoException)))
			::DisplayDaoException ((CDaoException*) e);
		else
			e -> ReportError ();
		if (varOldErz.vt != VT_EMPTY)
			SetBookmark (varOldErz);
		throw;										// Exception weiterleiten
	}
	
	return bResOp;		// Operationflag setzen							
}
Ejemplo n.º 9
0
bool CStringExt::GetCurrent(CString&value)
{
	if(IsBOF() || IsEOF()) return false;
	return GetEnum(m_lMoveIndex,value);
}