m0_37597289 2023-10-18 20:55 采纳率: 25%
浏览 6
已结题

vb6 把表格某几条记录变成字段名,并且合并几条记录为一条记录

如下表:

img

想转换成如下表:

img

系统里面只安装了VB6+OFFICE2000,没有安装SQL SERVER,所以SQL SERVER里面函数都不能用,比如STUFF等,数据都是从EXCEL表里来的,最后回到EXCEL里面去,就是把表一数据日期时间分解成日期和时间,如何把日期当成字段名,把后面时间当成记录,同一个人同一天数据在一个格子里面,中间用符号隔开并且分成几行

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-19 12:44
    关注

    【以下回答由 GPT 生成】

    首先,你可以使用VB6中的数据访问组件(ADODB)来连接和操作Excel表格。以下是实现该功能的步骤:

    1. 导入数据:使用ADO连接到Excel表格,并将表格数据导入到VB6中的数据集(Recordset)中。
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    
    ' 创建连接对象
    Set conn = New ADODB.Connection
    
    ' 打开Excel连接
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\To\Your\File.xls;Extended Properties=""Excel 8.0;HDR=Yes"""
    conn.Open
    
    ' 创建Recordset对象并执行查询
    Set rs = New ADODB.Recordset
    rs.Open "SELECT * FROM [Sheet1$]", conn
    
    ' 将数据加载到数组中
    Dim data() As Variant
    data = rs.GetRows
    
    ' 关闭连接和记录集
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
    
    1. 处理数据:根据数据的唯一值进行分组,并将每个分组下的记录合并为一个字符串。你可以使用字典(Dictionary)对象来保存每个唯一值对应的字符串。
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    Dim i As Integer
    For i = 0 To UBound(data, 2)
        Dim key As String
        Dim value As String
    
        ' 获取唯一值作为字典的键
        key = data(2, i)  ' 假设日期时间在数组中的第三行
    
        ' 获取该唯一值对应的字符串
        If dict.exists(key) Then
            value = dict(key)
        Else
            value = ""
        End If
    
        ' 将当前记录添加到字符串中,使用符号进行分隔
        value = value & data(0, i) & ";"  ' 假设编号在数组中的第一行
    
        ' 更新字典中的值
        dict(key) = value
    Next i
    
    1. 创建新的Excel表格:使用ADO创建一个新的Excel表格,并将处理后的数据写入到新表格中。
    ' 创建连接对象
    Set conn = New ADODB.Connection
    
    ' 创建Excel连接
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\To\Your\NewFile.xls;Extended Properties=""Excel 8.0;HDR=Yes"""
    conn.Open
    
    ' 创建新的工作表
    conn.Execute "CREATE TABLE [Sheet1] ([编号] INT, [姓名] VARCHAR, [2022-01-01] VARCHAR, [09:00:00] VARCHAR, [09:15:00] VARCHAR, [10:30:00] VARCHAR)"
    
    ' 将处理后的数据写入Excel
    Dim keys() As Variant
    keys = dict.keys
    
    For i = 0 To dict.Count - 1
        Dim values() As String
        values = Split(dict(keys(i)), ";")
    
        ' 插入数据到Excel表格中
        Dim sql As String
        sql = "INSERT INTO [Sheet1$] ([编号], [姓名], [2022-01-01], [09:00:00], [09:15:00], [10:30:00]) VALUES "
        sql = sql & "(" & values(0) & ", '" & values(1) & "', '" & values(2) & "', '" & values(3) & "', '" & values(4) & "', '" & values(5) & "')"
    
        conn.Execute sql
    Next i
    
    ' 关闭连接
    conn.Close
    Set conn = Nothing
    

    以上是一个大致的解决方案,根据你的实际情况可能需要进行一些修改。请注意,由于VB6和Office 2000已经过时,因此某些功能可能无法在该环境下实现。在实际使用中,可能需要考虑将数据导出到其他格式进行处理,或者升级到更现代的开发工具和技术。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大