VC 操作 SQL Server 主从表
2006-07-23 11:17:17 来源:WEB开发网树形控件的事件处理: void CClassTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
五、实现主从表的显示
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CTreeCtrl& refTreeCtrl=GetTreeCtrl();
HTREEITEM hSelected=pNMTreeView->itemNew.hItem;
if(hSelected!=NULL)
{
m_strMenuName=refTreeCtrl.GetItemText(hSelected);
if(AfxGetMainWnd()->IsWindowEnabled())
UpdateDagView();
}
//-----------
*pResult = 0;
}
由于我假设不知道数据库中有多少字段,字段名都是不知道的。所有都动态生成。所以首先要检索主键。把主键检索出来以后,然后得到列表当前选择行的对应于主键列的数据。然后以这些主键列的值当作检索条件检索从表的数据(从表的主键一定多于主表)最后将结果显示出来。看起来过程也挺简单的,如果用dotnet中DataGrid做的话,太简单了是吧,但VC操作起来,就有点麻烦了。就拿从列表取当前选择行的主键列的数据的话,和dotnet一比,就知道VC麻烦在哪儿了。(不过我还是比较喜欢VC,嘿嘿)。一个DataGrid,如果我知道了列名,又茯取了当前行的行号(CurrentRowIndex)
如果你后台是直接绑定的一个DataTable,就可以直接取得这个值:myTable.Rows[CurrnetRowIndex][“pkey1”].ToString();
当然如果你后面不是直接绑定一个DataTable,而是一个结果经过虑后的结果,那么可能会稍烦琐一点。这里不对这种情况进行计讨论。下面看一下VC下是怎么处里的,(如果有更好的方法,请通知我,先谢了) int CDagView::GetColumnIndex(CListCtrl &ref,LPCTSTR strCol)
先取得列号然后取得行号,最后取这个值......好了,就写这么多吧,具体细节再看代码。
{
CHeaderCtrl * pHeader=ref.GetHeaderCtrl();
int nCount=pHeader->GetItemCount();
TCHAR lpBuffer[256];
bool fFound = false;
HDITEM hdi;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hdi.cchTextMax = 256;
int index=-1;
for (int i=0;!fFound && (i < nCount);i++)
{
pHeader->GetItem(i, &hdi);
if (strcmp(hdi.pszText, strCol) == 0)
{
index=i;
fFound = true;
}
}
return index;
}
iSubItem=GetColumnIndex(refListCtrl);
CString strValue=refListCtrl.GetItemText(iCurrent,iSubItem);
六、结束语
其实这个程式比较简单,在Windows 2k下调试通过!就写到这里吧,不足之处,见谅!有时候,再好的技术,如果缺乏有效的示例,也会变得晦涩难懂。像本文中的列表、树形控件参数很多,使用VC++虽然说可以发挥出他们最强劲的功能,但是有一部分参数,在MSDN中只是简要介绍,没有详细的示例说明(我猜:微软内部肯定有更加详细的示例及文档,或者说叫引擎,不对外公布)这就要靠广大程序员的努力探索了,知识共享,大家共同进步。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››VC++实现360安全桌面背景
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接