我这段代码为啥查询出来以后只显示最后一条的最后一个数据呀?

已锁定

手机用户20241018163500

西门子1847工业学习平台

  • 帖子

    20
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2024-10-18

白金 白金 如何晋级?

我这段代码为啥查询出来以后只显示最后一条的最后一个数据呀?

1327

5

2025-02-18 16:49:16

' 主函数,用于连接数据库、检索数据并显示在MSHFlexGrid中

Sub DisplayDataInFlexGrid()

    ' 局部变量声明

    Dim conn, rs, sql, grid, i, j, field

    

    ' 创建数据库连接对象

    Set conn = CreateObject("ADODB.Connection")

    

    ' 打开数据库连接(使用DSN,请替换为您的DSN名称)

    conn.Open "DSN=work;"

    

    ' 获取MSHFlexGrid控件的引用(假设控件名称为“MyFlexGrid”)

    Set grid = ScreenItems("FlexGrid")

    

    ' 清除MSHFlexGrid中的现有数据

    grid.Clear

    

    ' 设置MSHFlexGrid的初始行列数(可以根据需要调整)

    grid.Rows = 1

    grid.Cols = 1 ' 初始列数设为1,之后会根据实际字段数动态调整

    

    ' 构建SQL查询语句(请替换为您的表名)

    sql = "SELECT * FROM Table_1"

    

    ' 执行SQL查询并获取记录集

    Set rs = CreateObject("ADODB.Recordset")

    rs.Open sql, conn

    

    ' 检查记录集是否为空

    If Not rs.EOF Then

        i = 0 ' 行索引初始化

        

        ' 遍历记录集

        Do Until rs.EOF

            j = 0 ' 列索引初始化

            

            ' 遍历记录集中的每个字段

            For Each field In rs.Fields

                ' 确保MSHFlexGrid有足够的列来显示所有字段

                If grid.Cols < j + 1 Then grid.Cols = j + 1

                

                ' 将字段值填充到MSHFlexGrid中

                grid.Text(i, j) = field.Value

                j = j + 1

            Next

            

            ' 移动到下一条记录,并增加行索引

            rs.MoveNext

            i = i + 1

            grid.Rows = i + 1 ' 更新MSHFlexGrid的行数

        Loop

    Else

        ' 如果记录集为空,在MSHFlexGrid中显示“无数据”

        grid.TextMatrix(0, 0) = "无数据"

    End If

    

    ' 关闭记录集和数据库连接

    rs.Close

    Set rs = Nothing

    conn.Close

    Set conn = Nothing

End Sub


我这段代码为啥查询出来以后只显示最后一条的最后一个数据呀? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32644条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。