错误'<'附近的语法不正确。我想念的是什么? [英] Error Incorrect syntax near '<'. What I miss?

查看:67
本文介绍了错误'<'附近的语法不正确。我想念的是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  Dim  DataSearch1  As  DateTime =  Nothing  
Dim DataSearch2 As DateTime = Nothing







  Dim  SampleOrder  As   String  =  Nothing  
Dim 请求者作为 字符串 =
Dim ProjectNumber 作为 字符串 = 没什么
Dim Coordonator As 字符串 = 没什么
Dim 数量作为 字符串 = 没什么
Dim DataSearch1 As DateTime = Nothing
Dim DataSearch2 As DateTime = Nothing

Dim SelectQuery As String = SELECT OrderID,DVMOrderNumber,Requester,ProjectNumber,CostCenter,CostResponsable,CostCategory,TotalSamples, OrderDescription,FinalCustomerAddress,TargetDate,AssemblyPlannedDate,LogisticsResponsable,Shippi ngMode,ShippingAddress,Urgent,HasBOM,HazardousMaterial,ExpressShipment,HasSerialComponents,PrototypeComponents,OrderType FROM Orders_Header
Dim WhereQuery 作为 字符串 = WHERE 1 = 1

Requester = BOX_Requester1.Text
Requester = Find.Find2(Requester)
ProjectNumber = BOX_ProjectNumber1.Text
ProjectNumber = Find .Find2(ProjectNumber)
SampleOrder = BOX_SampleOrder1.Text
SampleOrder = Find.Find2(SampleOrder)
Coordonator = DDL_Coordonator1.Text
Coordonator = Find.Find2(Coordonator)
数量= DDL_Coordonator1.Text
数量= Find.Find2(数量)

如果 BOX_DesiredDelivery1.Text<> Nothing BOX_DesiredDelivery2.Text<> Nothing 然后
DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
WhereQuery = WhereQuery& AND'& DataSearch1& '> = TargetDate< ='& DataSearch2&
其他
如果 DataSearch1<> Nothing 然后
WhereQuery = WhereQuery& AND TargetDate> ='& DataSearch1& '
结束 如果
如果 DataSearch2<> Nothing 然后
WhereQuery = WhereQuery& &TargetDate< ='& DataSearch2& '
结束 如果
结束 如果

如果 BOX_DesiredDelivery1.Text<> Nothing 然后
DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
结束 如果
如果 BOX_DesiredDelivery2.Text <> Nothing 然后
DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
结束 如果

如果请求者<> Nothing 然后
WhereQuery = WhereQuery& AND Requester LIKE'&请求者& '
结束 如果
如果 ProjectNumber<> Nothing 然后
WhereQuery = WhereQuery& &ProjectNumber LIKE'& ProjectNumber& '
结束 如果
如果 SampleOrder<> Nothing 然后
WhereQuery = WhereQuery& &DVMOrderNumber LIKE'& SampleOrder& '
结束 如果

如果 Coordonator<> Nothing 然后
WhereQuery = WhereQuery& &LogisticsResponsable LIKE'& Coordonator& '
结束 如果
如果数量<> Nothing 然后
WhereQuery = WhereQuery& 和TotalSamples LIKE'&数量和数量 '
结束 如果

Dim myQuery As 字符串 = SelectQuery& WhereQuery
SqlDataSource2.SelectCommand = myQuery
SqlDataSource2.DataBind()
GridView1.DataSourceID = SqlDataSource2
GridView1.DataBind()







全部工作但是当我把它放到那个部分时:

 如果 BOX_DesiredDelivery1。文字<>没有 BOX_DesiredDelivery2。文字<>没有然后 
