我想取的listview中的选中的I行A列的内容来索引,但在SQL语句中总是通不过,在最后时编译即有问题了,代码如下,不知为何  
procedure  Tmainpagefrm.N22Click(Sender:  TObject);  
var  
i:integer;  
begin  
usemesfrm.ShowModal;  
with  mindatamodule.adoqrycustlist  do  
begin  
listview1.ItemIndex:=i;  
close;  
sql.Clear;  
sql.Add('select  *  from  tcustomer  where  cust_no='+quotedstr(listview1.Items[i].SubItems.Strings[2]);  
open;  
first;  
usemesfrm.Edit1.Text:=fieldbyname('cust_no').AsString;  
....  
end;  end;  
 
end.  

解决方案 »

  1.   

    showmessage()一下你生成的SQL语句看看
      

  2.   

    根本就过不去,怎么来showmessage().
      

  3.   

    sql.Add('select  *  from  tcustomer  where  cust_no='+quotedstr(listview1.Items[i].SubItems.Strings[2]); 后面烧了一个括号
      

  4.   

    现在我查了一下,主要是和数据表的使用相冲突,
    procedure  Tmainpagefrm.N22Click(Sender:  TObject);  
    begin
    showmessage(listview1.items[listview1.selected.index].subitems.stings[1])
    end;
    end;
    是可以的,并可以得到数据,但是只要加入with  mindatamodule.adoqrycustlist  do 后,就没有办法取到 [listview1.selected.index]中的index的属性了,所以也就编译不下去
      

  5.   

    我把代码改成这样,虽则可编译了,但是很明显selstr字段没有被接受,所以无法在后面的edit.text中显示索引的相关的数据,在这种情况下,是不是只能从listview中取值,而不能从数据表中取,那要是listview中没有的数据怎么办。请问那一位高手能解释一下,这是什么原因吗?
    procedure Tmainpagefrm.N22Click(Sender: TObject);
    var
    selstr:string;
    begin
    listview1.Items[listview1.Selected.Index].SubItems.Strings[0]:=selstr;
    usemesfrm.ShowModal;
    begin
    with mindatamodule.adoqrycustlist do
    begin
    close;
    sql.Clear;
    sql.Add('select cust_no,cust_name,cust_bp,bp_type,reg_date,unreg_date,cust_psw,mobile,email,zjid,ktsvr from tcustomer where cust_no='+quotedstr(selstr));
    open;
    usemesfrm.Edit1.Text:=fieldbyname('cust_no').AsString;
    usemesfrm.Edit2.Text:=fieldbyname('cust_name').AsString;
    usemesfrm.Edit3.Text:=fieldbyname('cust_bp').AsString;
    if fieldbyname('bp_type').AsString='w' then
      checkbox1.Checked:=true
      else
      checkbox2.Checked:=true;
    usemesfrm.MaskEdit1.Text:=fieldbyname('reg_date').AsString;
    usemesfrm.MaskEdit2.Text:=fieldbyname('unreg_date').AsString;
    usemesfrm.Edit7.Text:=fieldbyname('cust_psw').AsString;
    usemesfrm.Edit8.Text:=fieldbyname('cust_psw').AsString;
    usemesfrm.Edit9.Text:=fieldbyname('mobile').AsString;
    usemesfrm.Edit10.Text:=fieldbyname('email').AsString;
    usemesfrm.Edit11.Text:=fieldbyname('zjid').AsString;
    usemesfrm.ComboBox1.Text:=fieldbyname('ktsvr').AsString;
    end;
    end;
    end;
      

  6.   

    不好意思!自已犯忌了一个极其低级的错误,selstr赋值错误,应放于前面结果放到后面了,现在可以了。