以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于批量入库  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126657)

--  作者:裴保民
--  发布时间:2018/10/26 8:31:00
--  关于批量入库
怎样实现批量入时:
       首先判断所入库的商品编号在现存库存没有重复执行系列入库操作,如果有重复则恢复入库前的数据
(1)、商品编号自动生成:1、商品编号是文本格式:如 D5879545F12545780、D5879545F12545781、D5879545F12545782..........。
(2)、每生成一个商品编号就自动添加一条已经设置好的其他字段。
(3)、商品编号也可以设置成起始号和尾号(如: D5879545F12545780 至 D5879545F12545799共生成20条记录)
[此贴子已经被作者于2018/10/26 8:47:24编辑过]

--  作者:有点蓝
--  发布时间:2018/10/26 9:32:00
--  
使用一个表存储当前使用的最大编号值,比如存储的值是:12545780 

dim cnt as integer = 20 \'需要使用20个编号
dim xh as integer = -1
Try
    Connections("数据源").BeginTransaction() 
\'开始事务
    Dim cmd As new 
SQLCommand
    cmd.ConnectionName = 
"数据源"
    cmd.CommandText = 
"update {编号表} set [序号] = 
[号]+" & cnt
    cmd.
ExecuteNonQuery
    cmd.CommandText = 
"select top 1 
[号] From {编号表} "
    xh = cmd.ExecuteScalar
    Connections("数据源").Commit \'提交事务,所有操作生效
Catch
 ex As Exception \'如果出错 
    Connections("数据源").Rollback() 
\'回滚事务,撤销所有操作

End
 Try

if xh > -1 then
    dim f as integer = xh - cnt 
    for i as integer = f to xh
dim dr as datarow = datatables().addnew
dr("编号") ="D5879545F" & i
dr("数量") = 20 
next
end if

--  作者:裴保民
--  发布时间:2018/10/26 10:09:00
--  
如果用扫码枪先把个个商品号保存到多文本框中然后单机保存按钮实现将每个商品和其他各字段一次性保存到数据库中怎么实现
--  作者:有点蓝
--  发布时间:2018/10/26 10:21:00
--  
dim s as string = 多文本框.text
if s > "" then
    dim arr() as string = s.split(",")
dim cnt as integer = arr.length
dim xh as integer = -1
Try
    Connections("数据源").BeginTransaction() 
\'开始事务
    Dim cmd As new 
SQLCommand
    cmd.ConnectionName = 
"数据源"
    cmd.CommandText = 
"update {编号表} set [序号] = 
[号]+" & cnt
    cmd.
ExecuteNonQuery
    cmd.CommandText = 
"select top 1 
[号] From {编号表} "
    xh = cmd.ExecuteScalar
    Connections("数据源").Commit \'提交事务,所有操作生效
Catch
 ex As Exception \'如果出错 
    Connections("数据源").Rollback() 
\'回滚事务,撤销所有操作

End
 Try

if xh > -1 then
    dim f as integer = xh - cnt 
dim idx = 0
    for i as integer = f to xh
dim dr as datarow = datatables().addnew
dr("编号") ="D5879545F" & i
dr("商品号") = arr(idx)
idx += 1
next
end if
end if

--  作者:裴保民
--  发布时间:2018/10/26 10:35:00
--  
是不是每扫码一个商品号后多文本框中除了保存商品号外还得保存一个分隔符“,”呀?怎么实现呢?
--  作者:有点蓝
--  发布时间:2018/10/26 12:37:00
--  
您原来的多文本框的多个商品号是怎么保存的?
--  作者:裴保民
--  发布时间:2018/10/26 23:07:00
--  

怎样实现不了批量入库呢:

       首先判断所入库的商品编号在现存库存没有重复执行系列入库操作,如果有重复则恢复入库前的数据
(1)、商品编号自动生成:1、商品编号是文本格式:如 D5879545F12545780、D5879545F12545781、D5879545F12545782..........。
(2)、每生成一个商品编号就自动添加一条已经设置好的其他字段。
(3)、商品编号也可以设置成起始号和尾号(如: D5879545F12545780 至 D5879545F12545799共生成20条记录,入库的条数是不固定的,是需要计算的)

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.foxdb

[此贴子已经被作者于2018/10/26 23:09:52编辑过]

--  作者:有点蓝
--  发布时间:2018/10/27 10:10:00
--  
Dim startno As String = e.Form.Controls("TextBox1").text
Dim endno As String = e.Form.Controls("TextBox2").text
Dim pfix As String = startno.SubString(0,9)
If DataTables("流量卡资料库").Find("流量卡号 >= \'" & startno & "\' and 流量卡号 <= \'" & endno & "\'") Is Nothing Then
    Dim ka1 As Integer = val(startno.Replace(pfix,""))
    Dim ka2 As Integer = val(endno.Replace(pfix,""))
    For i As Integer = ka1 To ka2
        Dim r As Row = Tables("流量卡资料库").AddNew
        r("服务商") = e.Form.Controls("TextBox4").text
        r("购买金额") = e.Form.Controls("TextBox3").text
        r("流量卡号") = pfix & i
    Next
Else
    msgbox("已存在卡号")
End If

--  作者:裴保民
--  发布时间:2018/10/27 18:45:00
--  

经过测试出现死循环了

 

 

例如文本框1中输入D5879545F12545780 文本框2中输入至D5879545F12545799是应该共生成20条记录,例如文本框1中输入D5879545F12545750 文本框2中输入至D5879545F12545759是应该共生成10条记录,经过测试后出现死循环


还有就是文本框1和文本框2中所输入的字符数的长度不是固定的。一般所要入库条数取决于字符串后几位数的差值(不过在操作前两个文本框中所输入的是字符型字符串不是数值型的)比如字符串“D5879545F12545780”和“D5879545F12545799”  是计算"5780"到“5799”之间的差值20就应该一次性入库20条从D5879545F12545780到D5879545F12545799的数据,同样也可以计算“80”到“99”之间的差值20就应该一次性入库20条从D5879545F12545780到D5879545F12545799的数据;再比如字符串“D56G545720”和“D56G545769” 是计算"720"到“769”之间的差值50就应该一次性入库50条从D56G545720到D56G545769的数据,同样也可以计算“20”到“69”之间的差值50就应该一次性入库20条从D56G545720到D56G545769的数据

[此贴子已经被作者于2018/10/28 11:00:02编辑过]

--  作者:有点蓝
--  发布时间:2018/10/29 8:35:00
--  
数据不等长没有办法计算,需要增加一个输入框,指定要计算的位数