错误'<'附近的语法不正确。我想念的是什么? [英] Error Incorrect syntax near '<'. What I miss?
问题描述
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!
这篇关于错误'<'附近的语法不正确。我想念的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!