以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一条短信能录入多条订单吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53287)

--  作者:Bin
--  发布时间:2014/7/4 10:48:00
--  
再增加一个分隔符 |   没条信息用 | 分割

If e.Content.StartsWith("@@"Then \'如果信息是以约定的@@开始
  for each cons as string in e.Content.Split("|")
    Dim vals() As String = cons.Trim("@").Split("@")
    Dim
 ret As 
String
    
If vals.Length = 4 Then \'如果数组长度等于4
        
If vals(0) > "" AndAlso vals(1) > "" Then \'且提交了客户名称和产品名称
            
Dim Quantity As Integer
            
Dim Price As Double
            
If Integer.TryParse(Vals(2), Quantity) \'如果数量格式正确
                
If Double.TryParse(Vals(3), Price) Then \'如果单价格式正确
                    
Dim dr As DataRow = DataTables("订单").AddNew()
                    dr(
"客户") = vals(0)
                    dr(
"产品") = vals(1)
                    dr(
"数量") = vals(2)
                    dr(
"单价") = vals(3)
                    ret = 
"提交成功:" & e.Content
                End
 
If
            
End If
        
End If
    
End If
    
If ret = "" Then
        ret = 
"格式错误:" & e.Content
    End
 
If
    
FoxSms.DelMsgForIndex(e.Index) \'从SIM卡删除此短信
    FoxSMS.SendMsg(e.FromNumber,ret) 
\'回复短信,告诉业务员,此订单是否提交成功
   next
End
 If

--  作者:Bin
--  发布时间:2014/7/5 9:28:00
--  
不明白你的意思,字符不会自己改变的
--  作者:Bin
--  发布时间:2014/7/5 9:41:00
--  
这样的话你就按照@和*号分割好了
--  作者:Bin
--  发布时间:2014/7/5 9:56:00
--  
请上例子,并且把你信息收到的字符串发出来,我来给你写分隔代码
--  作者:Bin
--  发布时间:2014/7/5 11:08:00
--  
做个项目文件例子发上来,并且把你信息收到的字符串发出来,我来给你写分隔代码


--  作者:有点甜
--  发布时间:2014/7/6 15:56:00
--  
以下是引用liuruihua在2014-7-6 15:53:00的发言:
帖子沉得真快,自己顶一下,等明天版主上班帮解决。

 

那就不要用@作为分隔符。你可以用#等字符分隔,

 

NewMessage事件里split一下,就能得到各条的数据了。


--  作者:有点甜
--  发布时间:2014/7/6 16:35:00
--  
以下是引用liuruihua在2014-7-6 16:31:00的发言:
用#其它字符能显示,但订单表中一条记录都没有增加。

 

你得编写代码去增加。

 

For Each str As String In e.Content.split("#")
    Dim nr As Row = Tables("表A").AddNew
    nr("第一列") = str
Next


--  作者:有点甜
--  发布时间:2014/7/6 16:59:00
--  
 请不要盲目套用代码好不?你要根据自己的数据格式去编写代码啊。
[此贴子已经被作者于2014-7-6 16:59:37编辑过]

--  作者:有点甜
--  发布时间:2014/7/6 17:04:00
--  

 比如,你的短信是这种形式,就这样编写代码

 

###kx001*ss01*5*15|kx001*ss32*10*50

 

 

If e.Content.StartsWith("###") Then
    For Each cons As String In e.Content.SubString(3).Split("|")
        Dim vals() As String = cons.Split("*")
        Dim ret As String
        If vals.Length = 4 Then \'如果数组长度等于4
            If vals(0) > "" AndAlso vals(1) > "" Then \'且提交了客户名称和产品名称
                Dim Quantity As Integer
                Dim Price As Double
                If Integer.TryParse(Vals(2), Quantity) \'如果数量格式正确
                    If Double.TryParse(Vals(3), Price) Then \'如果单价格式正确
                        Dim dr As DataRow = DataTables("订单").AddNew()
                        dr("客户") = vals(0)
                        dr("产品") = vals(1)
                        dr("数量") = vals(2)
                        dr("单价") = vals(3)
                        ret = "提交成功:" & e.Content
                    End If
                End If
            End If
        End If
        If ret = "" Then
            ret = "格式错误:" & e.Content
        End If
        FoxSms.DelMsgForIndex(e.Index) \'从SIM卡删除此短信
        FoxSMS.SendMsg(e.FromNumber,ret) \'回复短信,告诉业务员,此订单是否提交成功
    Next
End If


--  作者:有点甜
--  发布时间:2014/7/6 17:38:00
--  
以下是引用liuruihua在2014-7-6 17:36:00的发言:
感谢版主的回复,我想不是因为格式问题,就完全按照帮助中的例子,也不知什么原因不能在订单表中新增多条记录。两条订单之间的分割符号,如果是@,系统最起码能识别最前面的一条订单,能在订单表中增加一条记录,但就是不能增加后面的订单。如果用其它字符分割,则一条订单记录都不会增加。(代码都一样的),不会是系统版本问题吧?

 

你用其它分隔符,对应的代码也要改啊。请看18楼解释和代码。