以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLInsertFile 的用法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144366)

--  作者:nxhylczh
--  发布时间:2019/12/17 23:18:00
--  SQLInsertFile 的用法
sql="s e l e c t * from {TU_P06} where [_Identify] is null"
Dim WebP06 As DataTable =Functions.Execute("ExecuteReader","WebMdb",sql,True)   ‘返回一个可以修改的表
Dim Filter As String ="账套编码=\'" & vars("mdbid") & "\' and 年=" & dr("期间_年") & " And 月=" & dr("期间_月") & " and 凭证编号=" & dr("凭证_号")
Dim P06Drs As  List (Of DataRow) = P06DataTable.Select( Filter )   \'在本地P01表中查找当前要上传的凭证
        webP06.SQLDe leteFor(Filter)   \' 多行数据,无法与本地确定唯一关系 ,暂时先删除,以后想到好的办法了  按新办法解决
        For Each p06dr As DataRow In P06Drs
            Dim WebDrP06 As DataRow =WebP06.AddNew
            For Each cr As DataCol In P06DataTable.DataCols
                Select Case cr.Name
                    Case "Ver"
                        WebDrP06("Ver")=ud
                    Case Else
                        WebDrP06(cr.Name)= P06Dr(cr.Name)
                End Select
            Next
            WebDrP06("Creator")= _UserFullName
            WebDrP06("CreateTime")=ud
            WebdrP06.Save                                                          ’先保存 再在当前行插入保存文件 
            WebDrP06.SQLInsertFile("Image",P06Dr("FileName"))   ‘P06Dr("FileName") 是一个实际存在的Zip压缩文件 
            WebdrP06.Save           
        Next
标红的地方就报错   
第一次报错
不能将值 NULL 插入列 \'Image\',表 \'WebAcc.dbo.TU_P06\';列不允许有 Null 值。INSERT 失败。
第二次报错
新增行必须先保存,才能提取或设置后台数据!
第三次报错
不能将值 NULL 插入列 \'Image\',表 \'WebAcc.dbo.TU_P06\';列不允许有 Null 值。INSERT 失败。
是代码运行一次  连续弹出三次错误



--  作者:nxhylczh
--  发布时间:2019/12/17 23:19:00
--  
另问  如果是多行数据,如何确保服务器与本地数据和一致性呢?
--  作者:有点蓝
--  发布时间:2019/12/18 8:52:00
--  
到后台数据库把列 \'Image\'设置为可以为空。另外不是特别必要建议不要使用关键字做列名,可能会出现一些不必要的麻烦。

其次二进制列添加数据只能在主表里使用,不能在临时表里使用。
SQLcommand返回的表有个特殊的地方就是保存了的行就无法再次编辑保存,也就是只能保存一次。