如题

解决方案 »

  1.   

    是啊,关联一个ADO的RS,datagrid就不存在,自动编号字段编号可以不管,但我在用fpspread控件时,只要set fpspread1.datasouce=rs后,自动编号ID字段就会在fpspread网格里出现,但是它却不会自动设置值,不如不设值就不能新增记录,郁闷
      

  2.   

    我试了。你可以这样做: 打开记录集时不要查询出ID号,就可以。
    SELECT 产品ID,品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品  (不可以)
    SELECT 产品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品       (可以)
      

  3.   

    感谢fredlin兄的智慧,一个很巧妙的方法,就象DATAGRID一样不管它就行,在此之前,我暂用的一个笨办法就是:取得一个即将生成的新ID号赋值到变量NewID
    Private Sub fpSpread1_LeaveCell(ByVal Col As Long, ByVal Row As Long, ByVal NewCol As Long, ByVal NewRow As Long, Cancel As Boolean)
      With fpSpread1
        .Row = NewRow
        .Col = 1
        If .Text = "" Then 
          .Text = NewID
          NewID=NewID+1
        End If
      End With
    End Sub
    当然此ID列被隐藏,这种方法也适应于在用网格做记录编辑器时,要新增一条记录而某一列的值是固定死了不能让客户编辑的,但却要自动新增一个日期型字段却怎么也不行,如.Text = Date,却不会将Date值赋于到此列上。希望继续加以讨论
      

  4.   

    NewID=NewID+1
    用这种方法时,如果是多台机器同时操作数据时,容易有主键冲突的问题吧。
    -----------
    .Text = Date??
    你将这一列设为日期型后还是不可以吗?
       或者   .text  = format(date,"yyyy-mm-dd")   ?