通过网页显示查询结果
通过短信查询数据,如果查询结果内容很多,例如要查询所有产品的库存,而产品的数量数十个甚至数百个,显然这时直接用短信回复是不合适的。
我们可以将结果保存为网页,然后将链接地址通过短信发给查询者,前提是你已经搭建好web服务器,而且web服务器已经安装了Foxtable,并接上了短信猫;如果条件不许可,你也可以在其他电脑接收短信,生成查询结果网页文件,并
自动上传到web服务器,最后将连接地址发给查询者。
提示: 下面的示例用到了专业报表的知识。
示例
下载我们重新设计之前的库存查询示例,如果用户指定产品,以短信的形式返回这些产品的库存和单价,如果用户没有指定产品,则以网页的形式返回所有产品的库存和单价。
1、假定web服务器已经安装了foxtable,并接上了短信猫,web目录的是:c:\myweb。
2、在c:\myweb目录下建立一个子目录"query",用于存放以网页形式生成的查询结果。
3、规定提交查询信息的格式,假定我们规定的格式如下:
格式 |
说明 |
**产品1*产品2... |
指定要查询的产品,不同的产品之间,用符号*隔开,如果省略产品,表示查询全部产品:
示例:
**
表示查询所有产品
**PD01
表示查询PD01。
**PD01*PD02
表示查询PD01和PD02。 |
2、在项目事件AfterOpenProject设置代码:
FoxSms.SyncWorkMode = False
'设置为异步工作模式
FoxSMS.CommPort = 3
'注意端口号千万不能搞错
FoxSMS.OpenCom()
3、在项目事件BeforeCloseProject事件中设置代码:
FoxSMS.CloseCom()
4、然后在短信监视器中,设置ConnectModemResult事件的代码为:
If
e.Succeed =
False Then
MessageBox.Show("短信猫连接失败!","提示",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End
If
5、然后在短信监视器中,设置NewMessage事件的代码为:
Dim
ret
As
String
If e.Content = "**"
'如果查询所有产品的库存
Dim
doc As New PrintDoc
'定义一个新报表
Dim
rt As New
prt.RenderTable '定义一个新表格
Dim
fl As
String =
"c:\myweb\query\" &
rand.NextString(8) &
".htm"
'生成一个随机的网页文件名
Dim
ColNames As
String() = New
String(){"产品",
"数量","单价"}
For
c
As
Integer =
0
To
ColNames.Length
- 1
'逐列设置和填入内容
rt.Cells(0,c).Text
= ColNames(c)
'列名作为标题
For
r
As
Integer =
0
To
DataTables("库存").DataRows.Count
-1
'开始填入该列内容
rt.Cells(r +
1, c).Text =
DataTables("库存").DataRows(r)(ColNames(c))
Next
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
doc.Body.Children.Add(rt)
'将表格加入到报表
doc.SaveHtm(fl)
'保存为网页文件
ret = "http://www.你的域名.com/query/"
& FileSys.GetName(fl)
ElseIf e.Content.StartsWith("**")
Then
'如果查询指定产品的库存
Dim
vals() As
String = e.Content.Trim("*").Split("*")
Dim flt
As
String
For
Each val
As
String
In vals
If flt > ""
Then
flt = flt &
","
End
If
flt = flt &
"'" & val &
"'"
Next
If flt > ""
Then
Dim drs
As
List(Of
DataRow) =
DataTables("库存").Select("产品
In (" & flt & ")")
For
Each dr
As
DataRow
In drs
If
ret > "" Then
ret = ret & vbcrlf
End
If
ret = ret &
"产品:" & dr("产品")
& " 库存:" & dr("数量")
& " 单价:" & dr("单价")
Next
If ret = ""
Then
ret =
"无此产品:" & e.Content
End
If
End
If
End If
FoxSms.DelMsgForIndex(e.Index) '从SIM卡删除此短信
If ret >
"" Then
FoxSMS.SendMsg(e.FromNumber,ret)
End If
本页地址:http://www.foxtable.com/webhelp/topics/2451.htm