if (FAILED(m_rs->Open(sql_cmd, m_conn.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdUnknown)))
return SQL_ERROR;
m_rs->CacheSize = 10; // сейчас в кэше только одна запись, 10 будет после movenext
если только для заполнения структур, то наверное, лучше так
m_rs->CacheSize = 10;
if (FAILED(m_rs->Open(sql_cmd, m_conn.GetInterfacePtr(),
adOpenForwardonly, // этот курсор полегче
adLockOptimistic,
adCmdText))) // или adCmdTable
return SQL_ERROR;