Grid控件合并

fangchunliang 2010-10-24 12:55:22
1 A 100BL ...............
1)
2)
.
.
2 M 200BL ..............
3 K 500BL .................
4 G 1000BL ............
5 B 1500BL ..............

如何在Grid控件根据其子项有合并其主项呀?这样就不用重复相同部分的主项了.各位高手,请问如何有VB如何写代码?
是否先查询出有多少条记录是子项,再去填充合并是相同部分呢,可否详细告知,先谢谢了!
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqq_chen 2010-10-24
  • 打赏
  • 举报
回复
所有的表中有一个相同的字段名,比例:单据修改日期
然后所有查询结果显示之间判定单据修改日期的位置,再后显示时主表只做一次,位置到单据修改日期,子表每条记录都显示...

思路大概是这样,再说就说不明白了.

If Not AdoEoF(sc) Then Exit Sub
' SayStatus "正在处理相关数据,请稍候……", 5
scnum = 0
For i = 0 To sc.Fields.count - 1

If sc.Fields(i).Name = "FZdDate" Then
scnum = i + 1
Exit For
End If

Next i


sc.MoveLast
sc.MoveFirst
menu.Pb.Max = sc.RecordCount + 1
menu.Pb.Value = 0
menu.Pb.Min = 0
With vadisp
.MaxRows = 0
.MaxRows = sc.RecordCount + 1
j = 1
k = 2
str1 = sc.Fields(0)
Do While Not sc.EOF
DoEvents
If FQuitSear Then
MsgBox "中断查询结果显示,现在所显示的只是部分查询结果!", vbExclamation + vbOKOnly, "龙奕提示"
Exit Sub
End If
'Debug.Print sc.Fields(0) & " " & str1 & " " & Str(j)
If str1 = sc.Fields(0) And k = 1 Then
For i = scnum To sc.Fields.count - 1
.Col = i + 1
.Row = j
.Text = sc.Fields(i) & ""
.Lock = True

.ForeColor = FontColor
d.Open "select * from TPrintSetEntry where F_num=" & F_Num & " and FName" & Lang & "='" & sc.Fields(i).Name & "'", Conn

.ColWidth(.Col) = d.Fields("FWidth") * 567
If d.Fields("FType") = "int" Then
.CellType = CellTypeInteger
ElseIf d.Fields("FType") = "dec" Then
.CellType = CellTypeFloat
.TypeFloatDecimalPlaces = d.Fields("FDecWidth")
ElseIf d.Fields("FType") = "bool" Then
.CellType = CellTypeCheckBox
.TypeHAlign = TypeHAlignCenter
If sc.Fields(i) Then
.Value = True
Else
.Value = False
End If
End If
d.Close
Next i
'k = 2
Else
For i = 0 To sc.Fields.count - 1
.Col = i + 1
.Row = j
'.ForeColor = RGB(255, 0, 0)
.Text = sc.Fields(i) & ""
.ForeColor = FontColor
d.Open "select * from TPrintSetEntry where F_num=" & F_Num & " and FName" & Lang & "='" & sc.Fields(i).Name & "'", Conn

.ColWidth(.Col) = d.Fields("FWidth") * 567
If d.Fields("FType") = "int" Then
.CellType = CellTypeInteger
ElseIf d.Fields("FType") = "dec" Then
.CellType = CellTypeFloat
.TypeFloatDecimalPlaces = d.Fields("FDecWidth")
ElseIf d.Fields("FType") = "bool" Then
.CellType = CellTypeCheckBox
.TypeHAlign = TypeHAlignCenter
If Left(sc.Fields(i), 1) = "已" Or sc.Fields(i) Then
.Value = True
Else
.Value = False
End If
End If
d.Close
Next i
k = 1
End If
'End If
str1 = sc.Fields(0)
sc.MoveNext
j = j + 1
menu.Pb.Value = j '''
Loop
.Col = 1
.Row = j
.Text = "合计"
' Debug.Print F_Num
For i = 0 To sc.Fields.count - 1
.Col = i + 1
d.Open "select * from TPrintSetEntry where F_num=" & F_Num & " and FName" & Lang & "='" & sc.Fields(i).Name & "'", Conn

If d.Fields("FTj") Then
.SetRefStyle RefStyleDefault
If d.Fields("FType") = "int" Then
.CellType = CellTypeInteger
ElseIf d.Fields("FType") = "dec" Then
.CellType = CellTypeFloat
.TypeFloatDecimalPlaces = d.Fields("FDecWidth")
End If
.Formula = "sum(" & ColToAbc(i + 1) & "1:" & ColToAbc(i + 1) & Trim(Str(.MaxRows - 1)) & ")" '"Sum(R[-1]C:R[-" & Trim(Str(j)) & "]C)"
End If
d.Close
Next i
If F_Num = 7253 Then
.Col = 8
.CellType = CellTypeFloat
.TypeFloatDecimalPlaces = 4
.SetRefStyle RefStyleR1C1
.Formula = "RC[9]/RC[8]"
End If
End With


sc.MoveFirst
首先说下控件功能如下: 1,可以设置固定行 和固定列.固定行和列是任何时候不许编辑的,但是可以代码修改设置 2,可以设置背景色(包括固定好和表格内部背景色,非固定单元格背景只对新建单元格有效) 3,可以合并单元格(横向竖向均可合并,支持横竖同时合并单元格效果) 4,边框线宽度可以设置(外边框线,内边框线可以分开设置) 5,边框颜色可以设置(内外线色可以设置不同颜色) 6,可以设置编辑状态(此属性是新建单元格属性,只对新建单元格生效) 7,只读属性(针对所有非固定单元格) 8,随时可以设置行数和列数(减少的话,末尾待减少储存数据会丢失) 9,增加是否立即刷新参数,可以在大量输入录入时快速执行 下面是单元格单独属性设置介绍 1,可以储存字符串 2,可以储存整数 3,可以储存文本(默认单元格内显示[DEMO],可以编辑实际内容或读取实际内容) 4,可以储存字符串列表(可以设置读取选择字符串) 5,可以储存日期(格式2018-07-06) 6,可以储存时间(格式10:26:32,设置智能设置到时分,直接赋值可以包含更精确单位) 7,可以设置日期(格式包含以上格式,设置同上.直接赋值可以保存更精确单位) 8,可以储存颜色(显示以保存颜色显示) 9,单元格字体,所有字体设置均支持(包含颜色,字体,换行,对齐等属性) 10,背景可以单独设置 10,可以单独设置是否允许编辑 详细使用请看使用说明

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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