void CSessions::clearRecords() { if (!IsBOF() || !IsEOF()) { while (!IsEOF()) { Delete(); MoveNext(); } } }
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; }
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; }
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; }
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; }
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; }
BOOL UEADORecordset:: IsEmpty() const { return IsEOF() && IsBOF(); }
// ü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 }
bool CStringExt::GetCurrent(CString&value) { if(IsBOF() || IsEOF()) return false; return GetEnum(m_lMoveIndex,value); }