在下有两个问题,请大家赐教,均是有关于数据库中数据在列表控件中的显示问题,
问题:
1.有一张科目表:表中有三项内容:科目编号,科目类型编号,科目名称.其中科目类型编号是该表的一个外键,其为科目类型字典表的主键.科目类型字典有两项内容:科目类型编号,科目类型名称.
问题是,如何在一个列表控件中显示以下内容:科目编号,科目类型名称,科目名称.
注:不是列表对话框!
2.有一张用户表:表中有三项内容:用户名,用户密码,用户工作组,没有用户编号.
问题是:如何在列表控件中显示以下内容:用户名,用户工作组.
下面是我写的:编译没有错误但是就是显示不出内容!(我的是显示全部内容,包括用户密码,现在不需要显示用户密码!)
void CDelUserDlg::RefreshData()
{
if(!m_database.IsOpen())
{
m_database.Open(_T("学生管理系统"));
}
m_UserList.DeleteAllItems();
CDelUserSet *m_recordset=new CDelUserSet(&m_database);
CString strSQL;
strSQL.Format("select * from Table_User ");
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
CDBVariant var;
if(m_recordset->GetRecordCount()!=0) m_recordset->MoveFirst();
int i=0;
while(!(m_recordset->IsEOF()))
{
int temp=0;
m_recordset->GetFieldValue(temp,var);
m_UserList.SetItemText(i,0,var.m_pstring->GetBuffer(1));
m_recordset->GetFieldValue(1,var);
m_UserList.SetItemText(i,1,var.m_pstring->GetBuffer(1));
m_recordset->GetFieldValue(2,var);
m_UserList.SetItemText(i,2,var.m_pstring->GetBuffer(1));
m_recordset->MoveNext();
i++;
}
}
3.请问有没有方法使列表控件处于编辑状态,在编辑完成之后,点击确定,是修改的内容写入数据库中!
如果贴在上方不下,可以可我联系:我得Email:[email protected]
问题:
1.有一张科目表:表中有三项内容:科目编号,科目类型编号,科目名称.其中科目类型编号是该表的一个外键,其为科目类型字典表的主键.科目类型字典有两项内容:科目类型编号,科目类型名称.
问题是,如何在一个列表控件中显示以下内容:科目编号,科目类型名称,科目名称.
注:不是列表对话框!
2.有一张用户表:表中有三项内容:用户名,用户密码,用户工作组,没有用户编号.
问题是:如何在列表控件中显示以下内容:用户名,用户工作组.
下面是我写的:编译没有错误但是就是显示不出内容!(我的是显示全部内容,包括用户密码,现在不需要显示用户密码!)
void CDelUserDlg::RefreshData()
{
if(!m_database.IsOpen())
{
m_database.Open(_T("学生管理系统"));
}
m_UserList.DeleteAllItems();
CDelUserSet *m_recordset=new CDelUserSet(&m_database);
CString strSQL;
strSQL.Format("select * from Table_User ");
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
CDBVariant var;
if(m_recordset->GetRecordCount()!=0) m_recordset->MoveFirst();
int i=0;
while(!(m_recordset->IsEOF()))
{
int temp=0;
m_recordset->GetFieldValue(temp,var);
m_UserList.SetItemText(i,0,var.m_pstring->GetBuffer(1));
m_recordset->GetFieldValue(1,var);
m_UserList.SetItemText(i,1,var.m_pstring->GetBuffer(1));
m_recordset->GetFieldValue(2,var);
m_UserList.SetItemText(i,2,var.m_pstring->GetBuffer(1));
m_recordset->MoveNext();
i++;
}
}
3.请问有没有方法使列表控件处于编辑状态,在编辑完成之后,点击确定,是修改的内容写入数据库中!
如果贴在上方不下,可以可我联系:我得Email:[email protected]
{
strText.Format(TEXT("item %d"), i); // Insert the item, select every other item.
pmyListCtrl->InsertItem(
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0); // Initialize the text of the subitems.
for (int j=1;j < nColumnCount;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
pmyListCtrl->SetItemText(i, j, strText);
}
我是我的程序
list.InsertColumn(0,"项目",LVCFMT_LEFT,120);
list.InsertColumn(1,"金额",LVCFMT_RIGHT,120);
list.InsertColumn(2,"收费时间",LVCFMT_LEFT,110);
list.InsertColumn(3,"打印票号",LVCFMT_LEFT,130);
//sno="A";
extern CDatabase db;
CODBCRecordset rs(&db);
CString s;
s.Format("select * from usertabb009 where field_5 in (select field_2 from usertabb008 where field_4 = 1) and field_3 = '%s'",sno);
rs.Open(s);
int i=0,iPos;
double d1;
LV_ITEM lvitem;
GetDlgItem(IDC_STATIC1)->SetWindowText(sno);
while(!rs.IsEOF()){
lvitem.mask=LVIF_TEXT;
lvitem.iItem=i++;
lvitem.iSubItem=0;
s = rs("field_5");
lvitem.pszText=s.GetBuffer(s.GetLength());
s.ReleaseBuffer(s.GetLength());
iPos=list.InsertItem(&lvitem);
lvitem.iItem=iPos;
lvitem.iSubItem=1;
d1 = rs("field_8");
s.Format("%.2f",d1);
lvitem.pszText=s.GetBuffer(s.GetLength());
s.ReleaseBuffer(s.GetLength());
list.SetItem(&lvitem);
lvitem.iSubItem=2;
s = rs("field_9").AsString();
lvitem.pszText=s.GetBuffer(s.GetLength());
s.ReleaseBuffer(s.GetLength());
list.SetItem(&lvitem);
lvitem.iSubItem=3;
s = rs("field_10");
lvitem.pszText=s.GetBuffer(s.GetLength());
s.ReleaseBuffer(s.GetLength());
list.SetItem(&lvitem);
rs.MoveNext();
}
LONG lStyle;
lStyle=GetWindowLong(list.m_hWnd,GWL_STYLE);//获取当前窗口类型
lStyle&=~LVS_TYPEMASK; //清除显示方式位
lStyle|=LVS_REPORT; //设置显示方式
//lStyle &=~LVS_NOCOLUMNHEADER ;
SetWindowLong(list.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型
list.SetExtendedStyle(list.GetExtendedStyle() | LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );
你自己改一下就行了
{
m_basicset.GetFieldValue(0,varValue);
sprintf(buf,"%d",varValue.m_lVal);
m_info.InsertItem(i,buf);
m_basicset.GetFieldValue(1,varValue);
m_info.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(2,varValue);
sprintf(buf,"%d",varValue.m_chVal);
m_info.SetItemText(i,2,buf);
m_basicset.GetFieldValue(3,varValue);
m_info.SetItemText(i,3,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(4,varValue);
m_info.SetItemText(i,4,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(5,varValue);
sprintf(buf,"%d-%d-%d",varValue.m_pdate->year,varValue.m_pdate->month,varValue.m_pdate->day);
m_info.SetItemText(i,5,buf);
m_basicset.GetFieldValue(6,varValue);
m_info.SetItemText(i,6,varValue.m_pstring->GetBuffer(1));
..............
....................................
m_basicset.GetFieldValue(18,varValue);
sprintf(buf,"%d",varValue.m_chVal);
m_info.SetItemText(i,18,buf);
m_basicset.MoveNext();
i++;
}
下面是我得代码:
void CDelUserDlg::RefreshData(){
if(!m_database.IsOpen())
{
m_database.Open(_T("学生管理系统"));
}
m_UserList.DeleteAllItems();
CDelUserSet *m_recordset=new CDelUserSet(&m_database);
CString strSQL;
strSQL.Format("select * from Table_User ORDER BY 用户工作组 ");
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
CDBVariant var;
if(m_recordset->GetRecordCount()!=0) m_recordset->MoveFirst();
int i=0;
while(!(m_recordset->IsEOF()))
{
int temp=0;
m_recordset->GetFieldValue(temp,var);
m_UserList.InsertItem(i,var.m_pstring->GetBuffer(1));
m_recordset->GetFieldValue(2,var);
m_UserList.SetItemText(i,1,var.m_pstring->GetBuffer(1));
m_recordset->MoveNext();
i++;
}
}
以供大家参考!
现在我把者一百分平均分给大家!以表谢意!