W
weibinggui
Unregistered / Unconfirmed
GUEST, unregistred user!
刚接触DEPHI没多久,在处理多级表的时侯老是出错,下面的问题请大家帮我看看该如何改。我有两三个表,M ,D1,D1_D1,在界面的ONSHOW事件里,中取得数据。<br>//取子表信息:<br>with Adoquery_d1 do<br> begin<br> close;<br> sql.Clear ;<br> sql.Add('select * from d1 where zbxh=' + quotedstr(intTostr(clientdataset_M.fieldbyname('xh').AsInteger)));<br> open;<br> end;<br> clientdataset_d1.Close ;<br> clientdataset_d1.Open ;<br>//取孙表信息!<br> with Adoquery_D1_D1 DO<br> begin<br> close;<br> sql.Clear ;<br> sql.Add('select * from d1_d1 where zbxh in <br> (select xh from d1 where zbxh = '<br> + Quotedstr(intTostr(clientdataset_m.fieldbyname('xh').AsInteger)) + ')' <br> open;<br> end;<br> cds_SC_ZBZYD_d1_d1.Close ;<br> cds_SC_ZBZYD_d1_d1.Open ;<br><br>下面是我地dbgrod的,rowchange事件中加入的过滤代码。<br> <br> cds_sc_zbzyd_d1_d1.Filtered :=false;<br> cds_sc_zbzyd_d1_d1.Filtered :=true;<br> cds_sc_zbzyd_d1_d1.Filtered :=false;<br> cds_sc_zbzyd_d1_d1.Filter :='zbxh=' <br> + IntTostr(clientdataset_d1.fieldbyname'xh').AsInteger);<br> cds_sc_zbzyd_d1_d1.Filtered :=true;<br>问题:<br>但是在运行时,只要d1中按向下方向键,增加一行时,就会出现,“at beginning of tabel ”的报错,代码放在其它的事件中又不能解决只孙表d1_d1只显示子表D1中的当前记录计录。<br>因为是看书自学,没有人指导,代码是按自已想的写出来的,如何改进,也希望大家给点意见。大虾们如果有这一块的书,能介绍几本吗?很多时侯都找不着头绪,我AODQUERY 和CLIENTDATASET这样用是不是错的,该如何用!