Re: добавить запись в БД Access с помощью CRecordset
От: yozhik89 Украина  
Дата: 11.06.10 17:37
Оценка:
Нашел решение! Вод исхдоник ДО и ПОСЛЕ. В первом варианте вылетала ошибка, что не поддерживаеться dynaset, во втором все отлично:


void CPCircuitDlg::OnDatabaseAddcircuit() 
{
    // TODO: Add your command handler code here
    CAddNewCircuit dlg;
    if(dlg.DoModal() == IDOK)
    {
        sDsn.Empty();
        sDsn.Format("ODBC;DRIVER={%s};DSN=%s;DBQ=%s",sDriver, sFile, sFile);
        m_db1.Open(NULL,false,false,sDsn, true);
        CMyRecordset rec(&m_db1);

        try
        {
            rec.Open(CRecordset::dynaset, "SELECT *  FROM Circuits");  //здась вылетало!!!!
            if(rec.CanAppend()) 
            {
                rec.AddNew();
            }
            rec.m_CTID = 1;//dlg.m_CTID;
            rec.m_Height = dlg.m_height;
            rec.m_IsCurrentGood = dlg.m_iscurrent;
            rec.m_IsDemaged = dlg.m_isdemaged;
            rec.m_IsGood = dlg.m_isgoodp;
            rec.m_IsPoweredGood = dlg.m_ispowered;
            rec.m_IsTermedGood = dlg.m_istermed;
            rec.m_Length = dlg.m_len;
            rec.m_MatID = 1;//dlg.m_MatID;
            rec.m_ProcID = 1;//dlg.m_ProcID;
            rec.m_Resistance = dlg.m_resistance;
            rec.m_Voltage = dlg.m_voltage;
            rec.m_Width = dlg.m_width;
            
            rec.Update();
            rec.Close(); 
        }
        catch(CDBException cdb)
        {
            AfxMessageBox(cdb.m_strStateNativeOrigin);
        }
        m_db1.Close();
    }
    else
    {
        AfxMessageBox("Record wasnt added");
    }
}


а решение было так близко...))

void CPCircuitDlg::OnDatabaseAddcircuit() 
{
    // TODO: Add your command handler code here
    CAddNewCircuit dlg;
    if(dlg.DoModal() == IDOK)
    {
        sDsn.Empty();
        sDsn.Format("ODBC;DRIVER={%s};DSN=%s;DBQ=%s",sDriver, sFile, sFile);
        m_db1.Open(NULL,false,false,sDsn, false); //поменять вот здесь параметр с true на false
        CMyRecordset rec(&m_db1);

        try
        {
            rec.Open(CRecordset::dynaset, "SELECT *  FROM Circuits"); //...и все прекрасно работает))!!!!
            if(rec.CanAppend()) 
            {
                rec.AddNew();
            }
            rec.m_CTID = 1;//dlg.m_CTID;
            rec.m_Height = dlg.m_height;
            rec.m_IsCurrentGood = dlg.m_iscurrent;
            rec.m_IsDemaged = dlg.m_isdemaged;
            rec.m_IsGood = dlg.m_isgoodp;
            rec.m_IsPoweredGood = dlg.m_ispowered;
            rec.m_IsTermedGood = dlg.m_istermed;
            rec.m_Length = dlg.m_len;
            rec.m_MatID = 1;//dlg.m_MatID;
            rec.m_ProcID = 1;//dlg.m_ProcID;
            rec.m_Resistance = dlg.m_resistance;
            rec.m_Voltage = dlg.m_voltage;
            rec.m_Width = dlg.m_width;
            
            rec.Update();
            rec.Close(); 
        }
        catch(CDBException cdb)
        {
            AfxMessageBox(cdb.m_strStateNativeOrigin);
        }
        m_db1.Close();
    }
    else
    {
        AfxMessageBox("Record wasnt added");
    }
}
Извинити за мой русский:)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.