Private Sub Command1_Click(Index As Integer)Select Case Index   
    Case 3  ’刪除
            Dim YesNo As String
            
            
            If Command1(Index).Caption = "刪除(&D)" Then
               
               YesNo = MsgBox("您要刪除" + CStr(Mb.Text) + "的組裝排配記錄嗎?", vbYesNo + vbCritical, "警告")
               If YesNo = vbNo Then Exit Sub
                   cnn.Execute ("DELETE FROM DGMOCPPT WHERE convert(char(10),PS002,121)='" & Trim(Format(Mb.Text, "yyyy-mm-dd")) & "' ")
                RsVWPZ.Requery
            ElseIf Command1(Index).Caption = "放棄(&Q)" Then
                If RsVWPZ.RecordCount = 0 Then ClearRs 1  '當沒有記錄存在的情況下清空顯示
                EditCmd 2
            End If
        Case 4   ‘退出
            Unload Me
            
        Case 6  ‘導出excel
            WorkBusying
            ExportExcel RsVWPZ, TDB
            WorkNormal       End Select
End Sub
在我根據條件查詢出多筆數據后,點選其中一筆刪除。數據庫表中對應的也刪除掉該筆資料(表名DGMOCPPT)。TDBGrid
因為同一天,有白班夜班之分,所以如果按照時間刪除的話,可能把其他不該刪的刪掉了。希望能否在TDBGrid中選擇刪除行,點擊Command1(3)的時候,同時也刪除掉數據庫中對應的資料?

解决方案 »

  1.   

    既然知道按时间删,会把别的也删掉,那就不要按时间删除.
    TDBGrid不知道是什么控件,不熟悉 .
      

  2.   

    按记录内码删除即可,因记录内码不重复,不会错删.或者按时间删除时再加上上班条件判断
    cnn.Execute ("DELETE FROM DGMOCPPT WHERE convert(char(10),PS002,121)='" & Trim(Format(Mb.Text, "yyyy-mm-dd")) & "' and 上下班字段='" & s & "'")
    其中s表示是上班还是下班 
      

  3.   

    Private Sub TDBGrid1_DblClick()
    cnn.Execute ("delete  from DGMOCPI_S  where PI001='" & TDBGrid1.Columns(0).Value & "'  ")
         Call RefreshGrid("", TDBGrid1, clnDisplaySet, rstGrid, iSelectedRow)
            strRST_SQL = " select PI001,PI002,PI003,PI004,PI019,PI012,PI013 from DGMOCPI_S  order by PI001 "
     Call WorkBusying
            'strRST_SQL = strSQL_Get
            Set rstGrid = GetRst(strRST_SQL)
            Set TDBGrid1.DataSource = rstGrid
            Call RefreshGrid("", TDBGrid1, clnDisplaySet, rstGrid, iSelectedRow)
            Me.Refresh
            
    Call WorkNormal
    End Sub
    這是我在另外一個報表里用到的,當雙擊需要刪除的記錄時候就會刪除。我想把這段修改一下,當選擇后點擊Command1(3)時候只刪除這行的記錄。
      

  4.   

    Public RsVWPZ As New ADODB.Recordset 
    Private iSelectedRow As Integer                     '記錄選定的行Private Sub Command1_Click(Index As Integer)      Case 3
                Dim YesNo As String
                
                
                If Command1(Index).Caption = "刪除(&D)" Then
                   
                   YesNo = MsgBox("您確定刪除" + "'" & TDB.Columns(0).Value & "' 的組裝排配記錄?", vbYesNo + vbCritical, "警告")
                   If YesNo = vbNo Then Exit Sub
    cnn.Execute ("delete  from DGMOCPPT  where PT001='" & TDB.Columns(0).Value & "'and PT002='" & TDB.Columns(1).Value & "' and pt003='" & TDB.Columns(2).Value & "'and pt004='" & TDB.Columns(3).Value & "'and pt005='" & TDB.Columns(4).Value & "' and pt006='" & TDB.Columns(5).Value & "'  ")
         Call RefreshGrid("", TDB, clnDisplaySet, RsVWPZ, iSelectedRow)
            strRST_SQL = " select PT001,PT002,PT003,PT004,PT005,PT006,PT007,PT008,PT009,PT010,PT011,PT012,PT013,PT014 from DGMOCPPT  order by PT001 "
            Set RsVWPZ = GetRst(strRST_SQL)
            Set TDB.DataSource = RsVWPZ
            Call RefreshGrid("", TDB, clnDisplaySet, RsVWPZ, iSelectedRow)
            Me.Refresh
            
                    RsVWPZ.Requery
                ElseIf Command1(Index).Caption = "放棄(&Q)" Then
                    If RsVWPZ.RecordCount = 0 Then ClearRs 1 
                    EditCmd 2
                End If
            Case 4
                Unload Me
                
            Case 6
                WorkBusying
                ExportExcel RsVWPZ, TDB
                WorkNormal       End Select
    End Sub
    冒失可以刪除選定的記錄,但是不知道會不會出現問題,有沒有誰幫忙看下?
    數據我測了一筆,刪除之後數據庫中的也沒有了。