以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL的替换问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131913)

--  作者:hongyefor
--  发布时间:2019/3/8 21:39:00
--  SQL的替换问题

Dim zw1 As WinForm.DropDownBox = e.Form.Controls("DropBox1")
Dim cw1 As WinForm.DropDownBox = e.Form.Controls("DropBox2")
Dim zw2 As WinForm.DropDownBox = e.Form.Controls("DropBox3")
Dim cw2 As WinForm.DropDownBox = e.Form.Controls("DropBox4")
Dim szw1 As String = zw1.text
Dim scw1 As String = cw1.text
Dim szw2 As String = zw2.text
Dim scw2 As String = cw2.text
Dim sa1 As String = "A01"
Dim sa2 As String = "A02"
Dim fsc As String = "发票认证"
Dim ssw As String = "文件夹设置"
Dim lst As List(Of String)
lst = Connections("彬阳数据").GetTableNames
If lst.Contains(ssw) = False Then
    Dim Builder As New ADOXBuilder("彬阳数据") \'要指定数据源名称
    Dim tbl As ADOXTable
    Builder.Open()
    tbl = Builder.NewTable("文件夹设置") \'创建表
    With tbl
        .AddColumn("执行编号" ,ADOXType.String, 50)
        .AddColumn("分类" ,ADOXType.String, 60)
        .AddColumn("主文件夹目录" ,ADOXType.String, 120)
        .AddColumn("次文件夹目录" ,ADOXType.String, 120)
    End With
    Builder.AddTable(tbl, True, True) \'增加表
    Builder.Close()
    Dim cmd As new SQLCommand
    cmd.C
    If szw1 IsNot Nothing Then
        If scw1 IsNot Nothing Then
            cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
            cmd.Parameters.Add("@执行编号","A01")
            cmd.Parameters.Add("@分类","发票认证")
            cmd.Parameters.Add("@主文件夹目录",szw1)
            cmd.Parameters.Add("@次文件夹目录",scw1)
        Else
            cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
            cmd.Parameters.Add("@执行编号","A01")
            cmd.Parameters.Add("@分类","发票认证")
            cmd.Parameters.Add("@主文件夹目录",szw1)
        End If
    End If
    cmd.ExecuteNonQuery
    cmd.Parameters.Clear
    If szw1 IsNot Nothing Then
        If szw2 IsNot Nothing Then
            If scw2 IsNot Nothing Then
                cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                cmd.Parameters.Add("@执行编号","A02")
                cmd.Parameters.Add("@分类","发票认证")
                cmd.Parameters.Add("@主文件夹目录",szw2)
                cmd.Parameters.Add("@次文件夹目录",scw2)
            Else
                cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                cmd.Parameters.Add("@执行编号","A02")
                cmd.Parameters.Add("@分类","发票认证")
                cmd.Parameters.Add("@主文件夹目录",szw2)
            End If
        End If
    End If
    cmd.ExecuteNonQuery
Else
    Dim cmd As new SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "S****t [_Identify],执行编号,分类,主文件夹目录,次文件夹目录 from {文件夹设置} Where 执行编号 = \'" & sa1 & " \'and 分类 = \'" & fsc & " \'"
    dt = cmd.ExecuteReader(True) \'记得将参数设置为True
    Dim Values = cmd.ExecuteValues
    If Values.Count > 0 Then
        dt.ReplaceFor("主文件夹目录", zw1.text, "[执行编号] = \'" & sa1 & "\' And [分类] = \'" & fsc & "\'")
        dt.ReplaceFor("次文件夹目录", cw1.text, "[执行编号] = \'" & sa1 & "\' And [分类] = \'" & fsc & "\'")
    Else
        If szw1 IsNot Nothing Then
            If scw1 IsNot Nothing Then
                cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                cmd.Parameters.Add("@执行编号","A01")
                cmd.Parameters.Add("@分类","发票认证")
                cmd.Parameters.Add("@主文件夹目录",szw1)
                cmd.Parameters.Add("@次文件夹目录",scw1)
            Else
                cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                cmd.Parameters.Add("@执行编号","A01")
                cmd.Parameters.Add("@分类","发票认证")
                cmd.Parameters.Add("@主文件夹目录",szw1)
            End If
        End If
        cmd.ExecuteNonQuery
        cmd.Parameters.Clear
    End If
    cmd.CommandText = "S****t [_Identify],执行编号,分类,主文件夹目录,次文件夹目录 from {文件夹设置} Where 执行编号 = \'" & sa2 & " \'and 分类 = \'" & fsc & " \'"
    dt = cmd.ExecuteReader(True) \'记得将参数设置为True
    Dim Valuess = cmd.ExecuteValues
    If Valuess.Count > 0 Then
        dt.ReplaceFor("主文件夹目录", zw2.text, "[执行编号] = \'" & sa2 & "\' And [分类] = \'" & fsc & "\'")
        dt.ReplaceFor("次文件夹目录", cw2.text, "[执行编号] = \'" & sa2 & "\' And [分类] = \'" & fsc & "\'")
    Else
        If szw1 IsNot Nothing Then
            If szw2 IsNot Nothing Then
                If scw2 IsNot Nothing Then
                    cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                    cmd.Parameters.Add("@执行编号","A02")
                    cmd.Parameters.Add("@分类","发票认证")
                    cmd.Parameters.Add("@主文件夹目录",szw2)
                    cmd.Parameters.Add("@次文件夹目录",scw2)
                Else
                    cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录, 次文件夹目录) Values(?,?,?,?)"
                    cmd.Parameters.Add("@执行编号","A02")
                    cmd.Parameters.Add("@分类","发票认证")
                    cmd.Parameters.Add("@主文件夹目录",szw2)
                End If
            End If
        End If
        cmd.ExecuteNonQuery
    End If
    dt.Save()
    dt.Load()
End If

 

帮我看看是哪里错了,怎么替换不了SQL对应的字符


--  作者:有点蓝
--  发布时间:2019/3/8 22:06:00
--  
            cmd.CommandText = "Insert Into 文件夹设置 (执行编号, 分类, 主文件夹目录) Values(?,?,?)"
            cmd.Parameters.Add("@执行编号","A01")
            cmd.Parameters.Add("@分类","发票认证")
            cmd.Parameters.Add("@主文件夹目录",szw1)

……

cmd.CommandText = "S****t [_Identify],执行编号,分类,主文件夹目录,次文件夹目录 from {文件夹设置} Where 执行编号 = \'" & sa1 & "\' and 分类 = \'" & fsc & "\'"

Where 执行编号 = \'" & sa1 & " \' and 分类 = \'" & fsc & " \'" 有一些多余的空格,其他地方一样,自己检查

--  作者:hongye
--  发布时间:2019/3/8 22:39:00
--  
改好了,但是还是没反应,A02可用
--  作者:有点蓝
--  发布时间:2019/3/8 22:55:00
--  
重新贴出代码,或者上传实例测试