You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET文本框自动搜索问题:未找到结果时恢复自动ID框默认值

问题解决:未找到匹配结果时恢复自动生成ID文本框的默认值

核心问题定位

你的代码在未找到匹配供应商的Else分支里,只清空了地址、州、GST号的文本框,但没有处理txtvendorid_frmvdt的默认值恢复,这就是它没法回到初始状态的原因。另外代码还有几个潜在问题,比如SQL注入风险、多余的执行语句、资源未妥善释放。

解决方案及修正后的代码

下面是修复后的完整代码,同时解决了潜在问题:

Private Sub txtvendorname_frmvdt_TextChanged(sender As Object, e As EventArgs) Handles txtvendorname_frmvdt.TextChanged
    Try
        ' 使用Using语句自动释放数据库连接、命令、阅读器资源
        Using conn95 As New SqlConnection("你的数据库连接字符串")
            conn95.Open()
            ' 参数化查询,彻底避免SQL注入
            Dim qryvi As String = "select * from tblvendorinfo where Vendorname = @VendorName"
            Using cmdcu As New SqlCommand(qryvi, conn95)
                cmdcu.Parameters.AddWithValue("@VendorName", txtvendorname_frmvdt.Text)
                
                ' 移除多余的ExecuteNonQuery(),ExecuteReader会直接执行查询
                Using drvi As SqlDataReader = cmdcu.ExecuteReader()
                    If drvi.Read() Then
                        ' 找到匹配项,填充字段
                        txtvendorid_frmvdt.Text = drvi("Vendorid").ToString()
                        txtvendoraddress_frmvdt.Text = drvi("Vendoraddress").ToString()
                        txtvendorstate_frmvdt.Text = drvi("Vendorstate").ToString()
                        txtvendorgst_frmvdt.Text = drvi("Vendorgstno").ToString()
                    Else
                        ' 未找到匹配项,清空所有字段并恢复ID文本框默认值
                        txtvendorid_frmvdt.Text = "" ' 若默认值是自动生成的,可替换为你的生成逻辑(比如Loadvendorid1()核心代码)
                        txtvendoraddress_frmvdt.Text = ""
                        txtvendorstate_frmvdt.Text = ""
                        txtvendorgst_frmvdt.Text = ""
                    End If
                End Using
            End Using
        End Using
        
        ' 若Loadvendorid1()是自动生成默认ID的方法,可按需调整调用时机(比如仅在Else分支调用)
        Loadvendorid1()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

关键修改说明

  1. 恢复ID文本框默认值:在Else分支中添加了txtvendorid_frmvdt.Text = "",如果你的默认值是自动生成的(比如Loadvendorid1()负责生成),可以把这行替换为直接调用生成逻辑,确保ID框回到初始状态。
  2. 避免SQL注入:把拼接字符串的查询改成参数化查询,防止恶意输入破坏数据库。
  3. 资源自动释放:用Using语句包裹连接、命令和阅读器,确保即使发生异常,资源也能正确释放,避免连接泄漏。
  4. 移除冗余代码:删掉了没用的cmdcu.ExecuteNonQuery(),因为ExecuteReader已经会执行查询操作。

内容的提问来源于stack exchange,提问作者Gopal Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:20:30