串口短信猫开发。现有一函数有些错误,本人比较菜,不太会跟踪查错。请大侠帮忙。此函数实现自动回复。
procedure TForm_main.Modem1recvMsg(ASender: TObject; const phoneNO, recvTime,MsgContent: WideString);//一控件的函数,可以不用管它,返回号码。接收消息时间和消息内容。
Var Str1,Str2:string;
Var Str3:string;
Var Str4,Str5,Str6:string;
begin
Str1:=copy(MsgContent,1,13); //截取消息内容前13位,即KH_ID
Str2:=copy(MsgContent,14,2); //截取第14、15位,即特定数值,01或者02
with Query1 do //Query1查询客户信息表中的KH_ID
begin
Close;
SQL.Clear;
Str3:='SELECT kh_id'+
'From khxx'+
'Where kh_id="'+Trim(Str1)+'"';
Query1.SQL.ADD(Str3);
Query1.Open;
IF Query1.RecordCount<>0 then //是否在客户信息表中
IF Str2='01' then //特定数值为01
with Query2 do //Query2返回该客户信息
begin
SQL.Clear;
Str4:='SELECT * From khxx';
Str4:='您好!这是您的客户信息:"'+Trim(Str4)+'"';
Query2.SQL.ADD(Str4);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str4); //发送信息
IF Str2='02' then //同上
with Query2 do
begin
SQL.Clear;
Str5:='SELECT * From glfxx';
Str5:='您好!这是您的管理费信息:"'+Trim(Str5)+'"';
Query2.SQL.ADD(Str5);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str5);
IF (Str2<>'01') And (Str2<>'02') then //特定数值不符合要求
Str6:='您的输入格式有误!'+
'正确格式为:客户ID号+01 查询客户信息;'+
'客户ID号+02 查询管理费信息' ;
modem1.sendMsg(phoneNO,Str6); //发送指定信息
end;
with Query1 do //把收到的信息添加入表
begin
Close;
SQL.Clear;
SQL.Add('INSERT into JSXX(RecvTime,Phone,Content) VALUES(:time1,:phone1,:content1)');
ParamByName('time1').AsString := trim(recvTime);
ParamByName('phone1').AsString := trim(phoneNO);
ParamByName('content1').AsString := trim(MsgContent);
open;
end;end;
劳烦修改。谢谢
procedure TForm_main.Modem1recvMsg(ASender: TObject; const phoneNO, recvTime,MsgContent: WideString);//一控件的函数,可以不用管它,返回号码。接收消息时间和消息内容。
Var Str1,Str2:string;
Var Str3:string;
Var Str4,Str5,Str6:string;
begin
Str1:=copy(MsgContent,1,13); //截取消息内容前13位,即KH_ID
Str2:=copy(MsgContent,14,2); //截取第14、15位,即特定数值,01或者02
with Query1 do //Query1查询客户信息表中的KH_ID
begin
Close;
SQL.Clear;
Str3:='SELECT kh_id'+
'From khxx'+
'Where kh_id="'+Trim(Str1)+'"';
Query1.SQL.ADD(Str3);
Query1.Open;
IF Query1.RecordCount<>0 then //是否在客户信息表中
IF Str2='01' then //特定数值为01
with Query2 do //Query2返回该客户信息
begin
SQL.Clear;
Str4:='SELECT * From khxx';
Str4:='您好!这是您的客户信息:"'+Trim(Str4)+'"';
Query2.SQL.ADD(Str4);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str4); //发送信息
IF Str2='02' then //同上
with Query2 do
begin
SQL.Clear;
Str5:='SELECT * From glfxx';
Str5:='您好!这是您的管理费信息:"'+Trim(Str5)+'"';
Query2.SQL.ADD(Str5);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str5);
IF (Str2<>'01') And (Str2<>'02') then //特定数值不符合要求
Str6:='您的输入格式有误!'+
'正确格式为:客户ID号+01 查询客户信息;'+
'客户ID号+02 查询管理费信息' ;
modem1.sendMsg(phoneNO,Str6); //发送指定信息
end;
with Query1 do //把收到的信息添加入表
begin
Close;
SQL.Clear;
SQL.Add('INSERT into JSXX(RecvTime,Phone,Content) VALUES(:time1,:phone1,:content1)');
ParamByName('time1').AsString := trim(recvTime);
ParamByName('phone1').AsString := trim(phoneNO);
ParamByName('content1').AsString := trim(MsgContent);
open;
end;end;
劳烦修改。谢谢
解决方案 »
- 请问devexpress控件无法自动加载,如何解决
- 这个效果可否有什么控件实现
- savepicturedialog中的filter是什么属性?谢谢
- 帮朋友问2,求程序算法原码??
- 请问有什么方法可以控制打印机走纸呢?
- 取IE浏览器的URL地址
- 一个关于BLOB字段通过OLECONTAINER读取和显示的问题(急)
- 使用 cxgrid 添加计算列显示 图片的问题? 多谢!
- 急、急_怎样取得Cpu和硬盘的序列号?200分
- 请问李维Delphi5.xADO?MTS?COM+一书的源代码在那个网站有下载的?
- Delphi菜鸟一天一问,我编的数据库应用程序如何打包?
- 非常奇怪关于MDI程序子窗体菜单列表的问题
Var
Str1,Str2:string;
Str3:string;
Str4,Str5,Str6:string;
begin
Str1:=copy(MsgContent,1,13); //截取消息内容前13位,即KH_ID
Str2:=copy(MsgContent,14,2); //截取第14、15位,即特定数值,01或者02
with Query1 do //Query1查询客户信息表中的KH_ID
begin
Close;
SQL.Clear;
Str3:='SELECT kh_id'+
' From khxx'+
' Where kh_id='''+Trim(Str1)+'''';
Query1.SQL.ADD(Str3);
Query1.Open;
IF Query1.RecordCount <>0 then //是否在客户信息表中
IF Str2='01' then //特定数值为01
with Query2 do //Query2返回该客户信息
begin
SQL.Clear;
Str4:='SELECT * From khxx';
Str4:='您好!这是您的客户信息:"'+Trim(Str4)+'"';
Query2.SQL.ADD(Str4);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str4); //发送信息
IF Str2='02' then //同上
with Query2 do
begin
SQL.Clear;
Str5:='SELECT * From glfxx';
Str5:='您好!这是您的管理费信息:"'+Trim(Str5)+'"';
Query2.SQL.ADD(Str5);
Query2.open;
end;
modem1.sendMsg(phoneNO,Str5);
IF (Str2 <>'01') And (Str2 <>'02') then //特定数值不符合要求
Str6:='您的输入格式有误!'+
'正确格式为:客户ID号+01 查询客户信息;'+
'客户ID号+02 查询管理费信息' ;
modem1.sendMsg(phoneNO,Str6); //发送指定信息
end;
with Query1 do //把收到的信息添加入表
begin
Close;
SQL.Clear;
SQL.Add('INSERT into JSXX(RecvTime,Phone,Content) VALUES(:time1,:phone1,:content1)');
FieldByName('time1').AsString := trim(recvTime);
FieldByName('phone1').AsString := trim(phoneNO);
FieldByName('content1').AsString := trim(MsgContent);
open;
end;end;
串口与终端通信没问题,其他功能都实现了。数据库好像也没问题。。哎,,这个东西不太号描述啊,现在我只想知道想要实现这个功能的代码怎么写。函数接收到信息后,会带回三个参数:手机号,发送时间,发送内容。规定内容是客户ID+01返回客户信息,ID+02返回管理费信息。就是直接返回表的信息。先通过客户_ID号判断是否是系统注册会员,若是就进行下一步。接着判断是01?02或者其他的。01返回客户信息表信息,02返回管理费信息。其他的返回特定语句。最后把查询记录插入接收信息统计表中。