我试了。你可以这样做: 打开记录集时不要查询出ID号,就可以。 SELECT 产品ID,品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品 (不可以) SELECT 产品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品 (可以)
感谢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值赋于到此列上。希望继续加以讨论
SELECT 产品ID,品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品 (不可以)
SELECT 产品名称, 供应商ID, 类别ID, 单位数量, 单价 FROM 产品 (可以)
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值赋于到此列上。希望继续加以讨论
用这种方法时,如果是多台机器同时操作数据时,容易有主键冲突的问题吧。
-----------
.Text = Date??
你将这一列设为日期型后还是不可以吗?
或者 .text = format(date,"yyyy-mm-dd") ?