【问题标题】:Vb6 Grouping Values in FlexgridFlexgrid 中的 Vb6 分组值
【发布时间】:2020-02-11 18:32:12
【问题描述】:

我有一个与任何 Db 断开连接的 Flexgrid(vb6 不是 .Net),有一些这样的行:

135,00  4
218,00  4
100,00  10
6,00    4
15,00   22

我无法创建一个循环来获取我在网格上有多少不同的组(按增值税)并计算相对数量以便拥有 3 组(在本例中为 4 / 10 / 22) 4 = 359,00 10 = 100 22 = 15,00 我不想使用带有 select group by 的数据库,而是预先计算数量并在 n 文本框中进行可视化。

这是我尝试过的代码

Dim A, b, c, d 
if A = "" Then
A = xNum
  ElseIf A <> "" Then
 If A <> xNum Then
 If b = "" Then
   b = xNum
     ElseIf b <> "" Then
        If b <> xNum Then
          If c = "" Then
             c = xNum
              ElseIf c <> "" Then
                 If c <> xNum Then
                    If d = "" Then
                       d = xNum
                        ElseIf d <> "" Then [etc...]

感谢您的帮助。

【问题讨论】:

  • 您是否有尝试实现此逻辑的代码?如果可以,可以发一下吗?
  • 用您尝试过的代码更新您的帖子,然后删除您的评论。
  • 感谢@brianMstafford

标签: vb6 cycle


【解决方案1】:

我假设您使用的是 Microsoft FlexGrid 控件,其中第一列是数量,第二列是增值税。

以下代码将产生文本框中显示的结果:

Option Explicit

Private Sub cmdCalc_Click()
   On Error Resume Next

   Dim c As Collection
   Dim i As Integer
   Dim g As Group
   Dim data As String

   'calculate groups
   Set c = New Collection

   For i = 1 To MSFlexGrid1.Rows - 1
      Set g = New Group
      g.VAT = CInt(MSFlexGrid1.TextMatrix(i, 2))
      g.Qty = CDbl(MSFlexGrid1.TextMatrix(i, 1))

      Err.Clear
      c.Add g, CStr(g.VAT)
      If Err.Number > 0 Then c(CStr(g.VAT)).Qty = c(CStr(g.VAT)).Qty + g.Qty
   Next

   'and visualize the data
   For Each g In c
      data = data & g.VAT & vbTab & g.Qty & vbCrLf
   Next

   Text1.Text = data
End Sub

这段代码的基本思想是构建一组对象的集合,网格中的每一行对应一个组。随着组被添加到集合中,错误捕获被用来检测重复并增加这些情况下的数量。

这是上面代码使用的Group类:

Option Explicit

Private m_VAT As Integer
Private m_Qty As Double

Public Property Get VAT() As Integer
   VAT = m_VAT
End Property

Public Property Let VAT(ByVal Value As Integer)
   m_VAT = Value
End Property

Public Property Get Qty() As Double
   Qty = m_Qty
End Property

Public Property Let Qty(ByVal Value As Double)
   m_Qty = Value
End Property

【讨论】:

  • 非常感谢布赖恩,这绝对是完美的!你所做的正是我想要完成的,但我不知道该怎么做。我会从你的代码中汲取灵感,总能学到一些东西。我已经尝试过了,而且效果很好。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多