以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  导入数据问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=190856)

--  作者:15666282205
--  发布时间:2024/3/8 8:41:00
--  导入数据问题
老师,狐表里的“生产计划表”,设计了新增按钮,序号自动增加,只增加一行。现在想从Excel导入,新增行数不固定,还得实现序号自动增加,我看了帮助,写了下面的代码,麻烦您给完善一下。
这是新增一行的代码:
DataTables("生产计划表").AddNew()
Tables("生产计划表").AutoSizeCols()
下面是导入按钮的代码:
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "xls文件|*.xlsx" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim ip As New Importer
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "生产计划表" \'指定要导入的表
    ip.NewTableName ="生产计划" \'导入后的表名
    ip.Format = "Excel" \'指定导入格式
    ip.Import()
End If
另外,想实现选择文件的时候xls和xlsx都出现在选择的窗口里。

--  作者:有点蓝
--  发布时间:2024/3/8 9:10:00
--  
是要导入一个新表?还是要把execl里的数据合并到现有的表里?
--  作者:15666282205
--  发布时间:2024/3/8 9:13:00
--  
在现有的表增加新的行,也就是把execl里的数据合并到现有的表里
--  作者:有点蓝
--  发布时间:2024/3/8 9:20:00
--  
合并要使用Merger :http://www.foxtable.com/webhelp/topics/0685.htm

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "xls文件|*.xlsx;*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
dim xh as integer = DataTables("生产计划表").compute("max(序号)")
dim id as integer = DataTables("生产计划表").compute("max(_identify)")
    Dim ip As New Merger 
    ip.SourcePath = dlg.FileName \'指定数据文件
    ip.SourceTableName = "生产计划表" \'execl文件里的sheet名称
    ip.NewTableName ="生产计划表" \'导入后的表名
if dlg.FileName.endswith(".xls")
    ip.Format = "Excel" \'指定导入格式
else
    ip.Format = "Excel2007" \'指定导入格式
end if
    ip.Merge()
for each dr as datarow in DataTables("生产计划表").select("_identify>" & id,"_identify")
xh = xh + 1
dr("序号") = xh
next
End If

--  作者:15666282205
--  发布时间:2024/3/8 9:41:00
--  
老师,提示以下错误:
编译错误:newtablename is not a member of "merger"
错误代码:ip.NewTableName ="生产计划表" \'导入后的表名

--  作者:有点蓝
--  发布时间:2024/3/8 10:00:00
--  
Merger 的用法错误,根据帮助自己改一下
--  作者:15666282205
--  发布时间:2024/3/8 15:06:00
--  
老师,现在能导入,出现一个问题:序号自动增加,是在当前显示序号的基础上增加,而不是根据数据库后台的最高序号上增加,麻烦您指导一下
--  作者:有点蓝
--  发布时间:2024/3/8 15:17:00
--  
dim xh as integer = DataTables("生产计划表").sqlcompute("max(序号)")