以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 列内容XXX (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=180072) |
-- 作者:huhu -- 发布时间:2022/9/26 20:02:00 -- 列内容XXX 查询,可能查出登录者邮箱和技术支持邮箱不同的数据,也能包含登录者邮箱和技术支持邮箱相同的数据。 希望如果登录者邮箱和技术支持邮箱不同的行,那么查询结果客户列内容希望打XXX,但不是后台这行数据改为XXX. 导出的表也是客户列内容也是XXX。 登录者邮箱和技术支持邮箱相同的行,客户列内容不做修改。正常显示。不同的才需要打XXX 查询代码: DataTables("临时版本跟踪表").LoadFilter = "" DataTables("临时版本跟踪表").Load Dim kh As WinForm.ComboBox = e.Form.Controls("客户") Dim bdjx As WinForm.ComboBox = e.Form.Controls("博达机型") Dim xqms As WinForm.TextBox = e.Form.Controls("需求描述") Dim qssj As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker3") Dim jzsj As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker4") If qssj.text = "" AndAlso jzsj.text = "" Then If xqms.text = "请输入字符串模糊查询" Then DataTables("临时版本跟踪表").LoadFilter = "客户 like \'%" & kh.text & "%\' and 博达机型 like \'%" & bdjx.text & "%\'" DataTables("临时版本跟踪表").Load Else DataTables("临时版本跟踪表").LoadFilter = "客户 like \'%" & kh.text & "%\' and 博达机型 like \'%" & bdjx.text & "%\' and [需求描述] like \'%" & xqms.text & "%\'" DataTables("临时版本跟踪表").Load End If Else If xqms.text = "请输入字符串模糊查询" Then DataTables("临时版本跟踪表").LoadFilter = "客户 like \'%" & kh.text & "%\' and 博达机型 like \'%" & bdjx.text & "%\' and 需求提交时间 > \'" & qssj.Value & "\' and 需求提交时间 < \'" & jzsj.Value.adddays(1) & "\'" DataTables("临时版本跟踪表").Load Else DataTables("临时版本跟踪表").LoadFilter = "客户 Like \'%" & kh.text & "%\' and 博达机型 like \'%" & bdjx.text & "%\' and [需求描述] like \'%" & xqms.text & "%\' and 需求提交时间 > \'" & qssj.Value & "\' and 需求提交时间 < \'" & jzsj.Value.adddays(1) & "\'" DataTables("临时版本跟踪表").Load End If End If Tables("临时版本跟踪表").Sort = "需求编号 DESC" 导出代码: Tables("临时版本跟踪表").Sort = "需求编号 DESC" Dim dt As Table = Tables("临时版本跟踪表") Dim dtt As DataTable = DataTables("临时版本跟踪表") Dim sss1 As String = Date.Now Dim sss As String = sss1.Replace(":", "-") Dim filepath As String = "C:\\临时版本跟踪表\\" & "查询导出-" & sss & ".xls" Dim nms() As String = {"临时版本编号", "需求编号", "博达机型", "客户", "需求提交时间", "预计提供时间", "开发环境", "代码message", "软件环境", "show_version", "技术支持邮箱", "研发邮箱", "客户期望交期", "log", "发布目录", "测试目录", "状态", "状态直白", "需求描述"} \'要导出的列名 Dim caps() As String = {"临时版本编号", "需求编号", "博达机型", "客户", "需求提交时间", "预计提供时间", "开发环境", "代码message", "软件环境", "show_version", "技术支持邮箱", "研发邮箱", "客户期望交期", "log", "发布目录", "测试目录", "状态", "状态直白", "需求描述"} \'对应的列标题 Dim szs() As Integer = {100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 80, 200, 300} \'对应的列宽 Dim Book As New XLS.Book \'定义一个Excel工作簿 Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表 Dim st As XLS.Style = Book.NewStyle \'日期列的显示格式 st.Format = "yyyy-MM-dd hh:mm:ss" For c As Integer = 0 To nms.length - 1 Sheet(0, c).Value = caps(c) \'指定列标题 Sheet.Cols(c).Width = szs(c) \'指定列宽 If dt.Cols(nms(c)).IsDate Then \'如果是日期列 Sheet.Cols(c).Style = st \'设置显示格式 End If Next For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For c As Integer = 0 To nms.length - 1 If Not dt.rows(r).Isnull(nms(c)) Then Sheet(r + 1, c).Value = dt.rows(r)(nms(c)) Next Next Book.Save(filepath) MessageBox.show("保存路径:" & FilePath, "导出成功", MessageBoxButtons.OK, MessageBoxIcon.Information) |
-- 作者:有点蓝 -- 发布时间:2022/9/26 20:23:00 -- 没看懂,请截图说明一下 |
-- 作者:huhu -- 发布时间:2022/9/26 20:33:00 -- 这张表有客户列,有技术支持邮箱列。 就是如果username和技术支持邮箱列不同,那么这些行的客户列内容显示XXX,相同不用管。
|
-- 作者:有点蓝 -- 发布时间:2022/9/26 20:39:00 -- 参考:http://www.foxtable.com/webhelp/topics/2262.htm |
-- 作者:huhu -- 发布时间:2022/9/26 20:53:00 -- 嗯,就是这个内容。查了好久帮忙没找到。 但导出的excel文件还是显示了真实的客户列内容,而不是XXX。这个有啥好办法处理?
|
-- 作者:有点蓝 -- 发布时间:2022/9/26 20:57:00 -- 导出的时候遍历每行,判断每行的邮箱是否等于用户,如果不等于就不要给单元格赋值 For c As Integer = 0 To nms.length - 1 If Not dt.rows(r).Isnull(nms(c)) andalso 这一行的邮箱是否等于用户 Then Sheet(r + 1, c).Value = dt.rows(r)(nms(c)) Next |
-- 作者:huhu -- 发布时间:2022/9/26 21:19:00 -- For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For c As Integer = 0 To nms.length - 1 If Not dt.rows(r).Isnull(nms(c)) AndAlso dt.Rows(r)("技术支持邮箱") = User.Name Then Sheet(r + 1, c).Value = dt.rows(r)(nms(c)) Next Next 但这样做,假如技术支持邮箱和use.name不同,所有列不给赋值了。应该是只有客户列为XXX
|
-- 作者:有点蓝 -- 发布时间:2022/9/26 21:50:00 -- 那就再判断一下列,是某个名称的列,再判断邮箱,其它列直接赋值 |
-- 作者:huhu -- 发布时间:2022/9/27 11:27:00 -- For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 If dt.cols(r).Name <> "客户" Then For c As Integer = 0 To nms.length - 1 Sheet(r + 1, c).Value = dt.rows(r)(nms(c)) Next Else If dt.Rows(r)("技术支持邮箱") <> User.name AndAlso user.Group = "录入" Then Sheet(r + 1, c).Value = dt.rows(r)(nms(c)) ---------不会写这个逻辑。 End If End If Next
|
-- 作者:有点蓝 -- 发布时间:2022/9/27 11:35:00 -- 和红色代码没有关系 If dt.Rows(r)("技术支持邮箱") = User.name AndAlso user.Group = "录入" Then
|