Проблем

1 отговора 51 прегледа
#1

Проблем

Пиша една програмка на MSVC (MFC) за да прехвърля няколко таблици от Access в Oracle. Access'97, Oracle 8i 8.1.6.0. От Access-кия файл чета през ODBC (4.00.4403.02), в
Oracle-а пиша през Oracle Objects for OLE. Една от таблиците ми създава проблеми.
CREATE TABLE Т1(DATA VARCHAR2(255), ID NUMBER(10) PRIMARY KEY, FREQUENCY NUMBER(10));
Имам си клас наследник на CRecordset, съдържащ съответните member variable-и, bind-нати съответно с трите колони. db_st ми е обект от този клас, а ot е ODynaset.

ot.Open(odb, "SELECT * FROM T1");
db_st.Open(CRecordset::snapshot, "T1");
TCHAR FindClause[255];
while (!db_st.IsEOF()){

lstrcpy(FindClause, "DATA = '");
lstrcat(FindClause, db_st.m_Data);
lstrcat(FindClause, "'");

ot.FindFirst(FindClause);

if (ot.NoMatch()) {
ot.AddNewRecord();
lstrcpy(FindClause, db_st.m_Data);
ot.SetFieldValue("ID", ++iSimple.T1);
ot.SetFieldValue("DATA", (LPCSTR)FindClause);
ot.SetFieldValue("FREQUENCY", 0);
ot.Update();
// odb.CommitTrans();
}
db_st.MoveNext();
}
ot.Close();
db_st.Close();

Проблемите са два:
1) Първо четенето от Access-a не върви по реда на записите... примерно от 214 запис отива на 290, после си вървят подред, после пак прескача няколко... Това не е голям
проблем, защото накрая ги е обходил всичките, но все пак ми е интересно защо става
2) Вторият проблем е много по-сериозен -> findfirst-a работи идеално, if-a сработва, обаче в случая когато трябва да влезе вътре в тялото на if-а, не записва нищо в базата...

Чакам някакви коментари...

Отговор
в отговор на Malcolm #2

Отг: Проблем

Първия проблем отпадна... Compact Database... :-)

Отговор