在数据库中取出几个定义了坐标的点,把这几个点的名称同时显示在图片上,我的代码如下,
但是image1.Canvas.TextOut(x ,y,name)没有输出,x,y,name都没取到值 
请帮我看看是什么原因,怎么改procedure TForm3.Button1Click(Sender: TObject); 
var i:integer; 
name:string; 
x:integer; 
y:integer; 
di:integer; begin 
  query1.Close; 
  query1.SQL.Clear; 
  query1.SQL.Add('select max(id) as id  from ip.db '); 
  query1.Open; 
  di:=query1.fieldbyname('id').AsInteger; 
  edit2.Text:= query1.fieldbyname('id').Asstring; //id有值输出
  for i:=0 to di do //这个好象不能把所有点同时显示在图片上,循环一次就覆盖了以前的点
begin     query2.Close; 
    query2.SQL.Clear; 
    query2.SQL.Add('select *  from ip.db where id=''i'''); 
    query2.Open; 
    name:=query2.fieldbyname('名称').AsString; 
    x:= query2.fieldbyname('x').AsInteger; 
    y:=query2.fieldbyname('y').AsInteger;
    edit3.Text:= query2.fieldbyname('名称').AsString; //没有输出
    image1.Canvas.TextOut(x ,y,name); 
  end; end; 

解决方案 »

  1.   

    procedure TForm3.Button1Click(Sender: TObject); 
    var i:integer; 
    name:string; 
    x:integer; 
    y:integer; 
    di:integer; begin 
      query1.Close; 
      query1.SQL.Clear; 
      query1.SQL.Add('select max(id) as id  from ip.db '); 
      query1.Open; 
      di:=query1.fieldbyname('id').AsInteger; 
      edit2.Text:= query1.fieldbyname('id').Asstring; //id有值输出
      for i:=0 to di do //这个好象不能把所有点同时显示在图片上,循环一次就覆盖了以前的点
    begin     query2.Close; 
        query2.SQL.Clear; 
        //query2.SQL.Add('select *  from ip.db where id=''i'''); 
        query2.SQL.Add('select *  from ip.db where id='+IntToStr(i)); 
        query2.Open; 
        name:=query2.fieldbyname('名称').AsString; 
        x:= query2.fieldbyname('x').AsInteger; 
        y:=query2.fieldbyname('y').AsInteger;
        edit3.Text:= query2.fieldbyname('名称').AsString; //没有输出
        image1.Canvas.TextOut(x ,y,name); 
      end; end; 
      

  2.   

    'select *  from ip.db where id=''i'''//这个有问题吧
    Id字段到底是INT,还是VARCHAR没看懂
      

  3.   

    按unsigned 的修改了 可是出现
    type mismatch in expression 这是哪个字段不匹配
      

  4.   

    query2.SQL.Add('select *  from ip.db where id='''+IntToStr(i)+'''');
    试试可能你的id字段是字符型的
      

  5.   

     query2.SQL.Add('select *  from ip.db where id='+IntToStr(i)); 
     query2.Open;//调试到这里就提示 type mismatch in expression
     name:=query2.fieldbyname('名称').AsString;
     x:=query2.fieldbyname('x').AsInteger;
     y:=query2.fieldbyname('y').AsInteger;
     image1.Canvas.TextOut(x,y,name);
      

  6.   

    那看来你的ID字段是VARCHAR
    'select *  from ip.db where id='''+IntToStr(i)+'''');