delphi新手一枚。。本想慢慢学。。但是现在有点事着急用,还想问问各位大侠。。
关于delphi数据库这里。。一段指令,本意是每次点击按钮后将选中项移动到另外一个数据库,点击后也能实现。问题是为什么再不退出程序的情况下,连续点击按钮后会报错语法错误在from 单选题 where xh='''+inttostr(A[j])+''''这里。不是每次都重新连接"单选题"表了么?为什么会报错啊?
代码如下:
ADOQuery1.Close;
ADOQuery1.SQL.Add('select * from 单选题');
ADOQuery1.Open;
v:=ADOQuery1.RecordCount;
p:=v+1;
Randomize;
setlength(A,p);
for  i:=1 to v do
  begin
   A[i]:=i;
  end;
for   i := 1 to 2 do
  begin
   J:= Random(v - I) + 1 ;
 with ADOQuery1 do
    begin
    Close;
    Sql.Clear;
    Sql.Add('insert into 考卷 (wt,daa,dab,dac,dad,da,lx) Select wt,daa,dab,dac,dad,da,lx from 单选题 where xh='''+inttostr(A[j])+'''');
    Execsql;
    end;
   A[J]:=A[v-i+1] ;
  end;

解决方案 »

  1.   

    应该是where xh='+inttostr(A[j])+'吧
      

  2.   

    inttostr(A[j])能正确取值吗?
      

  3.   

    ADOQuery1.Close;
    ADOQuery1.Clear;//增加这句
    ADOQuery1.SQL.Add('select * from 单选题');
    ADOQuery1.Open;
    v:=ADOQuery1.RecordCount;
      

  4.   

    应该是 ADOQuery1.sql.clear;
      

  5.   

    //用消息框打印插入语句, 看语句是否正确; 如果语句正确, 在查询分析器中执行, 看出错不
    如果异常捕获语句找到错误, 你就看看A[j]的值是否正确try
      showmessage('insert into 考卷 (wt,daa,dab,dac,dad,da,lx) Select wt,daa,dab,dac,dad,da,lx from 单选题 where xh='''+inttostr(A[j])+'''');
    except on e : exception do
      showmessage(e.message);
    end;
    {with ADOQuery1 do
        begin
        Close;
        Sql.Clear;
      
        Sql.Add('insert into 考卷 (wt,daa,dab,dac,dad,da,lx) Select wt,daa,dab,dac,dad,da,lx from 单选题 where xh='''+inttostr(A[j])+'''');
        Execsql;
        end;}
      

  6.   

    最好的方法是把你的sql 语句在open或者execSQl之前showmessage(sql.text),然后看看那里有错误,一清二楚