关于UpdataData();的问题

hzh_shat 2004-07-14 01:31:08
我有个下拉列表框,然后定义了一个成员变量CString m_nDSNs;当列表框中的内容改变时,我用UpdataData(TRUE);来更新它所对应的成员变量m_nDSNs的内容,比方说我的下拉列表的内容有:
My DataBase Source
Localserver
分别对应的是不同的数据源
当列表由空白状态到我选择了MyDataBase Source后,执行UpdataData(TRUE);m_nDSNs不是应该立即被更新吗?,可是我取到的仍然还是“”,只有当我再选取其他的选项后,再次更新,才是MyDataBase Source.
导致我的程序结果是这样的:
当我再次选取其他选项的时候,出现的对应内容是上一次列表框里选取的选项的相应内容。
问题:
1、为什么?
2、可能需要怎么改?
谢谢!
...全文
264 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzh_shat 2004-07-15
  • 打赏
  • 举报
回复
TO:lixiaosan(小三),你给我说的方法可以,多谢,我的那个为什么不行呢?
hzh_shat 2004-07-15
  • 打赏
  • 举报
回复
TO:hellopine() ,我是在OnSelectChange()函数里面调用的啊,可是这是我选择了下拉列表相应选项之后,执行的第一个函数啊,在这里更新不是最靠前的了吗?还能换到哪里呢?

TO:lixiaosan(小三) ,我关联的控件变量就叫m_strDSN,而且不是在UpdataData()里面调用了控件变量和对话框的数据交换函数,之后m_strDSN的内容就是所要的字符串吗?
为什么还要去写m_combo1.GetLBText(m_combo1.GetCurSel(), str);?
谢谢!
hzh_shat 2004-07-15
  • 打赏
  • 举报
回复
我的代码:
void CDataManagerView::OnSelchangeDsn()
{
// TODO: Add your control notification handler code here
if(m_henv)
{
if(UpdateData(TRUE))
{
//Tables fill function
FillTablesComboBox();

}
}

}
void CDataManagerView::FillTablesComboBox()
{
ResetTablesComboBox();
SQLRETURN rc;
SQLHDBC hdbc=NULL;
unsigned char userID[]="sa";
unsigned char psw[]="";

if(SQL_SUCCESS==(rc=::SQLAllocHandle(SQL_HANDLE_DBC,m_henv,&hdbc)))
{
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1];
strcpy((char*)szDSN,m_strDSN);//我在这里设置了断点,发现下拉列表的成员变量m_strDSN,的内容是"",而不是我选择的数据源名字
……
::SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
hdbc=NULL;
}
}
名牌大灰狼 2004-07-14
  • 打赏
  • 举报
回复
贴出代码来看
smallcrocodile 2004-07-14
  • 打赏
  • 举报
回复
那就先给下拉列表一个初始值
littleline 2004-07-14
  • 打赏
  • 举报
回复
F9定了断点,F5跟进去看看!
littleline 2004-07-14
  • 打赏
  • 举报
回复
应该是事件的问题,试试小山的方法呢!
bravexiaoy 2004-07-14
  • 打赏
  • 举报
回复
小三说得对

给combobox关联控件变量m_combo1
UpdateData();
CString str;
m_combo1.GetLBText(m_combo1.GetCurSel(), str);

str就是你当前选中的项的字符串

我新来的 。。。。。。。。。。。。。。。
lixiaosan 2004-07-14
  • 打赏
  • 举报
回复
给combobox关联控件变量m_combo1
CString str;
m_combo1.GetLBText(m_combo1.GetCurSel(), str);

str就是你当前选中的项的字符串
lixiaosan 2004-07-14
  • 打赏
  • 举报
回复
给combobox关联控件变量m_combo1
CString str;
m_combo1.GetLBText(m_combo1.GetCurSel(), str);

str就是你当前选中的项的字符串
lixiaosan 2004-07-14
  • 打赏
  • 举报
回复
给combobox关联控件变量m_combo1
CString str;
m_combo1.GetLBText(m_combo1.GetCurSel(), str);
csdmy 2004-07-14
  • 打赏
  • 举报
回复
楼主你是怎么调用的?贴出代码来看看啊
我怀疑你写UpdataData的函数调用上有什么问题
hellopine 2004-07-14
  • 打赏
  • 举报
回复
UpdateData()出现的位置不对
你是不是在下拉列表框的ChangeSelect消息处理函数里调用的啊

换个地方就好了
hold 2004-07-14
  • 打赏
  • 举报
回复
你是在哪个函数里调用UpdataData的?

15,978

社区成员

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

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