Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询-在VB中为变量赋值时出错_Sql_Vb6 - Fatal编程技术网

Sql 查询-在VB中为变量赋值时出错

Sql 查询-在VB中为变量赋值时出错,sql,vb6,Sql,Vb6,我需要在VB6中查询以下代码: SQL = " if object_id('tempdb..#MovSeq','U') is not null drop table #MovSeq;" & _ " declare @Data_Inicio datetime, @Data_Fim datetime; set dateformat dmy; set @Data_Inicio = DataInicio; set @Data_Fim = DataFinal; set @Data_Fim

我需要在VB6中查询以下代码:

SQL = " if object_id('tempdb..#MovSeq','U') is not null drop table #MovSeq;" & _
    " declare @Data_Inicio datetime, @Data_Fim datetime; set dateformat dmy; set @Data_Inicio = DataInicio; set @Data_Fim = DataFinal; set @Data_Fim = DateAdd(day, +1, @Data_Fim); " & _
    " with Mov as ( SELECT EI.Cod_Empresa, EI.Cod_Estoque, EI.Cod_Produto, 'E' as Tipo_Mov, E.Dta_Entrada as Data_Mov, EI.id_Doc as NF, EI.Qtde, EI.V_Unitario, EI.V_Total " & _
      " from Entrada_Itens as EI inner join Entrada as E on EI.Cod_Empresa=E.Cod_Empresa and EI.id_Doc=E.id_Doc " & _
      " where E.Dta_Entrada >= @Data_Inicio and EI.Cod_Empresa='" & Sys.Empresa & "' and EI.Cod_Estoque='" & dcEstoque.BoundText & "' and EI.Cod_Produto='" & dtProdutos.BoundText & "' " & _
    " Union " & _
    " SELECT SI.Cod_Empresa, SI.Cod_Estoque, SI.Cod_Produto, 'S', S.Dta_Entrada , SI.id_Doc, -SI.Qtde, SI.V_Unitario, SI.V_Total " & _
      " from Saida_Itens as SI inner join Saida as S on SI.Cod_Empresa=S.Cod_Empresa and SI.id_Doc=S.id_Doc " & _
      " where S.Dta_Entrada >= @Data_Inicio and SI.Cod_Empresa='" & Sys.Empresa & "' and SI.Cod_Estoque='" & dcEstoque.BoundText & "' and SI.Cod_Produto='" & dtProdutos.BoundText & "' " & _
    " Union " & _
    " SELECT Cod_Empresa, Cod_Estoque, Cod_Produto, 'A', @Data_Inicio, null, null, null, null " & _
      " From Estoque " & _
      " where Cod_Empresa='" & Sys.Empresa & "' and Cod_Estoque='" & dcEstoque.BoundText & "' and Cod_Produto='" & dtProdutos.BoundText & "') " & _
    " SELECT *, Seq= row_number() over (partition by Cod_Empresa, Cod_Estoque, Cod_Produto order by Data_Mov desc, Tipo_Mov desc) into #MovSeq from Mov; " & _
    " create unique clustered index IndMovSeq on #MovSeq (Cod_Empresa, Cod_Estoque, Cod_Produto, Seq); " & _
    " SELECT M.Cod_Empresa, M.Cod_Estoque, M.Cod_Produto, P.Descricao," & _
          " Estoque= case when M.Seq=1 then E.Qtde_Estoque else (E.Qtde_Estoque - (SELECT sum(Mi.Qtde) from #MovSeq as Mi " & _
                                  " Where Mi.Cod_Empresa = M.Cod_Empresa And Mi.Cod_Estoque = M.Cod_Estoque And Mi.Cod_Produto = M.Cod_Produto and Mi.Seq < M.Seq)) end " & _
      " from #MovSeq as M inner join " & _
           " Estoque as E on M.Cod_Empresa=E.Cod_Empresa and M.Cod_Estoque=E.Cod_Estoque and M.Cod_Produto=E.Cod_Produto inner join " & _
           " Produtos as P on M.Cod_Empresa=P.Cod_Empresa and M.Cod_Estoque=P.Cod_Estoque and M.Cod_Produto=P.Cod_Produto " & _
      " where Data_Mov < @Data_Fim " & _
         " order by M.Cod_Empresa, M.Cod_Estoque, M.Cod_Produto, Seq desc; " & _
    " drop table #MovSeq;"
运行时显示DataInicio作为原因时,出现“无效列名称”错误

我知道错误在于变量的赋值。但如何解决。
感谢您的帮助…

您的代码类型很容易受到攻击

是否正确转义变量值?其中一个变量中的简单引号可以完全更改SQL字符串


您应该考虑使用参数传递值,而不是使用字符串连接来构建SQL命令。

您是否完全逃离变量中的值?在SSMS中打印最终sql并进行测试。考虑一下这是一个SP,因为你所做的就是提供搜索参数。如果你赋值​​并且,在SSMS中运行非常好。如何在VB6中调用窗体内的存储过程?DataInicio变量的类型为date,并且位于窗体中。