设置DataGrid控件绑定ADO,连接数据库时,设置DataGrid控件为AllowAddNew=ture 时,每添加一行后,需要单击当前行的上边的任意行,才能更新,添加成功,自动添加一新的空白行,否则单击其他地方添加不了数据,添加行仍为空,并不自动添加一空白行。请问如何解决?
也就是,添加数据后,如何让DataGrid控件自动执行而不需要鼠标单击而自动添加成功,生成一新空白行?例如用回车控制?

解决方案 »

  1.   

    可在增加下面语句:
    Private Sub DataGrid1_OnAddNew()
            KEYKK = KEYKK + 1
       On Error GoTo AddErr
      With adoPrimaryRS
        If Not (.BOF And .EOF) Then
          mvBookMark = .Book
        End If
        .AddNew
        lblStatus.Caption = "添加记录"
        mbAddNewFlag = True
        DataGrid1.Columns(0) = " "
        DataGrid1.Col = 0
        DataGrid1.SetFocus
        adoPrimaryRS!ID = KEYKK
      End With
      Exit Sub
    AddErr:
      MsgBox Err.Description
    End Sub
      

  2.   

    lblStatus 是什么?adoPrimaryRS!ID 呢?是不是第一个字段名?还有adoPrimaryRS?
      

  3.   

    还有 mbAddNewFlag ?mvBookMark?
      

  4.   

    Private Sub Form_KeyPress(KeyAscii As Integer)
        If KeyAscii = vbKeyReturn Then
            Adodc1.Recordset.MoveFirst
            Adodc1.Recordset.MoveLast
        End If
    End SubPrivate Sub Form_Load()
        Me.KeyPreview = True
    End Sub
      

  5.   

    调试过,还是不行。我想实现的功能是,DataGrid控件允许 AllowAddNew=ture 时,在其空白的最后一行添加数据后,直接存储该数据,并自动生成一个新空白行。(现在的情况是,只能鼠标单击 DataGrid控件 的任意一行(在当前行的上部),就能更新数据库,存储新数据,更新DataGrid控件,并生成新的空白行)   
    这样有的太不方便了,是否可以实现 按‘回车’键,或鼠标单击窗体或其他控件的任意位置,就能实现存储数据,更新DataGrid控件,生成新空白行呢?
      

  6.   

    Set adoPrimaryRS = New ADODB.Recordset
         adoPrimaryRS.Open "SHAPE {select 标志,章号,序号,项目名称,单位,工程量,砼,分析,基价,合计,人工单价,人工合计,机械单价,机械合计,地区单价,地区合计,换算,章序号,工程名称,文件号,编制单位,年度标志,ID from demo ORDER BY 材机库ID} AS ParentCMD APPEND ({select 代号,材机名称,单位,材机单价,材机数量,材机库ID from 材机库 ORDER BY 代号} AS ChildCMD RELATE ID TO ID) AS ChildCMD", db, adOpenStatic, adLockOptimistic
    你如果用数据库自动形成被称为窗体,以上就全明白了。
    [email protected]