3个listbox,一个显示用户名(listbox1),一个显示某个用户所具有的权限(listbox2),一个显示某个用户不具有的权限(listbox3).为了方便,可以把某个用户没有具有的权限全部赋予给该用户.问题出来了,怎么把该用户所不具有的权限一次的赋予给他了?而且listbox3中只显示了给用户不具有权限的权限名,怎样才能把该权限的权限名及权限ID存入数据库,listbox3中显示的项目数不定.我写的程序如下
procedure  TForm4.BitBtn2Click(Sender:  TObject);  
var  
i:integer;  
begin  
for  i:=ListBox3.Count-1  downto  0  do  
     begin  
     ListBox2.Items.Add(ListBox3.Items[i]);  
 
     adoquery4.SQL.clear;  
     adoquery4.SQL.Add('select  *  from  sym_role  where  rolename="'+trim(listbox3.Items[listbox3.itemindex])+'"');  
     adoquery4.Open;  
     if  adoquery4.RecordCount  <>0  then  
     begin  
     with  adoquery4  do  
     begin  
     adoquery3.sql.Clear  ;  
     adoquery3.SQL.Add('insert  into  sym_userrole(userid,roleid,username,rolename)  values("'+edit2.text+'","'+adoquery4.fieldbyName('roleid').asstring+'","'+edit1.text+'","'+adoquery4.fieldbyName('rolename').asstring+'")');  
     adoquery3.ExecSQL  ;  
     end;  
     end;  
     end;  
listbox3.Items.Clear  ;    //如果确实需要  
end;  
为什么总是提醒"list  index  out  of  bound(-1)",而且存不进数据库  
谢谢解答 ,在线等 

解决方案 »

  1.   

    出现"list  index  out  of  bound(-1)",是因为你的listbox的item越界了,也就是如果listbox里面只有2个ITEM,你却读取第3个,就会出现"list  index  out  of  bound(-1)"提示。
    至于你自己的代码,你自己看看哪里导致这个越界情况吧。
      

  2.   

    表sym_userrole的字段数是否有问题,试:add fields...
      

  3.   

    adoquery4.SQL.Add('select  *  from  sym_role  where  rolename="'+trim(listbox3.Items[listbox3.itemindex])+'"');  
    这句错误。
    当你的ListBox3没有选中任何项目的时候,ItemIndex为-1,所以会出现下标溢出。
    看你的程序逻辑应该改成:
    adoquery4.SQL.Add('select  *  from  sym_role  where  rolename="'+trim(listbox3.Items[i])+'"');