Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:窗口中临时表里增加行,超500就报错了,请批正代码

1楼
zsxx999ja 发表于:2024/7/3 10:51:00
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    
    If Sheet.Rows.Count = 1 Then
        MessageBox.Show("模板中无导入数据,请填充")
        'Return
    End If
    
    '3检查列名和顺序是否正常
    Dim errCol As String = "" '记录异常列名
    Dim dcNames As New List(Of String)  '定义要上成绩的列名
    dcNames.Add("语文")
    dcNames.Add("数学")
    dcNames.Add("英语")
    dcNames.Add("科学")
    dcNames.Add("政治")
    dcNames.Add("历史")
    dcNames.Add("地理")
    dcNames.Add("生物")
    dcNames.Add("物理")
    dcNames.Add("化学")
    dcNames.Add("音乐")
    dcNames.Add("体育")
    dcNames.Add("美术")
       '4检查通过,开始导入数据到预览表格
    Dim dtb As New DataTableBuilder("daoru")
    dtb.AddDef("检测号2024上", Gettype(String), 16)
    dtb.AddDef("语文", Gettype(Single))
    dtb.AddDef("学生姓名", Gettype(String), 16)
    dtb.AddDef("数学", Gettype(Single))
    dtb.AddDef("英语", Gettype(Single))
    dtb.AddDef("科学", Gettype(Single))
    dtb.AddDef("政治", Gettype(Single))
    dtb.AddDef("历史", Gettype(Single))
    dtb.AddDef("地理", Gettype(Single))
    dtb.AddDef("生物", Gettype(Single))
    dtb.AddDef("物理", Gettype(Single))
    dtb.AddDef("化学", Gettype(Single))
    dtb.AddDef("音乐", Gettype(Single))
    dtb.AddDef("体育", Gettype(Single))
    dtb.AddDef("美术", Gettype(Single))
    Forms("成绩统计窗体202407").Open
    
    Dim t As Table = Tables( "成绩统计窗体202407_Table1")
    t.DataSource = dtb.BuildDataSource
    
    '5 判断excel表是否有关键字段数据,
    Dim zd As New Dictionary(Of String,Integer )
    '定义一个集合来接收能导入的数据库
    zd.Clear
    Dim sfdr As Boolean = False   '定义一个逻辑变量为是否导入,来接收是否有标识列
    For i As Integer = 0 To Sheet.Cols.Count - 1
        If Sheet(0, i).Value ="检测号2024上" Or   Sheet(0, i).Value ="学生姓名" Then   '查看sheet 表中有无关键字段检测号和学生姓名
            errCol = "找到了" & Sheet(0, i).Value & "请继续"
            sfdr = True    '判断此表包含要导入的列
            'Exit For
        End If
        zd.Add(Sheet(0, i).Value ,i)
    Next
    '测试字典的内容
    'For Each k As String In zd.Keys '显示所有键及其对应的值 
        'output.Show(zd("检测号2024上"))
    'Next
    
    If sfdr = True   Then
        
        For n As Integer = 1 To Sheet.Rows.Count - 1
            Dim h As Integer
            Dim dr As DataRow = Tables("成绩统计窗体202407_table1").DataTable.find("检测号2024上="& Sheet(n,zd("检测号2024上")).Value)
            If dr IsNot Nothing  Then
                
                For h = 0 To zd.Count -1
                    If t.DataTable.DataCols.Contains(zd.keys(h))  And zd.keys(h)<>"检测号2024上" Then

                        'dr(zd.keys(h)) = sheet(n,zd.Values(h))  '这里的字典装载的是要导入成绩的学科
                    End If
                Next
                
            Else
                Dim nr As Row = t.AddNew
                If t.DataTable.DataCols.Contains(zd.keys(h))  And zd.keys(h)<>"检测号2024上"  Then
                    'dr(zd.keys(h)) = sheet(n,zd.Values(h))  '这里的字典装载的是要导入成绩的学科
                End If
            End If
        Next    
    End If     
End If

2楼
有点蓝 发表于:2024/7/3 11:07:00
报什么错误?

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错
3楼
zsxx999ja 发表于:2024/7/3 11:16:00
 改正确了,能运行到最后,但这里赋值有问题,我没有想明白,请批正
dr(zd.keys(h)) = sheet(n,zd.Values(h))  '这里的字典装载的是要导入成绩的学科
4楼
有点蓝 发表于:2024/7/3 11:25:00
赋值有什么问题?

试试
                For each k as string in zd.keys
                    If t.DataTable.DataCols.Contains(k)  Andalso k<>"检测号2024上" Then
dr(k) = sheet(n,zd(k))  '这里的字典装载的是要导入成绩的学科
                    End If
                Next
共4 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03027 s, 2 queries.