首页 > 解决方案 > 使用数据集结果执行非查询问题

问题描述

我有一个有趣的项目,其中涉及 VB.net winform 应用程序。此应用程序将数据集用于表单。Shift_Log (SL)、Problem_Log (PL) 和 Service_Request (SR) 将影响三个表。如果用户更改(SL)上的日志日期,使(PL)不再与错误时间一致。我需要从 (PL) 和 (SR) 表中删除外键。我还没有测试过这个。在我做之前我有几个问题。

  1. 如果在第二个 update (SR)sql 命令中没有要更新的记录怎么办?

  2. 执行此操作后是否需要刷新数据集。

     Public Function UPD_PL_Check(ByVal Shift_Key As String, ByVal SL_Begin As DateTime, SL_End As DateTime) As Integer
    
     ' Get rows from Laser Status Info
     Dim query As String = "SELECT Status_Key FROM [dbo].[Laser_Status_Info]  " &
                 " WHERE [Shift_FKey] = " & Shift_Key &
                 " AND [Err_time] NOT Between " & SL_Begin & " AND " & SL_End & ";"
    
     Dim dt As DataTable = New DataTable()
     Using conn As SqlConnection = New SqlConnection(My.Settings.LaserMaintLogConnectionString)
         conn.Open()
         Try
             Dim da As SqlDataAdapter = New SqlDataAdapter(query, conn)
             da.Fill(dt)
         Catch ex As Exception
             MessageBox.Show("Error occured! : " & ex.Message)
         Finally
             conn.Close()
         End Try
     End Using
    
     Dim rowsAffected As Integer = dt?.Rows.Count
    
     If rowsAffected = 0 Then Return rowsAffected
    
     ' Update the Problem log
     For Each i In dt?.Rows
         Using conn As SqlConnection = New SqlConnection(My.Settings.LaserMaintLogConnectionString)
             conn.Open()
             Dim Status_Key As String = dt.Rows(i)("Status_Key")
             Try
                 Dim PL_query As String =
                  "UPDATE [dbo].[Laser_Status_Info] " &
                  "   SET [Shift_FKey] = '' " &
                  " WHERE [Status_Key] = '" & Status_Key & "';"
                 Using Cmd As New SqlCommand(query, conn)
                     rowsAffected = Cmd.ExecuteNonQuery()
                 End Using
    
             Catch ex As Exception
                 MessageBox.Show("Error occured! : " & ex.Message)
             End Try
    
             ' Update Service request
             Try
                 Dim PL_query As String =
                  "UPDATE [dbo].[Laser_Maint_Log] " &
                  "   SET [SR_Shift_Key] = '' " &
                  " WHERE [SR_Status_Key] = '" & Status_Key & "';"
                 Using Cmd As New SqlCommand(query, conn)
                     rowsAffected = Cmd.ExecuteNonQuery()
                 End Using
             Catch ex As Exception
                 MessageBox.Show("Error occured! : " & ex.Message)
             End Try
             conn.Close()
         End Using
     Next
    
     Return rowsAffected
    

    结束功能

标签: vb.netwinforms

解决方案


推荐阅读