我做查询的时候,出现错误提示为:列名“xh”无效,请哪位高手指教一下:
type
  Tdatag1_form = class(TForm)
    xh_ledit: TLabeledEdit;
    xm_ledit: TLabeledEdit;
    CmdOK: TButton;
    CmdClose: TButton;
    stu_dataSource: TDataSource;
    stu_Grid: TDBGrid;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    stu_ADOQuery: TADOQuery;
    procedure CmdOKClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure CmdCloseClick(Sender: TObject);
  private
    { Private declarations }
  public
    modi:boolean;
    { Public declarations }
  end;var
  datag1_form: Tdatag1_form;
  xh,xm,sqlstr:string;
implementationuses dataadd, main;{$R *.dfm}procedure Tdatag1_form.CmdOKClick(Sender: TObject);
begin
    xh:=trim(xh_ledit.Text );
    if length(xh ) >0 then
    begin        xm:=trim(xm_ledit.Text);
        if length(xm)>0 then
        begin
            xm:='%'+xm+'%';
            sqlstr:='select * from student where xuehao=xh and name like xm order by xuehao ';
        end
        else
        begin
            sqlstr:='select * from student where xuehao=xh order by xuehao ';
        end;
    end
    else
    begin
        xm:=trim(xm_ledit.Text);
        if length(xm)>0 then
        begin
            xm:='%'+xm+'%';
            sqlstr:='select * from student where name like xm order by xuehao ';
        end
        else
        begin
            sqlstr:='select * from student order by xuehao';
        end;
    end;
    with stu_ADOQuery.Create(nil) do
    begin
      try
      Close;
      Connection:=Mainform.ADOConnection1;
      SQL.Clear;
      SQL.Add(sqlstr);
      Open;
    if stu_ADOQuery.RecordCount <>0 then
    begin
        N1.Enabled:=true;
        N2.Enabled:=true;
        N3.Enabled:=true;
    end
    else
    begin
        N1.Enabled:=true;
        N2.Enabled:=false;
        N3.Enabled:=false;
    end;       finally
        Free;
        end;
end;
end;

解决方案 »

  1.   

    sqlstr:='select * from student where xuehao=xh order by xuehao ';sqlstr:='select * from student where xuehao='+xh+' order by xuehao ';
      

  2.   

    应该是下面代码出错的原因:
    sqlstr:='select * from student where xuehao=xh order by xuehao ';
    应该修改为:
    sqlstr:='select * from student where xuehao='+''''+xh+''''+' order by xuehao ';
      

  3.   

    sqlstr:='select * from student where xuehao='+quotedstr(xh)+' order by xuehao ';
      

  4.   

    xh和xm都是以值出现,所以要加''的. 最好的方法是用format('select * from tablename where fieldname=''%s''', [列值]);