with data1.ADOjyxxcx do
        begin
        close;
        sql.Clear;
        sql.text:='select t.书名,t.ISBN,t.借书日期,t.应还日期 from'+
        ' (select sjxxb.书名,jyxxb.ISBN,jyxxb.姓名,jyxxb.借书日期,jyxxb.应还日期 '+
        ' from 书籍信息表 sjxxb right outer join 借阅信息表 jyxxb on sjxxb.ISBN=jyxxb.ISBN '+
        ' where 姓名=:a) t' ;
         parameters.parambyname('a').value:=trim(edit1.text)
        open;
        end;
    
代码如上 可dbgrid 里就没有数据了
但如果换成 姓名=''name''
就会有 name 的数据 不知道怎么解决 
麻烦各位大侠 谢谢~~

解决方案 »

  1.   

    看你的意思好像是没有设置dbgrid的columns属性,没有列绑定到你的dataset
    如果不是这个就是你的sql写的有问题,没有查出结果
      

  2.   

    with data1.ADOjyxxcx do
    begin
    close;
    sql.Clear;
    sql.text:='select t.书名,t.ISBN,t.借书日期,t.应还日期 from'+
    ' (select sjxxb.书名,jyxxb.ISBN,jyxxb.姓名,jyxxb.借书日期,jyxxb.应还日期 '+
    ' from 书籍信息表 sjxxb right outer join 借阅信息表 jyxxb on sjxxb.ISBN=jyxxb.ISBN '+
    ' where 姓名='+#39+trim(edit1.text)+#39+') t' ;
    open;
    end;
      

  3.   

    把SQL语句放在SQL Server自带的查询分析器一查就看到了
      

  4.   

    with data1.ADOjyxxcx do
    begin
    close;
    sql.Clear;
    sql.text:='select t.书名,t.ISBN,t.借书日期,t.应还日期 from'+
    ' (select sjxxb.书名,jyxxb.ISBN,jyxxb.姓名,jyxxb.借书日期,jyxxb.应还日期 '+
    ' from 书籍信息表 sjxxb right outer join 借阅信息表 jyxxb on sjxxb.ISBN=jyxxb.ISBN '+
    ' where 姓名=''+trim(edit1.text+'') t' ;
    open;
    end;在sqlserver中给字符串型赋值时要加引号的,这里就错在这里
      

  5.   

    建议表名或字段名不要都不要用中文,用英文好些。
    查询数据的问题,应该是字符串引用的问题,只要引号打对了就不会有问题。
    在DELPHI里,最好用参数的模式,常用的是Format('',[]);
      

  6.   


    如果把a 换成一个实际的名称
    sql查询分析器 里面是可以通过的