用户在Edit1中输入一个数字a 
要将ADOQuery查询结果中的"jyh"字段的内容按"xuehao"的升序分别修改为a ,a+1,....我的代码是
procedure TForm3.Button1Click(Sender: TObject);
var
a:integer;
newsql_search:string;
paiqianstr:string;
begin
a:=strtoint(trim(edit1.Text));
paiqianstr:='派遣';
  form1.ADOQuery1.Close;
  form1.ADOQuery1.SQL.Clear;
  newsql_search:='select jyh, xuehao, byqx from xuesheng  where yj='+ '1' +' and byqx='+'''+ paiqianstr+ '''+' order by xuehao  ' ;
  form1.ADOQuery1.SQL.Add(newsql_search);
  form1.ADOQuery1.Active:=true;
  form1.ADOQuery1.Open;
  form1.ADOQuery1.First;
  form1.ADOQuery1.Edit;
  while not form1.ADOQuery1.Eof do
  begin
  form1.ADOQuery1.Edit;
  form1.ADOQuery1.FieldByName('jyh).AsString:=inttostr(a);
  a:=a+1;
  form1.ADOQuery1.Next;
  end;
  form1.ADOQuery1.Post;
end;运行时,报告错误:无法插入空行.行必须至少有一个列值集请问是哪里错了?我应该怎样写?
我在定义
var
a:integer;时,integer不变黑 但是程序也没有报错
a:=a+1;部分数字 "1"是蓝色的,是否表示这里的"1"是字符型?

解决方案 »

  1.   

    你把form1.ADOQuery1的locktype改为ltBatchOptimistic还有
        form1.ADOQuery1.Active:=true; 
        form1.ADOQuery1.Open; 
    这两句作用是一样的
      

  2.   

    我需要查询 
    我发现在需要查询 应届=1 且 毕业去向=派遣 的所有记录'   and   byqx='+'''+   paiqianstr+   '''+'   order   by   xuehao     '  
    句中'''+   paiqianstr+   '''部分是蓝色的
    这样查询出来的结果为空
    如果改成'select * from xuesheng  where 应届='+ '1' +' and 毕业去向='''+paiqianstr+'''  order by 学号  ' 
    则报告 标准表达式中数据类型不匹配
    改成'select * from xuesheng  where 应届='+ '1' +' and 毕业去向='''派遣'''  order by 学号  ' 
    则报告参数 派遣 没有默认值我昏了,究竟要怎么写才能得要求的结果呢
      

  3.   

    我用的access数据库,字段类型都是文本
    paiqianstr 在前面也定义了,是字符型
    如果要定义一个变量为数值型,请问要怎么写?
    我写的
    var 
    a:integer;不变黑
      

  4.   

    搞定了哈
    原来是查询有问题
    改成newsql_search:='select * from xuesheng  where 应届="1" and 毕业去向="派遣" order by 学号';
    就好了
    还有就是form1.ADOQuery1.Post;前面要加一句
    form1.ADOQuery1.Edit;不然会报错