Private Sub Command4_Click() '删除钮
Dim DelRecord As Integer
Dim i As Integer
Dim tmp As Integer
Dim sql As StringDelRecord = MsgBox("确定要删除这批数据吗?", vbQuestion + vbYesNo, "删除记录")
If DelRecord = vbYes Then
   
   If Row_Top > Row_Down Then
      tmp = Row_Top
      Row_Top = Row_Down
      Row_Down = tmp
   End If   cn.BeginTrans
      For i = Row_Top To Row_Down
           If grid(i, GridCol_0) <> "" Then
            Read_Io_Detail i
            If rs2![RecCount] > 0 Then
               MsgBox "目前出货单尚有第" & i & "列的产品数据,因此该列数据暂不接受删除的动作", vbOKOnly + vbCritical, "删除警告信息"
            Else
               sql = "delete from product where prd_no= & grid(i, GridCol_0) "
               cn.Execute sql
            End If
         End If
      Next
   cn.CommitTrans   
   rs1.Requery
   If rs1.RecordCount > 0 Then
      rs1.MoveFirst
   End If
   
   DisplayRecord
   Initial_Button
   
   rs2.Close
   Set rs2 = Nothing
   
   
End If  
End SubPublic Sub Read_Io_Detail(ByVal r As Integer)
Dim sql As String
'MsgBox grid(r, GridCol_0)
sql = "select count(io_del_detail.csh_no) as RecCount"
sql = sql & " from (io_del_detail inner join io_del on io_del_detail.csh_no=io_del.csh_no) inner join product on product.prd_no=io_del_detail.prd_no"
sql = sql & " where io_del_detail.prd_no=" & grid(r, GridCol_0)Set rs2 = New Recordset
rs2.CursorLocation = adUseClient
rs2.Open sql, cn, adOpenStatic, adLockOptimistic, adCmdTextMsgBox rs2.RecordCountEnd Sub
其中:grid(i, GridCol_0)是指msflexgrid控件的第i行第0列的值(GridCol_0=0)我是在一本书上看到的该行代码,其中删除记录这部分不同(就是选定了要删除的列后,按“删除”钮,msflexgrid的数据并没有删除)。看了半天,也找不到原因。请教请教!

解决方案 »

  1.   

    msflexgrid.row返回当前行(focus所在行)
    i=msflexgrid.row
    msflexgrid.removeitem i
    删除第i行
      

  2.   

    同理,msflexgrid.col返回的是列号
    msflexgrid.clear是清空所有内容
      

  3.   

    msflexgrid.row返回当前行(focus所在行)
    i=msflexgrid.row
    msflexgrid.removeitem i
    删除第i行循环
      

  4.   

    谢谢taosihai1only(我是菜鸟,我怕谁)大侠的答复!
    请教:如果是点击一行,上面的代码就可以了,但要是点击选中了多行,在删除了当前行后,怎么让下一行或者上一行是当前行?(这样才能循环哦)谢谢先!