请哪位老大帮帮忙,赋值的问题。烦死了,找不到人问!
我有一个数据库表中有三项,我在一个对话框的ListBox把它的姓名显示出来。
显示时我引用一个工具类CUser(CListBox类)每当在ListBox 中插入一个数据就会创建一个User对象,而列表框中的每项数据指向以一个保存User数据User对象
然后我又添加三个文本框可以通过它修改数据库。但是这三个文本框的数据传不到
*pUser娜为老大可以帮我解决以下问题?????????????????
BOOL CUserMaintenanceDlg::GetSelectedUser(int *piIndex,User**ppUser)
{
BOOL bSuccess = false;
int iIndex;
if(LB_ERR!=(iIndex = m_lbxUsers.GetCurSel()))
{
*piIndex = iIndex;
*ppUser = (User*)m_lbxUsers.GetItemData(iIndex);
bSuccess = true;
UpdateData(false);
}
return bSuccess;
}
void CUserMaintenanceDlg::OnButton1()
{
// TODO: Add your control notification handler code here
int iCurrIndex;
User *pUser = NULL;
if(GetSelectedUser(&iCurrIndex,&pUser))
{
ASSERT(pUser);
if(pUser)
{
UpdateData();
CString strPrevUserID;
strPrevUserID = m_strUserID;
CString strPrevUserName;
strPrevUserName = m_strUserName;
int iPrevStatus = m_iStatus;
就是这一部分值传不过来???
// pUser->m_strUserID = m_strUserID;
pUser->m_strUserName = m_strUserName;
pUser->m_iStatus = m_iStatus; } //就是这一部分值传不过来???
if(SaveUser(pUser))
{
if(LB_ERR==m_lbxUsers.DeleteString(iCurrIndex))
{
AfxMessageBox("The User ID was Saved,""but the previous User ID coule not be ""removed from the listbox.");
}
else
{
int iNewIndex = m_lbxUsers.AddString(pUser->m_strUserName);
if((LB_ERR== iNewIndex)||(LB_ERRSPACE== iNewIndex))
{
AfxMessageBox("The User ID was Saved but" "the new user ID could" "not be added to the listbox.");
}
if(LB_ERR==m_lbxUsers.SetItemData(iNewIndex,(DWORD)pUser))
{
AfxMessageBox("setitemdata returned LB_ERR. this will probably cause serious problems if you attempt to update or delete this item from the listbox");
}
}
UpdateData(false);
}
else
{
pUser->m_strUserID = strPrevUserID;
pUser->m_strUserName = strPrevUserName;
pUser->m_iStatus = iPrevStatus;
AfxMessageBox("SaveUser failed");
}
}
}
else
{
AfxMessageBox("you must first select a user id to save");
}
}
BOOL CUserMaintenanceDlg::SaveUser(User *pUser)
{
BOOL bSuccess = false;
CDatabase db;
try
{
if(db.Open("Is"))
{
CString strSQL = CString("UPDATE student SET ");
strSQL += CString("sUserName = '") + pUser->m_strUserName+CString("',");
strSQL += CString("iStatus='");
char szStatus[10];
itoa(pUser->m_iStatus,szStatus,10);
strSQL += szStatus;
strSQL += "'";
strSQL += CString("where sUserID=");
strSQL += CString("'")+pUser->m_strUserID+CString("'");
db.ExecuteSQL(strSQL);
bSuccess=true;
}
}
catch(CDBException *pe)
{
AfxMessageBox(pe->m_strError);
if(db.IsOpen())
{
db.Close();
}
pe->Delete();
}
return bSuccess;
}