请问怎么在combobox下拉列表中显示用户名啊,求大神帮忙,急急急!!!

templezhang 2012-05-14 05:13:11
这里是登录对话框类
// CLoginDlg dialog

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLoginDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLoginDlg)
m_strUser = _T("");
m_strPass = _T("");
//}}AFX_DATA_INIT
}
void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLoginDlg)
DDX_Control(pDX, IDC_EDIT1, m_ctrPass);
DDX_Control(pDX, IDC_COMBO1, m_ctrUser);
DDX_CBString(pDX, IDC_COMBO1, m_strUser);
DDX_Text(pDX, IDC_EDIT1, m_strPass);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
//{{AFX_MSG_MAP(CLoginDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLoginDlg message handlers

void CLoginDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);//将对话框数据传入变量
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM admins",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);//打开表

if(m_strUser=="")
{
MessageBox("请输入用户名!","用户登录");
m_ctrUser.SetFocus();
return;
}

CString str;
str="adminID='"+m_strUser+"'";
m_pRecordset->Filter=(_variant_t)str;
//AfxMessageBox( "请先选中一条记录 ");
m_pRecordset->Requery(adLockReadOnly);//查找系统用户记录


if(m_pRecordset->BOF&&m_pRecordset->adoEOF)
{
//无用户记录,登录用户名错误
MessageBox("用户名错误","用户登录");
m_ctrUser.SetFocus();
return;
}
else
{
//检查口令是否正确
if((m_pRecordset->GetCollect("adminPassword").bstrVal)!=m_strPass)
{
MessageBox("口令错误","用户登录");
m_ctrPass.SetFocus();
return;
}
else
{
m_pRecordset->Close();
}
}

CDialog::OnOK();
}

void CLoginDlg::OnCancel()
{
// TODO: Add extra cleanup here

CDialog::OnCancel();
}

BOOL CLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();

while(!m_pRecordset->adoEOF)
{
m_ctrUser.AddString(m_pRecordset->GetCollect("adminID"));
m_pRecordset->MoveNext();
}
// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
下面这段主程序中初始化和连接Oracle数据库,
// CYanxinApp initialization

BOOL CYanxinApp::InitInstance()
{
if(!AfxOleInit())
{
AfxMessageBox("初始化COM库失败!");
return FALSE;
}
//此处添加初始化数据库连接
m_pConnection.CreateInstance("ADODB.Connection");
//连接数据库
try
{
m_pConnection->ConnectionTimeout=8;
//连接oracle数据库
m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Database=orcl;User Id=dbuser01;Password=123;Persist Security Info=True","","",adModeUnknown);
}
catch(_com_error e)//捕捉异常
{
AfxMessageBox("数据库连接失败!");
return FALSE;
}

AfxEnableControlContainer();
不要红色那段没问题,我想在登陆界面的下拉框中显示用户名,就加了红色那段,可是出错了,不知道怎么改,求大神指点!!!
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
templezhang 2012-05-15
  • 打赏
  • 举报
回复
没人关注啊。。。
向立天 2012-05-15
  • 打赏
  • 举报
回复
m_pRecordset->adoEOF可以在well里做判断么
是不是有一个函数返回BOOL值的
  • 打赏
  • 举报
回复
红色部分尝试改成这样:
while(!m_pRecordset->adoEOF)
{
_variant_t var;
var = m_pRecordset->GetCollect("adminID");
CString strTmp = (LPCSTR)(_bstr_t(var.bstrVal));
m_ctrUser.AddString(strTmp);
m_pRecordset->MoveNext();
}

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