adoquery1.close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select  Password,Income from 职员 where Password='''+edit1.Text+'''');
      adoquery1.Open;
      Password:=trim(edit1.Text);
      sleep(2000);
      Income:=trim(edit2.Text);
这个是我现在的码,系统老是说Password,Income没有定义,这两个是我的数据库中字段的名称,请问高人给看一下,到底是怎么回事,望改正!

解决方案 »

  1.   

    那你在函数前面用var关键字声明一下Password和Income嘛
      

  2.   

     Password:=trim(edit1.Text);
      sleep(2000);
      Income:=trim(edit2.Text);  你这两句想要干嘛呢? 要么你声明一下变量,要么这两个你也别要了,我没看出来有什么用...
      

  3.   

    FieldByName('Password').asstring:= trim(edt1.text);
    FieldByName('Income ').asstring:= trim(edt2.text);
    或者是用 parameter 写 大概的意思是一样的
      

  4.   

    分段调试,先确定是否可以执行以下语句。adoquery1.close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select Password,Income from 职员 where Password='''+edit1.Text+'''');
      adoquery1.Open;如果OK,说明数据库没有问题。而是下面语句的问题。
    //补充定义
    var
    password,income: string;Password:=trim(edit1.Text);
    //  sleep(2000); //可以删除,并没有用处。
    Income:=trim(edit2.Text);
      

  5.   

      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select Password,Income from 职员 where Password='''+edit1.Text+'''');
      adoquery1.Open;
    可以改为:
      adoQuery1.SQL.Clear;
      adoQuery1.SQL.Add(Format('select Password,Income from 职员 where Password=''%s''',  [Edit1.Text]));
      adoQuery1.Open;
      
      

  6.   

    Password是sqlserver的关键字,如果你要用来做字段名就需要加中括号
    adoquery1.SQL.Add('select Password,Income from 职员 where [Password]='''+edit1.Text+'''');
      

  7.   

      
     adoquery1.sql.close;
     adoquery1.sql.clear; 
     adoquery1.SQL.Add('select Password,Income from 职员 where password=a and Income=b');
     adoquery1.Parameters.ParamByName('a').Value:=trim(edt1.text);
     adoquery1.Parameters.ParamByName('b').Value:=trim(edt2.text);
     adoquery1.open;  
      

  8.   

    哈哈,第一行,多了一个SQL,是:adoquery1.close;
      

  9.   

    还写漏了个括号,现在加上
    adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select [Password],Income from 职员 where [Password]='''+edit1.Text+'''');
      adoquery1.Open;
      

  10.   

    你的PASSWORD是SQL语句的一部分,在程序中被当做字符串处理的.还有一点,我没看懂LZ需要达成什么样的功能,把数据库的值赋到PASSWORD变量中?
      

  11.   

    sql里面尽量用参数parameters来代替,这样比较好
      

  12.   

    修改数据库的值不是你这么修改的,
    用SQL语句来修改吧
      case Application.MessageBox('此为不可逆操作,确定要执行吗?', '提示',
        MB_OKCANCEL + MB_ICONINFORMATION) of
        IDOK:
          begin
            try
              with FrmLogin do
              begin
                ADOQuery1.Close;
                ADOQuery1.SQL.Clear;
                ADOQuery1.SQL.Add('update ' + FrmChoice.ComboBox1.Text + ' set 失效=1 where 文件名称=:name');
                ADOQuery1.Parameters.ParamByName('name').Value:=ComboBox1.Text;
                ADOQuery1.ExecSQL;
              end;
              Application.MessageBox('设置成功!', '提示', MB_OK +
                MB_ICONINFORMATION);
            except
              Application.MessageBox('未知错误!', '提示', MB_OK + MB_ICONSTOP);
              Exit;
            end;
          end;
        IDCANCEL:
          begin
            Exit;
          end;
      end;
      

  13.   

    adoquery和与之相配的连接控伯的参数,设好了吗? 
      

  14.   

    var
    password,income: string;
      

  15.   

    不要用参数,不要用引号,我是这样用的:adoq.close;
    adoq.sql.text:='select f1,f2 from table where f1='+quotedstr(edit1.text);
    adoq.open;出现很多个个单引号,会把人看晕的用参数,经常得不到你的结果,而且使得代码量大增.参数较多的时候,就用 format('selet f1,f2 from table where f1=%s and f2 =%s',[quotedstr(edit1.text),edit2.text]);