mshflexgrid的bug????

remanwang 2002-06-07 12:42:29
我在使用mshflexgrid过程中发现一个问题,不知是否是一个bug?
我使用ado建立了一个层次结构的记录集,即:command1有子命令commnd2,command2有子命令command3,command1有一个日期的字段作为筛选条件。
当我用mshflexgrid显示这个记录集时,筛选的条件(日期)可以由用户任意指定。
如果选定的条件使记录集为空后,再选定其他条件后,显示的记录集第一条记录的band(0)看不到??????
...全文
52 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
remanwang 2002-06-07
  • 打赏
  • 举报
回复
代码好长,我怕大家都要看晕了.

Option Explicit
Dim rs As Recordset
Private Sub cmdExit_Click()
Unload Me
End Sub

Private Sub cmdQuery_Click()
Call SetGrid
End Sub

Private Sub Form_Load()
Dim i As Integer
Dim str As String

For i = 0 To 10
cboYear.AddItem i + 2000
cboYear.ItemData(cboYear.NewIndex) = i + 2000
Next
cboMonth.AddItem " "
cboMonth.ItemData(cboMonth.NewIndex) = 0
For i = 1 To 12
cboMonth.AddItem i
cboMonth.ItemData(cboMonth.NewIndex) = i
Next
cboDay.AddItem " "
cboDay.ItemData(cboDay.NewIndex) = 0
For i = 1 To 31
cboDay.AddItem i
cboDay.ItemData(cboDay.NewIndex) = i
Next
i = Year(Now) - 2000
cboYear.ListIndex = i
cboMonth.ListIndex = Month(Now)
cboDay.ListIndex = 0
Call SetGrid
End Sub

Private Sub Form_Resize()
On Error Resume Next

Shape1.Width = Me.ScaleWidth - 40
Shape1.Height = Me.ScaleHeight - 1500
cmdExit.Left = (Me.ScaleWidth - cmdExit.Width) / 2
cmdExit.Top = Me.ScaleHeight - 600
grd.Width = Shape1.Width - 200
grd.Height = Shape1.Top + Shape1.Height - 100 - grd.Top
lblTitle.Left = (Me.ScaleWidth - lblTitle.Width) / 2
Shape2.Left = grd.Left
Shape2.Top = grd.Top
Shape2.Height = grd.Height
Shape2.Width = grd.Width
End Sub

Private Sub SetGrid()
Dim str As String
Dim i As Integer
Dim dtemp As Date
Dim rst As ADODB.Recordset

str = "SHAPE {SELECT OrderDate,OrderId, CustName, InDate FROM Orders Where OrderType = 0"
If cboMonth.ListIndex = 0 Then
cboDay.ListIndex = 0
str = str & " and orderdate between #" & DateSerial(cboYear.ItemData(cboYear.ListIndex), 1, 1) & "# and #" & DateSerial(cboYear.ItemData(cboYear.ListIndex), 12, 31) & "#"
Else
If cboDay.ListIndex = 0 Then
dtemp = DateSerial(cboYear.ItemData(cboYear.ListIndex), cboMonth.ItemData(cboMonth.ListIndex) + 1, 1) - 1
str = str & " and orderdate between #" & DateSerial(cboYear.ItemData(cboYear.ListIndex), cboMonth.ItemData(cboMonth.ListIndex), 1) & "# and #" & dtemp & "#"
Else
str = str & " and orderdate=#" & DateSerial(cboYear.ItemData(cboYear.ListIndex), cboMonth.ItemData(cboMonth.ListIndex), cboDay.ItemData(cboDay.ListIndex)) & "#"
End If
End If

