用listctrl做数据的现实ADO操作+acess数据库(Provider=Microsoft.Jet.OLEDB.4.0)增、删、改操作都实现了但不知道为什么每次用的时候第一次操作总是不能直接刷新数据甚至有时候要2~3次后才更新数据到listctrl(我弄了刷新。。在增、删、改操作后调用查询语句更新数据)是access的事务提交么、延迟??有什么办法解决?网上搜了下,有提到ADOQuerry,貌似没看到具体的介绍之类

解决方案 »

  1.   

    甚至有时候要2~3次后才更新数据到listctrl这个看不懂?远程的啊?
      

  2.   

    以前使用ACCESS也发现有滞后的问题,每次独立访问后就正常了,不知道能否解决你的问题
      

  3.   

    这有个例子你可以参考一下
    http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
      

  4.   

    void CDLG_EditGroup::OnEdit() //修改按钮
    {
    CString sql;
    CGroup group;          //数据对象
    CDB_Group DB_Group;  //数据库操作类

    UpdateData(TRUE);
    group.SetID(m_id);
    group.SetName(m_name);
    group.SetGroupManager(m_manager);
    group.SetGroupInfo(m_info);   //已更改的数据对象
    DB_Group.DB_UpData(group);    //数据库更新(ADO)

    sql="select * from t_group";
    ((CDLG_Group *)(this->GetParent()->GetParent()))->ShowList(sql);//更新list
    m_id=-1;
    m_info="";
    m_manager="";
    m_name="";
    UpdateData(FALSE);
    }过程是点击对话框的更新按钮,将更新后的数据同步更新到List显示
      

  5.   

    listctrl数据是不会自动更新的
    比如你删除了一条记录
    再成功实现数据库的操作之后要在listctrl里把这条item也delete掉
      

  6.   

    void CDLG_Group::ShowList(CString sql)
    { DB_Group.v_Group.clear();
    DB_Group.DB_Sel(sql);

    // m_OrderList.SetItemState(0,~LVIS_SELECTED,0);
    m_ListCtl.DeleteAllItems();
    for(int i=0;i<DB_Group.v_Group.size();i++)
    { CString id,time;
    time=DB_Group.v_Group[i].GetTime();
    time.Format("%04d-%02d-%02d %02d:%02d:%02d",(DB_Group.v_Group[i].GetTime()).GetYear(),
    (DB_Group.v_Group[i].GetTime()).GetMonth(),(DB_Group.v_Group[i].GetTime()).GetDay(),
    (DB_Group.v_Group[i].GetTime()).GetHour(),(DB_Group.v_Group[i].GetTime()).GetMinute(),
    (DB_Group.v_Group[i].GetTime()).GetSecond());

    id.Format("%d",DB_Group.v_Group[i].GetID());
    m_ListCtl.InsertItem(i,id);
    m_ListCtl.SetItemText(i,1,DB_Group.v_Group[i].GetName());
    m_ListCtl.SetItemText(i,2,time);
    m_ListCtl.SetItemText(i,3,DB_Group.v_Group[i].GetGroupManager());
    m_ListCtl.SetItemText(i,4,DB_Group.v_Group[i].GetGroupInfo()); }

    m_ListCtl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
    UpdateData(FALSE);}有删除item的