通用日期括号与逻辑值:
不同数据源,日期括号与逻辑值不一样。
内部数据源和ACCESS数据源 逻辑真:True, 逻辑假:False, 日期括号:#
SQL数据源 逻辑真:1, 逻辑假:0, 日期括号:'
凡是用到SQL语句的地方,例如在cmd.CommandText和LoadFilter中,逻辑值和日期括号,都需要根据数据源的变化而变化。
通过以下方法,就可以使逻辑值和日期括号通用:
Public _cmd As New SQLCommand
Public _dt As DataTable 'SQLCommand临时DataTable
Public _rq As String '日期括号
Public _true As Object '逻辑真
Public _false As Object '逻辑假
数据源通用代码(内部函数)
If DataTables.Contains(Args(0)) Then
_dt = DataTables(Args(0))
If _dt.SourceType = 1 Then
_rq = "#"
_true = True
_false = False
Else
_rq = "'"
_true = 1
_false = 0
End If
Else
_cmd.ConnectionName = Args(0)
If _cmd.C#"
_true = True
_false = False
Else
If Connections.Contains(_cmd.ConnectionName) Then
If Connections(_cmd.ConnectionName).SourceType = 1 Then
_rq = "#"
_true = True
_false = False
Else
_rq = "'"
_true = 1
_false = 0
End If
End If
End If
End If
函数调用:
只需要在Initialize事件中调用一次,就行了
Functions.Execute("数据源通用代码",_Connection) '_Connection是通用数据源名称全局变量,等于e.Name
示例
一、
DataTables("订单").LoadFilter = "已付款 = " & _true
DataTables("订单").Load
二、
Dim cmd As New Sqlcommand
cmd.Connection Name = _Connection
Dim d As String = "2012-03-30"
cmd.CommandText = "Select * From {订单} Where 日期 > " & _rq & d & _rq
Output.Show(_cmd.ExecuteReader.DataRows(1)("日期"))
三、为了使日期括号用起来更方便,建了一个专门的函数
数据源通用日期
If DataTables.Contains(Args(0)) Then
_dt = DataTables(Args(0))
If _dt.SourceType = 1 Then
_rq = "#"
Else
_rq = "'"
End If
Else
_cmd.ConnectionName = Args(0)
If _cmd.C#"
Else
If Connections.Contains(_cmd.ConnectionName) Then
If Connections(_cmd.ConnectionName).SourceType = 1 Then
_rq = "#"
Else
_rq = "'"
End If
End If
End If
End If
If IsDate(Args(1)) Then
Return _rq & Args(1) & _rq
Else
Return _rq & "1900-01-01" & _rq
End If
调用
Dim cmd As New Sqlcommand
cmd.Connection Name = _Connection
Dim d As String = "2012-03-30"
cmd.CommandText = "Select * From {订单} Where 日期 > " & Functions.Execute("数据源通用日期",_Connection,d)
Output.Show(_cmd.ExecuteReader.DataRows(1)("日期"))
[此贴子已经被作者于2014-6-24 9:18:08编辑过]