关于COMBOX用法问题 我现在做一个登陆界面,想用COMBOX 来做输入和记录用户名,怎么样才能关联到我的ACCESS数据库啊?如果用户登陆成功了就记录在下拉列表中,类似于 QQ登陆是的效果。。大侠们怎么做啊, 没用过,请大侠们指点一下,最后能给个简单的实例代码,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 选择控件属性 样式 选择下移 添加CBN_EDITCHANGE事件, 在响应函数中 写连接数据库的代码就行了 别说你不会连接ACCESS数据库。 部长,COMBOX怎么关联到数据库啊? 就是如果用户名密码正确的话,我就记录这个用户名,下次打开的时候,就直接在下拉选项里,不要手动输入,这个很常见的,是怎么弄的? 如果是我整的话 我就把数据存到一个INI中 读写都比较简单 这个有源代码 是ADO操作 ACCESS的 你看看吧http://www.vckbase.com/document/viewdoc/?id=496 这个我知道,我是问,怎么把成功登陆的用户名保存到了COMBOX的下拉列表中,比如:第一次张山登陆成功了,下次李四打开的时候,就可以看到列表里有张山,同时李四可以自己写名字进去,如果成功了,那下次启动的时候,列表里就有张山和李四可以选。这个怎么弄啊? 其实楼主你说的这个需求很简单首先确定一个问题 如何知道成功登陆了成功登陆后将其用户名记录在INI里面打开软件自动搜索INI显示到前台就好了 #9楼正解不过也不一定要存.INI文件,可以存xml文件,如果用户要分类的话,xml比较好 嗯,就是这个意思,我现在是存到INI里,WritePrivateProfileString(_T("UserList"),_T("UserName"),str,_T("user.ini")); 发现每次都只存一个, 怎么写这个保存语句,我这样做,它只会存到同一个键值里面, 如果我想单纯的存这个名字在INI里面,不需要什么段名,键名就像这样的: 张山李四王五 怎么弄啊? 没人指点下吗? 怎么保存用户名,放到COMBOX列表里啊? 怎么写这个存储语句啊? 还有COMBOX的宽度怎么改变啊,默认的很窄啊。 先存到数据库中,再从数据库读取/////////存到表m_pRecordset->PutCollect("用户名",(_variant_t)m_User);m_pRecordset->PutCollect("密码",(_variant_t)m_Password);//////////////读取BOOL CLoginDlg::OnInitDialog() { int i,recordcount; CString sql="SELECT Username FROM Login "; try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText); recordcount=m_pRecordset->GetRecordCount();//m_pConnectSQL打开数据库自己去写 if(!m_pRecordset->adoEOF) { for(i=0;i<recordcount;i++) { m_combUser.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Username")); m_pRecordset->MoveNext(); } } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format("读取用户名错误:%s",e.ErrorMessage()); AfxMessageBox(temp); return false; }}////////判断输入用户名跟密码是否正确void CLoginDlg::OnOK() { UpdateData(); if(m_User.IsEmpty()||m_Password.IsEmpty()) { AfxMessageBox("请输入用户名和密码!"); return; } else { //成生sql语句 CString sql="SELECT * FROM Login where Username='"+m_User+"' and Password='"+m_Password+"'"; try { //查询数据库,看是否有此用户和密码 m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText); //如果没有此用户和密码,再查询是否有此用户 if(m_pRecordset->adoEOF) { AfxMessageBox("用户名或密码错误!"); return ; } //用户名和密码存在,登录成功 else { theApp.struser=m_User; theApp.strpassword=m_Password; } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format("读取用户名和密码错误:%s",e.ErrorMessage()); AfxMessageBox(temp); return; } } CDialog::OnOK();}以上大概思路,根据需要自己去改改 请教!对话框中自动描点连线绘图 关于playSound()的用法 本以为保存bmp很容易,可是怎么就不对呢?请看代码: 一个考验高手的问题 《windows程序设计》中一个不懂问题,诚请赐教! 高手快帮我指条路 如何判断管道另一端的进程(cmd.exe)是否在等待输入? tinyxml在vc++ 6.0下总是出错 诸位同仁,请问哪位可以帮助在下解决问题:我想了解目前图像跟踪都有哪些算法、方法? 请教:如何把一个Console程序的输出重定向到一个文件中供程序使用;例如javac的输出信息? MFC状态栏的问题 在线等!!在XP系统下,打开多个程序实例才会崩溃(VS2005)开发的程序
就是如果用户名密码正确的话,我就记录这个用户名,下次打开的时候,就直接在下拉选项里,不要手动输入,
这个很常见的,是怎么弄的?
这个有源代码 是ADO操作 ACCESS的 你看看吧http://www.vckbase.com/document/viewdoc/?id=496
这个我知道,我是问,怎么把成功登陆的用户名保存到了COMBOX的下拉列表中,比如:第一次张山登陆成功了,
下次李四打开的时候,就可以看到列表里有张山,同时李四可以自己写名字进去,如果成功了,那下次启动的时候,列表里就有张山和李四可以选。这个怎么弄啊?
不过也不一定要存.INI文件,可以存xml文件,如果用户要分类的话,xml比较好
嗯,就是这个意思,我现在是存到INI里,
WritePrivateProfileString(_T("UserList"),_T("UserName"),str,_T("user.ini")); 发现每次都只存一个, 怎么写这个保存语句,我这样做,它只会存到同一个键值里面, 如果我想单纯的存这个名字在INI里面,不需要什么段名,键名
就像这样的:
张山
李四
王五
怎么弄啊?
怎么保存用户名,放到COMBOX列表里啊? 怎么写这个存储语句啊? 还有COMBOX的宽度怎么改变啊,默认的很窄啊。
m_pRecordset->PutCollect("用户名",(_variant_t)m_User);
m_pRecordset->PutCollect("密码",(_variant_t)m_Password);//////////////读取
BOOL CLoginDlg::OnInitDialog()
{
int i,recordcount;
CString sql="SELECT Username FROM Login ";
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText);
recordcount=m_pRecordset->GetRecordCount();//m_pConnectSQL打开数据库自己去写
if(!m_pRecordset->adoEOF)
{
for(i=0;i<recordcount;i++)
{
m_combUser.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Username"));
m_pRecordset->MoveNext();
}
} m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("读取用户名错误:%s",e.ErrorMessage());
AfxMessageBox(temp);
return false;
}
}
////////判断输入用户名跟密码是否正确
void CLoginDlg::OnOK()
{
UpdateData();
if(m_User.IsEmpty()||m_Password.IsEmpty())
{
AfxMessageBox("请输入用户名和密码!");
return;
}
else
{
//成生sql语句
CString sql="SELECT * FROM Login where Username='"+m_User+"' and Password='"+m_Password+"'";
try
{
//查询数据库,看是否有此用户和密码
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText);
//如果没有此用户和密码,再查询是否有此用户
if(m_pRecordset->adoEOF)
{
AfxMessageBox("用户名或密码错误!");
return ;
}
//用户名和密码存在,登录成功
else
{
theApp.struser=m_User;
theApp.strpassword=m_Password;
}
m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("读取用户名和密码错误:%s",e.ErrorMessage());
AfxMessageBox(temp);
return;
}
}
CDialog::OnOK();
}以上大概思路,根据需要自己去改改