以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Dim sem As String =dr1("告知内容") 用什么办法实现这个sem的值以五百个字为标准进行拆分,并进行多条信息的发送? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144904) |
-- 作者:李孝春 -- 发布时间:2020/1/2 14:22:00 -- Dim sem As String =dr1("告知内容") 用什么办法实现这个sem的值以五百个字为标准进行拆分,并进行多条信息的发送? 这个sem在实际中可能会录入大于五百字的内容,我想实现拆分,假设现在录入1200字,我需要拆分成500 500 200 三个内容,然后在下面的发送HC部分,进行三次组合,将这条信息发送出去 怎么操作呢? 代码如下: Dim lsts As New List(Of String) lsts= DataTables("告知内容").SQLGetValues("姓名" ,"操作单位=\'" & _usergroup & "\' And ( 是否告知 is null or 是否告知<> \'是\')") For Each lst As String In lsts Dim dr21 As DataRow = DataTables("告知内容").sqlfind("姓名 = \'" & lst & "\'and 操作单位=\'" & _usergroup & "\' " ) If dr21 IsNot Nothing Then \'如果不存在同编号的订单 If dr21("手机号码") IsNot Nothing Then Dim ab As DataRow = DataTables("参数表").sqlFind("使用单位 = \'" & _usergroup & "\'") Dim drs1 = DataTables("告知内容").sqlSelect("姓名 = \'" & lst & "\' and 操作单位=\'" & _usergroup & "\' And ( 是否告知 is null or 是否告知<> \'是\')") For Each dr1 As DataRow In drs1 If dr1("告知内容") <>"" Then Dim t As Date= Date.Now Dim t1 As String =Format(Date.Now, "yyyMMddHHmmss") Dim Val As String = Rand.Next(1000) \' Dim s As String = val.PadLeft(4, "0") Dim password As String= ab("移动平台密码") \'接入密码 Dim t2 As String = password & t1 & s Dim account As String = ab("移动平台账号") \'接入账号 Dim serviceCode As String = ab("移动平台接入号") \'接入号 Dim authCode As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(t2, "MD5") Dim reqNo As String = t1 & s Dim sem As String =dr1("告知内容") 这个sem在实际中可能会录入大于五百字的内容,我想实现拆分,假设现在录入1200字,我需要拆分成500 500 200 三个内容,然后在下面的发送HC部分,进行三次组合,将这条信息发送出去 怎么操作呢? \'output.Show(sem) \'MessageBox.Show(sem) Dim content As String =Functions.Execute("utf8",sem) \'MessageBox.Show(content) Dim msisdn As String =dr1("手机号码") \'MessageBox.Show(msisdn) Dim hc As New HttpClient("http://218.201.202.174:8900/smstemp/http/sendSms?account="&account.Trim()&"&reqNo="&reqNo.Trim()&"&authCode="&authCode.Trim()&"&serviceCode="&serviceCode.Trim()&"&msisdn="&msisdn.Trim()&"&c&msgType=0") Dim ret As String = hc.GetData() Dim Tel As String = ret Dim Parts() As String = Tel.Split("=") Dim Tel1 As String = Parts(1) Dim Parts1() As String = Tel1.Split(",") \'MessageBox.Show(parts1(0)) If parts1(0)=0 Then \'MessageBox.Show(parts1(0)) dr1("是否告知")="是" & parts1(0) Else \'MessageBox.Show(parts1(0)) dr1("是否告知")="否" & parts1(0) End If dr1.Save End If Next End If End If Next
|
-- 作者:有点蓝 -- 发布时间:2020/1/2 14:29:00 -- Dim sem As String = dr1("告知内容") Do While sem.Length > 500 Dim s As String = sem.SubString(0,500) sem = sem.SubString(500) Output.Show(s) ‘改为发送的代码’ Loop Output.Show(sem) ‘改为发送的代码’ |
-- 作者:李孝春 -- 发布时间:2020/1/2 16:20:00 -- 回复:(有点蓝)Dim sem As String = dr1("告知... 代码修正为如下: 能够实现信息拆分发送了 但是发送的顺序不能控制 导致信息不会按照原来的排版顺序 依次发送 出现了倒序发送 麻烦老师多多指导一下,让拆分后的内容也能够按照正序发送 第二:如下代码是否还可以简化,感觉太繁琐! Dim lsts As New List(Of String) lsts= DataTables("告知内容").SQLGetValues("姓名" ,"操作单位=\'" & _usergroup & "\' And ( 是否告知 is null or 是否告知<> \'是\')") For Each lst As String In lsts Dim dr21 As DataRow = DataTables("告知内容").sqlfind("姓名 = \'" & lst & "\'and 操作单位=\'" & _usergroup & "\' " ) If dr21 IsNot Nothing Then \'如果不存在同编号的订单 If dr21("手机号码") IsNot Nothing Then Dim ab As DataRow = DataTables("参数表").sqlFind("使用单位 = \'" & _usergroup & "\'") Dim drs1 = DataTables("告知内容").sqlSelect("姓名 = \'" & lst & "\' and 操作单位=\'" & _usergroup & "\' And ( 是否告知 is null or 是否告知<> \'是\')") For Each dr1 As DataRow In drs1 If dr1("告知内容") <>"" Then Dim t As Date= Date.Now Dim t1 As String =Format(Date.Now, "yyyMMddHHmmss") Dim Val As String = Rand.Next(1000) \' Dim s As String = val.PadLeft(4, "0") Dim password As String= ab("移动平台密码") \'接入密码 Dim t2 As String = password & t1 & s Dim account As String = ab("移动平台账号") \'接入账号 Dim serviceCode As String = ab("移动平台接入号") \'接入号 Dim authCode As String = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(t2, "MD5") Dim reqNo As String = t1 & s Dim msisdn As String =dr1("手机号码") Dim sem As String =dr1("告知内容") Do While sem.Length > 500 Dim s1 As String = sem.SubString(0,500) sem = sem.SubString(500) Output.Show(s1) \'改为发送的代码\' Dim content1 As String =Functions.Execute("utf8",s1) Dim hc1 As New HttpClient("http://218.201.202.174:8900/smstemp/http/sendSms?account="&account.Trim()&"&reqNo="&reqNo.Trim()&"&authCode="&authCode.Trim()&"&serviceCode="&serviceCode.Trim()&"&msisdn="&msisdn.Trim()&"&c&msgType=0") Dim ret1 As String = hc1.GetData() Dim Tel1 As String = ret1 Dim Parts1() As String = Tel1.Split("=") Dim Tel11 As String = Parts1(1) Dim Parts11() As String = Tel11.Split(",") \'MessageBox.Show(parts1(0)) If parts11(0)=0 Then \'MessageBox.Show(parts1(0)) dr1("是否告知")="是" dr1("状态码")=parts11(0) Else \'MessageBox.Show(parts1(0)) dr1("是否告知")="否" dr1("状态码")=parts11(0) End If dr1.Save Loop Output.Show(sem) \'改为发送的代码\' Dim content As String =Functions.Execute("utf8",sem) Dim hc As New HttpClient("http://218.201.202.174:8900/smstemp/http/sendSms?account="&account.Trim()&"&reqNo="&reqNo.Trim()&"&authCode="&authCode.Trim()&"&serviceCode="&serviceCode.Trim()&"&msisdn="&msisdn.Trim()&"&c&msgType=0") Dim ret As String = hc.GetData() Dim Tel As String = ret Dim Parts() As String = Tel.Split("=") Dim Tel2 As String = Parts(1) Dim Parts2() As String = Tel2.Split(",") \'MessageBox.Show(parts1(0)) If parts2(0)=0 Then \'MessageBox.Show(parts1(0)) dr1("是否告知")="是" dr1("状态码")=parts2(0) Else \'MessageBox.Show(parts1(0)) dr1("是否告知")="否" dr1("状态码")=parts2(0) End If dr1.Save End If Next End If End If Next
|
-- 作者:有点蓝 -- 发布时间:2020/1/2 16:32:00 -- 这个代码肯定是按顺序处理的,如果有问题肯定是短信接口的原因 |