请问怎么在DBGridr的第一列输入编号时自动把名称,规格,数量,单价显示出来,还是用其它控件,多谢帮忙!如下:
 ------------------------------------------
 |编号 | 名称  | 规格  | 数量  | 单价  | 
 ------------------------------------------
 |001  | 主板  |Inter845 | 1     | 420   |
 ----------------------------------------- 
 |     |       |         |       |         |    
 -----------------------------------------

解决方案 »

  1.   

    通过计算字段
    1、sql语句写成:select bianhao from 表名
    2、在邦定的query1上增加计算字段mingcheng,guige,shuliang,danjia
    3、在query1的OnCalcFields事件中再用另一个query2通过编号(query1bianhao.value)查询另外四个字段的值,分别符值到计算字段mingcheng,guige,shuliang,danjia中
      

  2.   

    4、dbgrid就直接引用query1上的字段bianhao和计算字段mingcheng,guige,shuliang,danjia
      

  3.   

    这样的功能我做过,大至的路子是这样的, 你在窗体上放一个Tedit,
       然后在Dbgrid里的DBGrid1DrawDataCell重定位Tedit,并显示,
       并让其有焦点,在Tedit里输入文本,当回车时处理数据
       (可能你还要做些别的处理,才能使它的效里跟你说的一样,此法是可行的
        我以前做进销存里就用过)
        你按这个方法试试。
      

  4.   

    也就是说,让你的Tedit和你的cell大小一样,镶嵌到dbgrid的第一列里,不就能输入
       并且能写事件,并实现你所说的那样功能
      

  5.   

    可以考虑 jin_zai(进仔) 的方法用计算字段。
    也可以用LookupField。使用字段编辑器,很方便的。
      

  6.   

    编号,名称,规格,数量,单价建成一个对照表,设置成QRY1,
    然后打开DBGrid后台数据集,右击,'new fields',在出现对话框中输入新建名称代码,不要忘了Field type选中Lookup,接着,在lookup definition设置与QRY1相对应;规格,数量,单价如此反复
      

  7.   

    用SQL简单些吧
    select 'fieldname' from table
    union
    (select fieldname from table)
      

  8.   

    TO: zcfzcf001
    如果我要按回车跳到下一行时那就不能实现了。可否有更好的办法!
      

  9.   

    我觉得大家的讲法没有切中要害,要是grid中有多行记录怎么办?比如获至100或者不定。
    在VFP中和VB中可以实现的功能难道在D中就不能实现吗?
      

  10.   

    在query中加入lookup型的字段,把他用编号和商品信息表连起来就行了
      

  11.   

    ujjcel() :在表格中定义好LookupField或者计算字段,不用任何设置DBGrid就可以实现了。不过你如果使用的是冗余字段,而不用LookupField或者计算字段,那就要用自己的代码去实现赋值,用到的事件我想是在BeforePost吧。不提倡这种做法。
      

  12.   

    补充一下,用BeforePost我是指在存盘前给冗余字段赋值。
    显示的时候还是用LookupField比较好,可以一输入就看到显示效果。说的有点乱,看你的理解了。
      

  13.   

    在第一个字段的OnChange中写事件查出数据啊。procedure TForm1.Query1Field1Change(Sender: TField);
    var
      tmp: string;
    begin
      tmp:=Sender.FieldByName('Field1').AsString;
      //去查查询数据
      Query1.Edit;
      Query1['带出字段1']:=QryTmp.FieldByName('aaa').AsString;
      //...
    end;