我在做一个图书销售管理系统,后台数据库为Acess 2000 ,数据库连接用ADO
-------------------------------------------------------------------
其中,我用ADOCnnection连接数据库(BookShop),而其他的控件(ADOQuery,ADOTable等)则与之相连。
我有这样一段代码,怎么调都通不过:
.......ADOConnection1.open;
if ADOConnection1.connected=true then
  showmessage('数据库已打开‘);
ADOTable1.connection:=ADOConnection1;
ADOTable1.tablename:='Book';//Book为数据库中的一个表,图书库存表
ADOTable1.open;
ADOTable1.first;
while not ADOTable.eof do
 begin
   combobox1.items.add(ADOTable['Name'].value;
    ADOTable1.next;
 end;
ADOTable1.close;
--------------------------------------------------------------------
调试结果:
  运行后,系统提示’数据库已打开‘,但是,combobox1中无任何东西,而BOOk表中有3条记录,
我不知是怎么一回事,希望高手帮忙!谢谢!

解决方案 »

  1.   

    //加上下面这句先清空ComboBox中的项目:
    combobox1.items.clear;
    while not ADOTable.eof do
     begin
    //下面的这句你写掉了后括号:
       combobox1.items.add(ADOTable['Name'].value);
        ADOTable1.next;
     end;
      

  2.   

    可是,程序运行时,Combobox中并无项啊,items为空,也需要清空吗?
      

  3.   

    你可以先做个调试用的,比方说在combobox1的赋值语句前加一个变量,把从table读出的值赋给它,然后看看能不能从数据表里面读出值来,然后再赋值,不用把combobox1清空的,没有必要,尤其使你首次赋值的时候,如果进行二次赋值的时候才需要清空。
      

  4.   

    //加上下面这句先清空ComboBox中的项目:
    combobox1.items.clear;
    while not ADOTable.eof do
     begin
    //下面的这句你写掉了后括号:
       combobox1.items.add(trim(ADOTable.fieldbyname('name').asstring));
        ADOTable1.next;
     end;
    用这句代码调试看看,或者你在combobox1的dropdown事件里面写上这段代码,也可。
      

  5.   

    //加上下面这句先清空ComboBox中的项目:
    combobox1.items.clear;
    while not ADOTable.eof do
     begin
    //下面的这句你写掉了后括号:
       combobox1.items.add(trim(ADOTable.fieldbyname('name').asstring));
        ADOTable1.next;
     end;
    你试试吧
      

  6.   

    需要对combobox1进行初始化,在你进行循环前必须这样即combobox1.items.clear;