Foxtable(狐表)用户栏目专家坐堂 → [分享] 通用平台───持续更新(20140928进程识别)......


  共有277842人关注过本帖平板打印复制链接

主题:[分享] 通用平台───持续更新(20140928进程识别)......

帅哥哟,离线,有人找我吗?
lsy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/24 9:12:00 [只看该作者]

通用日期括号与逻辑值

 

不同数据源,日期括号与逻辑值不一样。

内部数据源和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编辑过]

 回到顶部
总数 1625 1 2 3 4 5 6 7 8 9 10 下一页 ..163