str = str & " ORDER BY OrderDate desc} AS Command1 APPEND (( SHAPE {SELECT OrderId, ProductName, ProductType, PkgType, `Count`, Price, subtotal, ItemId FROM OrderDetailWithProduct} AS Command2 APPEND ({SELECT HKdate, JinE, OrderItemID FROM hkmx} AS Command3 RELATE 'ItemId' TO 'OrderItemID') AS Command3) AS Command2 RELATE 'OrderId' TO 'OrderId') AS Command2 "
Set rs = New ADODB.Recordset
rs.Open str, db, 1, 2
If rs.EOF And rs.BOF Then
grd.Clear
grd.Visible = False
Else
With grd
Set .DataSource = rs
.ColHeader(2) = flexColHeaderOn
.BandExpandable(1) = False
.BandExpandable(0) = False
.FormatString = " |^出库日期|<出库单号|<客户名称|^收款日期"
.ColWidth(0, 0) = 300
.ColWidth(1, 0) = 1000
.ColWidth(2, 0) = 1200
.ColWidth(3, 0) = 2500
.ColWidth(4, 0) = 1000

.ColWidth(0, 1) = 0
.ColWidth(1, 1) = 1500
.ColWidth(2, 1) = 1000
.ColWidth(3, 1) = 1000
.ColWidth(4, 1) = 1000
.ColWidth(5, 1) = 1000
.ColWidth(6, 1) = 1200
.ColWidth(7, 1) = 0
.ColHeaderCaption(1, 1) = "产品名称"
.ColHeaderCaption(1, 2) = "规格"
.ColHeaderCaption(1, 3) = "型号"
.ColHeaderCaption(1, 4) = "数量"
.ColHeaderCaption(1, 5) = "单价"
.ColHeaderCaption(1, 6) = "小计"

.ColAlignmentBand(2, 0) = 4
.ColWidth(0, 2) = 1000
.ColWidth(1, 2) = 1000
.ColWidth(2, 2) = 0
.ColHeaderCaption(2, 0) = "回款日期"
.ColHeaderCaption(2, 1) = "回款金额"
.Visible = True
End With
End If
rs.Close
End Sub


no_com 2002-06-07
  • 打赏
  • 举报
回复
你吧代码贴出来让大家看看,共同分析解决
VB6写的一款笔记软件的源码,里面包含有很多窗体控件的使用技巧,比如MSHFlexgrid表格、TreeView的动态加载、Ado的增删改查等。 本软件提供对日常生活、工作中的学习笔记、图文并茂存储以及自由抓取网页中好的文章进行管理存储。知识点:   1、MSHFlexgrid 表格的灵活运用,其中的表格列项显示、隐藏功能很有参考意义,另外还有列项位置的动态加载。   2、异性窗体,圆形窗体使用。   3、自制专业界面,虽然只有一个雏形,不过已经提供了一个简单的思路,菜单、选项卡、Treeview的美化。   4、TreeView的动态加载和节点图标的加载,其中F2快捷键添加删除节点、节点排序提供了一个简单的思路。   5、vbs与软件的交互可以提供动态采集网页内容到程序中储存。   6、Richtextbox的日常功能应用,rtf文档的处理也有用到。   7、Ado的增删改查应用。   8、Api函数的运用。      程序虽小,不过在做一个日常数据库应用软件所需要的功能、控件基本上都有涉及,如果初学者多加琢磨,相信提高会很快的,因为我就是从0开始学的,每学会一项知识点、一个控件,我就把它应用在这个程序上面,所以相信初学者也可以从中学到相关知识,另外整个程序提供了一个思路,写代码需要注重知识、经验的总结积累,写软件就是一项积累的过程,很多时候需要不断的积累这些宝贵的经验。这份代码隐藏了很多的bug,希望拿到这份代码的同学可以多去修改,如果能将改进的成果继续发布在源码爱好者,我将感激不荆我设计这一软件的理念和大家共勉:我记录的一切,对你来说也许毫无新意,但对我来说,就是不断觉悟的自我……   这份源代码在我电脑可以正常使用,我也没再其它vb环境测试了,第一次打开会提示需要选择一次数据库路径。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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