Report报表形式时,怎样实现修改表格数据

Report报表形式时,怎样实现修改表格数据,第1张

//声明:本文例子是双击任意位置处的表格数据,实现对当前位置的单元格数据进行修改

1.首先是实现在列表控件中显示表格数据,具体代码这里不描述,显示效果如下图:

2.现要实现如声明所说的功能,就是双击某个单元格d出一个对话框输入新值,再用新值去替换原值:

1>重要步骤,一定要将列表控件扩展样式设为满行选中,如LVS_EX_FULLROWSELECT样式,如果不设为这个样式,后面会出问题,m_list_tabledata是列表控件所关联的控件变量,LVS_EX_GRIDLINES是如上图所设置的网格样式,代码如下:

[cpp] view plain copy

<span style="font-size:18px">m_list_tabledata.SetExtendedStyle(m_list_tabledata.GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT)//设置列表控件的延展属性为“满行选中和网格”</span>

2>插入一个对话框资源,设计界面如下图所示:

并且为该对话框添加一个新类,为CDialogModifyDrillItem,并为该编辑框关联一个CString类型的成员变量m_strNewValue

3>为列表控件添加鼠标双击事件,即NM_DBLCLK事件,整个事件响应函数代码如下:

这里的LPNMITEMACTIVATE结构体中的iItem代表鼠标双击位置的行号,iSubItem为鼠标双击位置的列号,由于本人做的是数据库开发,再修改某条记录之前需要先将这条

记录存到历史表中去,然后再更新显示表中对应字段的值,因此这里还涉及到一个问题,就是获取鼠标双击的单元格所对应的类字段名称,因为在更新显示表对应字段值时需要 用到该字段的名称,故有这么一个过程,代码下面有详细说明:

由于项目的保密性,有些代码已经省略,省略代码位置都有说明:

[cpp] view plain copy

//当用户在列表控件中双击鼠标左键触发该事件,该事件的主要作用是双击某项修改其值

void CDialogQueryDrillVerTree::OnNMDblclkListtabledata(NMHDR *pNMHDR, LRESULT *pResult)

{

LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR)

// TODO: 在此添加控件通知处理程序代码

if (pNMItemActivate->iItem == -1) //若用户鼠标双击没有点在列表控件位置,则提示错误信息

{

AfxMessageBox("你没有点击任何项目!")

}

else

{

CString bhid=m_list_tabledata.GetItemText(pNMItemActivate->iItem,0)//pNMItemActivate->iItem代表鼠标双击位置的行号,pNMItemActivate->iSubItem为鼠标双击位置的列号,

//而且列表控件的扩展样式必须设为LVS_EX_FULLROWSELECT,即满行选中,这样才能点击一行的任意列都可以获取正确的行号,再根据行号获取BHID字段

//AfxMessageBox(bhid)

//修改之前先将原始记录值插入到对应的历史表中去,对应代码已经省略

<span style="white-space:pre">     </span>//这里省略将该记录插入到历史表中去代码

<span style="white-space:pre">     </span>//.................//

[cpp] view plain copy

CDialogModifyDrillItem m_dlgModify//d出CDialogModifyDrillItem对话框,用于接收用户所修改的值

if (m_dlgModify.DoModal()==IDOK)//如果m_dlgModify对话框点击了确定按钮

{

m_list_tabledata.SetItemText(pNMItemActivate->iItem,pNMItemActivate->iSubItem,m_dlgModify.m_strNewValue)//pNMItemActivate->iSubItem为鼠标双击位置的列号,此语句的作用是根据行列号用m_strNewValue(用户修改的新值)代替原值

/**********************获取鼠标双击位置的列字段名称,开始****************************/

//pColumn,指定信息检索 LVCOLUMN 结构的地址和获取有关列的信息。 mask 成员指定检索哪些列属性。 如果 mask 成员指定 LVCF_TEXT 值,pszText 成员必须包含接收项文本,并 cchTextMax 成员必须指定缓冲区的大小缓冲区的地址。

LVCOLUMN col

CString ziduan//存储所获取到的列字段名称

col.mask=LVCF_TEXT//设置mask成员指定LVCF_TEXT值

col.cchTextMax=100//并 cchTextMax 成员必须指定缓冲区的大小缓冲区的地址。

col.pszText =ziduan.GetBuffer(100)//pszText成员必须包含接收项文本(即为ziduan字符串)

if(m_list_tabledata.GetColumn(pNMItemActivate->iSubItem,&col))//获取鼠标双击位置所在列的表头列字段信息

{

ziduan=col.pszText

//AfxMessageBox(ziduan)//测试用

}

ziduan.ReleaseBuffer()//释放

/**********************获取鼠标双击位置的列字段名称,结束****************************/

[cpp] view plain copy

<span style="white-space:pre">         </span>//这里更新现实表中对应字段的新值,代码已经省略

[cpp] view plain copy

<span style="white-space:pre">         </span>//此处代码已经省略............//

AfxMessageBox("修改成功!")

}

}

*pResult = 0

}

4>效果如下图:

修改成功!

备注:若前面列表控件的扩展样式不设置为满行选中,则双击任意一个单元格时获取不到该单元格所在行的行号,所以如果不设置就会有问题。

               

使用Word2013制作专业报告的步骤:

1、鼠标左键双击计算机桌面Word2013程序图标,将其打开运行。在打开的Word2013程序窗口,点击“打开其他文档”选项,然后选择文档所在的位置将其打开。如图所示

2、在打开的Word文档窗口,鼠标光标点击编辑窗口任意位置,按下Ctrl+A键将文字内容全选,然后再点击开始选项卡“段落”分区功能区域的【功能按钮】。如图所示

3、在d出的“段落”对话窗口中,在间距中将段前和段后均设置为【0.5】行,行距设置为【1.5倍行距】,然后再点击确定按钮。如图所示

4、接着再设置【首行缩进】,同样是在“段落对话窗口中”,在缩进中点击特殊格式下的小三角下拉箭头,将特殊格式选【首行缩进】,再点击“确定”按钮。如图所示

5、最后在来设置【字符间距】,点击开始选项卡“字体”分区功能区域的【功能按钮】,在d出的“字体”对话窗口,将选项卡切换到“高级”选项卡栏,将字体间距下的“缩放”设置为【100%】、“间距”设置为【加宽】、“磅值”设置为【0.5磅】,然后再点击“确定”按钮。如图所示

在菜单中调用REPORT程序(不传参数 传参数可用下面的程序段)Run_Product(REPORTS 报表程序名 REP SYNCHRONOUS RUNTIME FILESYSTEM NULL)在FORM中调用REPORT程序(可传参数)DECLARE pl_id ParamListBEGIN pl_id := Get_Parameter_List( 参数列表名 )IF NOT Id_Null(pl_id) THEN Destroy_Parameter_List( pl_id )END IFpl_id := Create_Parameter_List( 参数列表名 )Add_Parameter(pl_id REPORT参数名 DATA_PARAMETER :FORM项名 )Add_Parameter(pl_id REPORT参数名 TEXT_PARAMETER :FORM项名 )… … Run_Product(REPORTS 报表程序名 REP SYNCHRONOUS RUNTIME FILESYSTEM pl_id NULL)ENDlishixinzhi/Article/program/Oracle/201311/17041


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11530350.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存