以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  清空订单明细表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110121)

--  作者:ming8604
--  发布时间:2017/11/27 10:33:00
--  清空订单明细表

专家,你好。

 

现在有一个问题就是,清空所有订单的明细表,并想重新导入一张excel表。

 

 

制作了一个按钮click事件。

 

 

 

DataTables("采购订单执行").datarows.clear
DataTables("采购订单执行").Save

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.Filter= "Excel文件|*.xls;*.xlsx"


If dlg.ShowDialog = DialogResult.OK Then
    For Each file As String In dlg.FileNames
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)

        Dim i As Integer = 5
        Do While (sheet(i,1).Text)<>""
            Dim dr As Row = Tables("采购订单执行").AddNew
            dr("采购组织") = sheet(i,0).Text
            dr("订单编号") = sheet(i,1).Text
            dr("供应商") = sheet(i,3).Text
            dr("采购部门") = sheet(i,5).Text
            dr("订单日期") = sheet(i,6).Text
            dr("行号") = sheet(i,7).Text
            dr("物料编码") = sheet(i,10).Text
            dr("物料名称") = sheet(i,11).Text

            dr("客户") = sheet(i,35).Text
            i = i + 1
        Loop
       
    Next
End If

 

 

发现执行语句读入满,保存更慢。请问有什么其他方法更快读入,保存到该数据库?


--  作者:有点甜
--  发布时间:2017/11/27 10:55:00
--  

1、读入速度

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
dlg.Filter= "Excel文件|*.xls;*.xlsx"


If dlg.ShowDialog = DialogResult.OK Then

SystemReady = false

Tables("采购订单执行").StopRedraw
    For Each file As String In dlg.FileNames
        Dim Book As New XLS.Book(file)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)

        Dim i As Integer = 5
        Do While (sheet(i,1).Text)<>""
            Dim dr As Row = Tables("采购订单执行").AddNew
            dr("采购组织") = sheet(i,0).Text
            dr("订单编号") = sheet(i,1).Text
            dr("供应商") = sheet(i,3).Text
            dr("采购部门") = sheet(i,5).Text
            dr("订单日期") = sheet(i,6).Text
            dr("行号") = sheet(i,7).Text
            dr("物料编码") = sheet(i,10).Text
            dr("物料名称") = sheet(i,11).Text

            dr("客户") = sheet(i,35).Text
            i = i + 1
        Loop
    Next

Tables("采购订单执行").ResumeRedraw

SystemReady = True
End If

 

2、保存速度

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98689&skin=0

 


--  作者:ming8604
--  发布时间:2017/11/27 17:08:00
--  

谢谢,专家。

 

测试更新了"采购组织","主数量","物料编码"这几个字段。

 

 

Dim strlist As  List(Of String)  = Functions.Execute("sql提取函数",Tables("采购订单执行"),"采购组织","物料编码","主数量",1)

If strlist.count = 0 Then Return  Nothing

Dim sql As String
Dim cmd As New SQLCommand
cmd.C
Dim Count As Integer = 0

For Each s As String In strlist
    cmd.CommandText = s
    Count += cmd.ExecuteNonQuery()
    Output.show(s)
Next

Tables(""采购订单执行"").DataTable.BaseTable.AcceptChanges()   \'提交修改
Tables(""采购订单执行"").DataTable.Load             \'刷新表
Output.show("影响了" & Count & "行")、

 

 

 

错误代码:cmd.c

 

 

在链接里,下载后,也打不开

数据保存时的Sql语句合成函数.Table

 

 

 



--  作者:有点甜
--  发布时间:2017/11/27 17:36:00
--  

你用的是内部数据源还是access还是sqlserver?

 

你用这个例子测试行不行?

 

下载信息  [文件大小:1.3 MB  下载次数:121]
图片点击可在新窗口打开查看点击浏览该文件:数据保存时的sql语句合成函数 .zip


--  作者:ming8604
--  发布时间:2017/11/29 9:29:00
--  

sqlserver。

我就是用那个例子,下载之后,   数据保存时的Sql语句合成函数.Table    这个文件打不开。

 

 Functions.Execute

这个自定义函数,不会。例子看得不是特别懂。


--  作者:有点甜
--  发布时间:2017/11/29 9:59:00
--  
以下是引用ming8604在2017/11/29 9:29:00的发言:

sqlserver。

我就是用那个例子,下载之后,   数据保存时的Sql语句合成函数.Table    这个文件打不开。

 

 

下载一个试用版,或者是安装一个商业版,就可以打开.table的项目。


--  作者:ming8604
--  发布时间:2017/11/29 10:41:00
--  

我这个是开发版啊。要卸载这个才能安装呢?

 

能否讲解一下,Functions.Execute  这个函数?


--  作者:有点甜
--  发布时间:2017/11/29 10:45:00
--  

1、去下载开发版的地方,下载一个商业版,安装后使用。

 

2、内部函数,就是动态合成sql语句而已。