以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]如何批量添加带图片的商品?有思路求代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20370)

--  作者:kunge
--  发布时间:2012/6/6 16:59:00
--  [原创]如何批量添加带图片的商品?有思路求代码

    我的产品库只有图片是最重要的,我想批量添加产品图片,而不是一个单元格,一个单元格地添加,其他的产品属性在慢慢添加,怎么设计啊?有办法没有啊?还有图片名称问题,能不能不覆盖,自动改成不一样的名称?

     本身就是表格,显然导入,导出无法解决上述问题,

    我的设计思路是这样的:

    狐表自身的图片管理器,就可以直接上传大量图片,我们要做的就是把图片从新分离到下面的单元格内,

  图片名字可能一样,所以上传的时候会提示是否覆盖,在表事件里需要判断是否名称一样,如果一样,名称改为不一样的名称。(这段代码怎么写啊)

     然后做一个按钮。叫产品分离器。代码写成:

     判断当前行的图片列是否有多个图片,如果当前行的图片列有多个图片,则新增加一行,将除了第一个图片外,全部移到新增行,判断新增行是否有多个图片,如果有循环上面的,如果只有一个图片,则分离结束!

 

    思路是这样的,代码我不会写啊,求高手指点啊,狐狸爸爸,帮忙写写代码啊!

     

[此贴子已经被作者于2012-6-6 17:07:13编辑过]

--  作者:kunge
--  发布时间:2012/6/6 17:06:00
--  
我是用苹果精神设计软件的,就是要简单至极,给客户最完美的体验。只需要轻点鼠标就可以操作的软件才是好软件,只有用最少的点击次数,才能显示智能化的精华!
--  作者:狐狸爸爸
--  发布时间:2012/6/6 18:17:00
--  

这个真的不好办,要不另外做个按钮,一次选择多个文件。

 

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        Dim dr As DataRow = DataTables("表A").AddNew()
        dr("文件") = filesys.GetName(fl)
    Next
End If


--  作者:sunbrain
--  发布时间:2012/6/7 1:15:00
--  
我觉得上面的方法可行,补充一下,把文件列设置成备注/图片,这样在备注窗口中就可以看到图片了,这样你就可以再其他的列中输入其他属性了

图片点击可在新窗口打开查看此主题相关图片如下:6.jpg
图片点击可在新窗口打开查看


--  作者:wjl-se
--  发布时间:2012/6/7 9:53:00
--  

我觉得按照楼主的思路出来的数据库可能也是混乱的,是否可以先从产品库的图片管理入手,图片管理软件可是一抓一大把啊,先把图片整理好,再向foxtable靠拢


--  作者:lihe60
--  发布时间:2012/6/7 9:56:00
--  
目前狐表是把图片传到互联网上,再把图片名称添加到文件管理器。有时互联网不通,图片就看不了的。
--  作者:kunge
--  发布时间:2012/6/8 16:50:00
--  一次添加多个图片为什么没有保存啊?狐狸爸爸求解!

 

上次你说的代码的确可以一次添加多个图片,但是添加后,项目目录里并没有保存图片啊?尽当时能够看到,如果按住键盘的方向键下键,或者上键不丢,过一遍,图片就全部消失了,但是名字还在,

 

 

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        Dim dr As DataRow = DataTables("表A").AddNew()
        dr("文件") = filesys.GetName(fl)
    Next
End If

 

这个怎么保存啊?

 

我发现关于图片更改名字,是可以实现的,

使用表事件 表事件BeforeAttachFile可以完成,

DataTable:    触发事件的DataTable
DataRow:      触发事件的DataRow
DataCol:       触发事件的DataCol
SourceFolder: 要添加文件的来源目录
FileName:     要添加文件的名称,你可以根据需要改名。
SubFolder:    指定存放文件的子目录
Cancel:       逻辑型,是否取消此次添加。

 

 把图片放在不同的文件夹,就不会覆盖了

Dim dr As DataRow = e.DataRow
If
dr.IsNull("供应商") Or Dr.IsNull("日期") Then
    MessageBox.Show(
"供应商和日期不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel =
True
Else

    e.SubFolder = dr(
"供应商") & "\\" & dr("日期").Year
End
If

 

我想把名字自动编号作为图片的名字,这样就不会覆盖了,这样即使当天上传同名的图片也不会覆盖了,

FileName:     要添加文件的名称,你可以根据需要改名

这个参数怎么用啊,

下面有段编号可以参考

 

If e.DataCol.Name = "日期" Then
    If
e.DataRow.IsNull("日期") Then
        e.
DataRow("编号") = Nothing
    Else
        Dim
bh As String = Format(e.DataRow("日期"),"yyyyMMdd") \'取得编号的8位前缀
       
If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前8位不符
       
    Dim max As String
           
Dim idx As Integer
            max = e.
DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "#") \'取得该天的最大编号
           
If max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(
9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
           
Else
                idx =
1 \'否则顺序号等于1
           
End If
            e.
DataRow("编号") = bh & "-" & Format(idx,"000")
        End
If
    End
If
End
If

 

这个编号已经足够强大了,但是有点复杂,我只需要编号就行了,帮忙简化一下,怎么定义 FileName:,还有最上面的代码上传后不保存问题,怎么解决?


--  作者:kunge
--  发布时间:2012/6/8 16:52:00
--  
这个问题解决了,能给大家很大的参考价值啊,谢谢狐狸爸爸了!
--  作者:kunge
--  发布时间:2012/6/8 17:28:00
--  
保存问题已解决了,需要先批量上传,激发单元格保存,然后再用按钮分离,