小弟还是新手,做毕业设计过程中碰到数据库及Delphi控件属性的问题。 
还请大侠留步帮忙,急。 
有三个函数有问题。请帮忙修改。 
1. 
点击Button1获取过期号码(DBGRid+query+datasource) 
这里的过期即现在日期减去数据库中的日期。 
procedure TForm_dbxx.Button1Click(Sender: TObject); 
Var Str1:string; 
begin 
with Query1 do 
begin 
Close; 
Sql.Clear; 
Str1:='Select kh_tel'+ 
'From "khxx.DB" khxx INNER JOIN "glfxx.DB" glfxx ON (khxx.kh_id=glfxx.kh_id)'+ 
'Where date-glfxx.glf_enddat<=365'; 
Query1.SQL.Add(Str1); 
Open; 
end; 
end; 点击按钮获取欠费号码(DBGRid+query+datasource) 
procedure TForm_dbxx.Button2Click(Sender: TObject); 
begin 
with Query1 do 
begin 
Close; 
Sql.Clear; 
Sql.ADD('Select kh_tel From khxx Where khxx.jf_zt='未清''); 
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 
StatusBar1.Panels[4].Text:='收到新消息'; 
Str1:=copy(MsgContent,1,13); 
Str2:=copy(MsgContent,14,2); 
with Query1 do 
begin 
Close; 
SQL.Clear; 
Str3:='SELECT kh_id'+'From "khxx.DB" khxx'+ 
'Where kh_id=Str1'; 
Query1.SQL.ADD(Str3); 
Query1.Open; 
IF Query1.RecordCount<>0 then 
IF Str2='01' then 
with Query2 do 
begin 
SQL.Clear; 
Str4:='SELECT * From khxx'; 
Str4:='您好!这是您的客户信息:'+Str4; 
Query2.SQL.ADD(Str4); 
Query2.ExecSQL; 
end; 
modem1.sendMsg(phoneNO,Str4); 
IF Str2='02' then 
with Query2 do 
begin 
SQL.Clear; 
Str5:='SELECT * From glfxx'; 
Str5:='您好!这是您的管理费信息:'+Str5; 
Query2.SQL.ADD(Str5); 
Query2.ExecSQL; 
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); 
ExecSQL; 
end; end;

解决方案 »

  1.   

    with Query2 do 
    begin 
    SQL.Clear; 
    Str4:='SELECT * From khxx'; 
    Str4:='您好!这是您的客户信息:'+Str4; 
    Query2.SQL.ADD(Str4); 
    Query2.ExecSQL; 
    end;  类似这样的语句是做什么的,能执行吗?
      

  2.   

    而且在查询时要用Open才能返回数据集
    insert,delete,update等才用ExecSql来执行
      

  3.   


    procedure TForm_dbxx.Button1Click(Sender: TObject);  
    var
      Str1:string;  
    begin  
      with Query1 do  
      begin  
        Close;  
        Sql.Clear;  
        Str1:='Select a.kh_tel From [khxx.DB].[dbo].[khxx] a INNER JOIN [glfxx.DB].dbo.[glfxx] b ON
              a.kh_id=b.kh_id) where b.glf_enddat >= DATEADD(yy,-1,getdate())';  
        SQL.Add(Str1);  
        Open;  
      end;  
    end;  
      

  4.   

    b.kh_id 后面多了一个‘)’
      

  5.   

    出现错误Invalid use of keyword
    Token:[khxx.DB].[dbo].[khxx]
      

  6.   

    用的是sqlserver数据库吧,一般
    Str4:='您好!这是您的客户信息:'+Str4; 这样的都
    Str4:='/*您好!这是您的客户信息:*/'+Str4;来进行标识出现错误Invalid use of keyword 看似你的表中用到了数据库中的关键字了
      

  7.   

    我用Delphi自带的Database Desktop制作数据库。
    数据库中关键字不能用么?
      

  8.   


    procedure TForm_dbxx.Button1Click(Sender: TObject);  
    var
      Str1:string;  
    begin  
      with Query1 do  
      begin  
        Close;  
        Sql.Clear;  
        Str1:='Select a.kh_tel From khxx a INNER JOIN glfxx b ON
              a.kh_id=b.kh_id where b.glf_enddat >= DATEADD(yy,-1,getdate())';  
        SQL.Add(Str1);  
        Open;  
      end;  
    end;
      

  9.   

    [数据库名].[dbo].[表名] 
    如果你的connection已经指定了数据库,可以直接用表名
      

  10.   

    首先很感谢你的帮忙。
    用了你的语句之后,出现错误Project CEMETERY.exe raised exception class EDBEngineError with message 'Capability not support.'什么错误?
      

  11.   

    Paradox型表
    Query只能访问单表么?
      

  12.   

    可以访问多表的,delphi中有许多例子就是用的paradox.
    要不你换个数据库,呵呵
      

  13.   

    好不容易查到了paradox动态访问数据库受限制条件之一就是只能访问单表。。
    只能采用最低级手段咯。。