书籍管理:
1.在主窗体中有一个DBGrid,显示所有书籍(书号、书名和出版社字段)
2.点击DBGrid的某一行,弹出窗体2,显示这本书的具体信息
3.点击窗体2中出版商的名字,弹出窗体3,显示出版商的信息我的问题:
1.在窗体2中如何知道自己点的是哪本书,同样在窗体3中如何知道自己点的哪个出版商,具体代码应怎样写!(因为在主窗体中使用的adoquery的sql语句是联合查询,估计更麻烦一点)
2.在主窗体中除了DBGrid外还有一个TreeView,我想知道我点击了TreeView的哪一条,那一条是什么文字,可以通过读取什么属性获得?
3.数据库是Access,如果在主窗体中的DBGrid要实现20一页,提供翻页功能,应该怎么做?请各位达人指教,不胜感激!!

解决方案 »

  1.   

    1、根据数据库表的编号字段判断呀,比如ADOQuery.FieldByName('编号').AsString;
    2、TreeView.Selected.Text
    3、翻页没做过!
      

  2.   

    TreeView.Selected.Text得到TreeView的哪一条,那一条是什么文字
    3、翻页用Select Top 20 * from table ,以后根据条件用同样的办法翻页,每次用子查询,或者纪录下当前的编号,下次从这个编号开始显示
      

  3.   

    1.可以在窗体2和窗体3中申明一个窗体变量,然后在主窗体中传送过去就可以了。
    2.TreeView.Select.Text就可以了。
    3.用Top方法并不是很好,你可以用Ado的原生对象recordset的AbsolutePage、PageCount和PageSize就可以轻松实现分页功能了。
     adotable1.Recordset.PageSize := 20;//指定每页条数
     adotable1.Recordset.PageCount //返回所有数据除以PageSize之后的页数,只读
     adotable.Recordset.AbsolutePage :=1;//设置当前页码,可以改变这个值。
    但是要注意,这样后不能用DBGrid,如果用DBGrid就会全部显示出来,你可以用StringGrid,其实这个也是很好用的。如果不懂可以看看李维的《Delphi 5.x ADO/MTS/COM+高级程序设计篇》的第4章(好像是),这个电子书都好找。
      

  4.   

    你可以通过clientdateset实现对查询数据的保留,然后对这个数据集操作这样比较快 也编写起来比较方便,实现起来也容易
      

  5.   

    select top 20 from (select top 20* i from ... order by 编号 desc)
    i为页数
      

  6.   

    我认为这样做不太现实,除非你作成web形式,可以考虑,如果做成普通应用,恐怕就有问题了。
      

  7.   

    1、
    你在点击某条记录的时候,焦点已经落在该条记录上,所以只要取出该记录对应的字段的值就可以了,比如:ADODataSet1.FieldValue['某个字段名']2、
    TreeView.Selected.Text3、可以在表中加一个递增编号字段(编号要有规律),翻页的时候只要改变数据集(SQL语句)就可以了,如:
      select * from 表 where 编号 between 数1 and 数1+19
    具体要看自己怎么定义字段。
      

  8.   

    1,焦点得到是当前记录。
    2,treeview.selected.text.