DataSearch1 = 转换 .ToDateTime(BOX_DesiredDelivery1。文本
DataSearch2 = 转换 .ToDateTime(BOX_DesiredDelivery2。文本
WhereQuery = WhereQuery& AND'& DataSearch1& '> = TargetDate< ='& DataSearch2&
其他
如果 DataSearch1<>没有那么
WhereQuery = WhereQuery& AND TargetDate> ='& DataSearch1& '
结束 如果
如果 DataSearch2<>没有那么
WhereQuery = WhereQuery& &TargetDate< ='& DataSearch2& '
结束 如果
结束 如果





我的鳕鱼不起作用,我可以在这里错过一些东西:



 如果 BOX_DesiredDelivery1.Text<>  Nothing   BOX_DesiredDelivery2.Text<>  Nothing  然后 
DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
WhereQuery = WhereQuery& AND'& DataSearch1& '> = TargetDate< ='& DataSearch2&
其他

解决方案

为什么要将文本框输入转换为DateTime值:

 DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)

(虽然你应该使用DateTime.TryParse而不是转换,因为后者抛出异常并在用户犯错时杀死你的应用程序,前者让你优雅地告诉他)

然后再将它转换回字符串,可能会混淆SQL:

 WhereQuery = WhereQuery&  &TargetDate< ='& DataSearch2&  ' 



这可能是你的问题 - 默认的将DateTime转换为String实现生成一个字符串,该字符串取决于您的系统设置,这可能不是SQL理解的任何内容。



使用参数化查询,直接传递DateTime值,而不是将其转换为字符串。

很可能是你的问题将同时消失......


我发现错误

i更改WhereQuery = WhereQuery&AND'&DataSearch1&'> = TargetDate< ='&DataSearch2&'







WhereQuery = WhereQuery& AND TargetDate> ='&DataSearch1&'AND TargetDate< ='&DataSearch2&'



现在工作,谢谢!

Dim DataSearch1 As DateTime = Nothing
       Dim DataSearch2 As DateTime = Nothing




Dim SampleOrder As String = Nothing
       Dim Requester As String = Nothing
       Dim ProjectNumber As String = Nothing
       Dim Coordonator As String = Nothing
       Dim Quantity As String = Nothing
       Dim DataSearch1 As DateTime = Nothing
       Dim DataSearch2 As DateTime = Nothing

       Dim SelectQuery As String = "SELECT OrderID, DVMOrderNumber, Requester, ProjectNumber, CostCenter, CostResponsable, CostCategory, TotalSamples, OrderDescription, FinalCustomerAddress, TargetDate, AssemblyPlannedDate, LogisticsResponsable, ShippingMode, ShippingAddress, Urgent, HasBOM, HazardousMaterial, ExpressShipment, HasSerialComponents, PrototypeComponents, OrderType FROM Orders_Header"
       Dim WhereQuery As String = " WHERE 1=1"

       Requester = BOX_Requester1.Text
       Requester = Find.Find2(Requester)
       ProjectNumber = BOX_ProjectNumber1.Text
       ProjectNumber = Find.Find2(ProjectNumber)
       SampleOrder = BOX_SampleOrder1.Text
       SampleOrder = Find.Find2(SampleOrder)
       Coordonator = DDL_Coordonator1.Text
       Coordonator = Find.Find2(Coordonator)
       Quantity = DDL_Coordonator1.Text
       Quantity = Find.Find2(Quantity)

       If BOX_DesiredDelivery1.Text <> Nothing And BOX_DesiredDelivery2.Text <> Nothing Then
           DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
           DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
           WhereQuery = WhereQuery & " AND '" & DataSearch1 & "' >= TargetDate <='" & DataSearch2 & "'"
       Else
           If DataSearch1 <> Nothing Then
               WhereQuery = WhereQuery & " AND TargetDate >= '" & DataSearch1 & "'"
           End If
           If DataSearch2 <> Nothing Then
               WhereQuery = WhereQuery & " AND TargetDate <= '" & DataSearch2 & "'"
           End If
       End If

       If BOX_DesiredDelivery1.Text <> Nothing Then
           DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
       End If
       If BOX_DesiredDelivery2.Text <> Nothing Then
           DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
       End If

       If Requester <> Nothing Then
           WhereQuery = WhereQuery & " AND Requester LIKE '" & Requester & "'"
       End If
       If ProjectNumber <> Nothing Then
           WhereQuery = WhereQuery & " AND ProjectNumber LIKE '" & ProjectNumber & "'"
       End If
       If SampleOrder <> Nothing Then
           WhereQuery = WhereQuery & " AND DVMOrderNumber LIKE '" & SampleOrder & "'"
       End If

       If Coordonator <> Nothing Then
           WhereQuery = WhereQuery & " AND LogisticsResponsable LIKE '" & Coordonator & "'"
       End If
       If Quantity <> Nothing Then
           WhereQuery = WhereQuery & " AND TotalSamples LIKE '" & Quantity & "'"
       End If

       Dim myQuery As String = SelectQuery & WhereQuery
       SqlDataSource2.SelectCommand = myQuery
       SqlDataSource2.DataBind()
       GridView1.DataSourceID = "SqlDataSource2"
       GridView1.DataBind()




Work all but when i put that part :

If BOX_DesiredDelivery1.Text <> Nothing And BOX_DesiredDelivery2.Text <> Nothing Then
           DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
           DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
           WhereQuery = WhereQuery & " AND '" & DataSearch1 & "' >= TargetDate <='" & DataSearch2 & "'"
       Else
           If DataSearch1 <> Nothing Then
               WhereQuery = WhereQuery & " AND TargetDate >= '" & DataSearch1 & "'"
           End If
           If DataSearch2 <> Nothing Then
               WhereQuery = WhereQuery & " AND TargetDate <= '" & DataSearch2 & "'"
           End If
       End If



My cod doesn't work, i can i miss something here:

If BOX_DesiredDelivery1.Text <> Nothing And BOX_DesiredDelivery2.Text <> Nothing Then
            DataSearch1 = Convert.ToDateTime(BOX_DesiredDelivery1.Text)
            DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)
            WhereQuery = WhereQuery & " AND '" & DataSearch1 & "' >= TargetDate <='" & DataSearch2 & "'"
        Else

解决方案

Why are you converting textbox input to DateTime values:

DataSearch2 = Convert.ToDateTime(BOX_DesiredDelivery2.Text)

(Although you should use DateTime.TryParse instead, of Convert, as the later throws an exception and kills your app if the user makes a mistake, and the former lets you tell him gracefully instead)
And then you convert it back to a string again, and probably confuse SQL:

WhereQuery = WhereQuery & " AND TargetDate <= '" & DataSearch2 & "'"


And that's probably your problem - the default "convert DateTime to String" implementation generates a string that is dependant on your system settings, which may not be anything SQL understands.

Use a Parameterized query instead, and pass the DateTime value directly instead of converting it to a string at all.
Chances are your problem will go away at the same time...


I find the error
i Change WhereQuery = WhereQuery & " AND '" & DataSearch1 & "' >= TargetDate <='" & DataSearch2 & "'"

With

WhereQuery = WhereQuery & " AND TargetDate >= '" & DataSearch1 & "' AND TargetDate <= '" & DataSearch2 & "'"

And now work, Thanks!


这篇关于错误'&lt;'附近的语法不正确。我想念的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