自己写的程序一运行就崩溃 求帮助!该如何解决

自己写的程序一运行就崩溃 求帮助!
本帖最后由 VisualEleven 于 2013-01-11 11:51:03 编辑

IMPLEMENT_DYNAMIC(CQIANDlg, CDialogEx)

CQIANDlg::CQIANDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CQIANDlg::IDD, pParent)
, m_ID(_T(""))
, m_SellID(_T(""))
, m_Name(_T(""))
, m_SellDate(_T(""))
, m_Price(_T(""))
, m_Amount(_T(""))
, m_Total(_T(""))
{

}

CQIANDlg::~CQIANDlg()
{
}

void CQIANDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT2, m_ID);
DDX_Text(pDX, IDC_EDIT1, m_SellID);
DDX_Text(pDX, IDC_EDIT4, m_Name);
DDX_Text(pDX, IDC_EDIT7, m_SellDate);
DDX_Text(pDX, IDC_EDIT3, m_Price);
DDX_Text(pDX, IDC_EDIT6, m_Amount);
DDX_Text(pDX, IDC_EDIT5, m_Total);
}


BEGIN_MESSAGE_MAP(CQIANDlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON3, &CQIANDlg::OnBnClickedButton3)
END_MESSAGE_MAP()



void CQIANDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
CDatabase m_db;

CRecordset rs;
m_db.OpenEx(_T("DSN=TestSQL01;"));
TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH

UpdateData(TRUE);
CString a=m_ID;
CString sql = _T("SELECT 商品编号 FROM 销售表    WHERE (商品编号 = a )");   //要执行的SQL语句
CString psd;    //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);      //打开查询记录
rs.GetFieldValue(_T("商品名称"),psd);       //得到数据       
m_Name=psd;
UpdateData(FALSE);
}


CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH 

}

\自己写的程序一运行就崩溃 求帮助!该如何解决自己写的程序一运行就崩溃 求帮助!该如何解决

------解决方案--------------------
CString sql = _T("SELECT 商品编号 FROM 销售表    WHERE (商品编号 = a )");   //要执行的SQL语句
    CString psd;    //存放查询结果
    TRY
    {
        rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);      //打开查询记录
        rs.GetFieldValue(_T("商品名称"),psd);       //得到数据  


你只查询了商品编号,却要获取商品名称,自然就得不到了。

SELECT 商品编号,商品名称 FROM 销售表    WHERE (商品编号 = a )
或者:
SELECT * FROM 销售表    WHERE (商品编号 = a )