Foxtable(狐表)用户栏目专家坐堂 → [求助]字符串合并问题


  共有3644人关注过本帖树形打印复制链接

主题:[求助]字符串合并问题

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


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
[求助]字符串合并问题  发帖心情 Post By:2014/1/2 10:44:00 [只看该作者]

下述语句:
1. 通过一系列判断,将得到:sql=“select * from {基本情况} where .......”
2.然后添加下述语句:
    If tongji=“患者来源地(本地)” Then
        sql=sql & "and 联系信息_省市='重庆市'"
    End If
3.通过  MessageBox.Show("sql:" & sql, "提示")追踪,获得的sql是:and 联系信息+省市='重庆市',而没有前面的部分。

是什么原因呀?谢谢!


[此贴子已经被作者于2014-1-2 10:45:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/2 10:47:00 [只看该作者]

上例子,看你发出来的代码不应该会这样.

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


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

完整的代码贴出来,才能知道来龙去脉。

说不定之前的代码拦截了。


 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/2 11:05:00 [只看该作者]

Dim d1,d2 As String
Dim kind,tongji As String
Dim sql As String
Dim str As String=Forms("住院患者预约系统").Controls("TextBox2").value
Dim n As Integer
Dim strs() As String
strs =str.replace(vbcr,"").Split(vblf)

For i As Integer = 0 To strs.Length - 1
    If strs(i)>"" Then
        strs(n) = strs(i)
        n = n + 1
    End If
Next

Dim dts(n-1) As fxDataSource
For i As Integer = 0 To n-1
    Dim s() As String=strs(i).Split(";")
    For j As Integer = 0 To s.Length-1
        If s(j)<>"" Then
            If s(j).Contains("统计项目") Then
                Dim ss() As String=s(j).Split(";")
                For Each s1 As String In ss
                    tongji=s1.split(":")(1).trim(".")
                Next
            End If
            If s(j).contains("开始时间") Then
                Dim ss() As String=s(j).Split(";")
                For Each s1 As String In ss
                    If s1.split(":")(1)="无" Then
                        d1=""
                    Else
                        d1=s1.split(":")(1)
                    End If
                Next
            End If
            If s(j).contains("截止时间") Then
                Dim ss() As String=s(j).Split(";")
                For Each s1 As String In ss
                    If s1.split(":")(1)="无" Then
                        d2=""
                    Else
                        d2=s1.split(":")(1)
                    End If
                Next
            End If
            If s(j).contains("患者种类") Then
                Dim ss() As String=s(j).Split(";")
                For Each s1 As String In ss
                    kind=s1.split(":")(1).trim()
                Next
            End If
        End If
    Next
    If d1="" Then
        If d2="" Then
            If kind="无" OrElse kind="预约患者(登记时间)" Then
                sql="select * from {基本情况}"
            Else If kind="住院患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='已入院'"
            Else If kind="推迟入院(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='推迟入院'"
            Else If kind="失访患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='无法联系'"
            Else If kind="入院患者(入院日期)" Then
                sql="select * from {基本情况} where 情况说明='已入院'"
            Else If kind="预约患者(入院日期)" Then
                sql="select * from {基本情况} where (情况说明<>'推迟入院'or 情况说明<>'无法联系')"
            End If
        Else
            If kind="无" OrElse kind="预约患者(登记时间)" Then
                sql="select * from {基本情况} where 登记日期<d2"
            Else If kind="住院患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='已入院' and 登记日期<'" & d2 & "'"
            Else If kind="推迟入院(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='推迟入院'and 登记日期<'" & d2 & "'"
            Else If kind="失访患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='无法联系'and 登记日期<'" & d2 & "'"
            Else If kind="入院患者(入院日期)" Then
                sql="select * from {基本情况} where 情况说明='已入院'and 预约日期<'" & d2 & "'"
            Else If kind="预约患者(入院日期)" Then
                sql="select * from {基本情况} where (情况说明<>'推迟入院'or 情况说明<>'无法联系') and 预约日期<'" & d2 & "'"
            End If
        End If
    Else
        If d2="" Then
            If kind="无" OrElse kind="预约患者(登记时间)" Then
                sql="select * from {基本情况} where 登记日期>'" & d1 & "'"
            Else If kind="住院患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='已入院' And 登记日期>'" & d1 & "'"
            Else If kind="推迟入院(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='推迟入院'and 登记日期>'" & d1 & "'"
            Else If kind="失访患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='无法联系'and 登记日期>'" & d1 & "'"
            Else If kind="入院患者(入院日期)" Then
                sql= "select * from {基本情况} where 情况说明='已入院'and 预约日期>'" & d1 & "'"
            Else If kind="预约患者(入院日期)" Then
                sql="select * from {基本情况} where (情况说明<>'推迟入院'or 情况说明<>'无法联系') and 预约日期>'" & d1 & "'"
            End If
        Else
            If kind="无" OrElse kind="预约患者(登记时间)" Then
                sql="select * from {基本情况} where 登记日期<'" & d2 & "' And 登记日期>'" & d1 & "'"
            Else If kind="住院患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='已入院' and 登记日期<'" & d2 & "' And 登记日期>'" & d1 & "'"
            Else If kind="推迟入院(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='推迟入院'and 登记日期<'" & d2 & "' And  登记日期>'" & d1 & "'"
            Else If kind="失访患者(登记时间)" Then
                sql="select * from {基本情况} where 情况说明='无法联系'and 登记日期<'" & d2 & "' And  登记日期>'" & d1 & "'"
            Else If kind="入院患者(入院日期)" Then
                sql= "select * from {基本情况} where 情况说明='已入院'and 预约日期<'" & d2 & "' And  预约日期>'" & d1 & "'"
            Else If kind="预约患者(入院日期)" Then
                sql="select * from {基本情况} where (情况说明<>'推迟入院'or 情况说明<>'无法联系') and 预约日期<'" & d2 & "' And  预约日期>'" & d1 & "'"
            End If
        End If
    End If
    MessageBox.Show("开始时间" & d1,"提示")
    MessageBox.Show("截止时间" & d2,"提示")
    MessageBox.Show("患者种类" & kind,"提示")
    MessageBox.Show("统计项目" & tongji,"提示")
    If t Then
        sql=sql & "and 联系信息_省市='重庆市'"
    End If
    MessageBox.Show("sql:" & sql, "提示")
    Dim g As New GroupTableBuilder("统计表" & i,sql,"li")
    If t
        g.Caption = "性别统计"
        g.Groups.AddDef("性别", "", "性别")
        g.Totals.AddDef("姓名", AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="民族统计"
        g.Groups.AddDef("民族","","民族")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="出生日期统计"
        g.Groups.AddDef("出生日期", DateGroupEnum.month, "出生日期")
        g.Totals.AddDef("姓名", AggregateEnum.Count, "",kind & "病例数")
    End If
    If t Then
        g.Caption="登记日期统计"
        g.Groups.AddDef("登记日期", DateGroupEnum.month, "登记日期")
        g.Totals.AddDef("姓名", AggregateEnum.Count, "",kind & "病例数")
    End If
    If t Then
        g.Caption="预约日期统计"
        g.Groups.AddDef("预约日期",  DateGroupEnum.month, "预约日期")
        g.Totals.AddDef("姓名", AggregateEnum.Count, "",kind & "病例数")
    End If
    If t Then
        g.Caption="预约科室统计"
        g.Groups.AddDef("预约科室","","预约科室")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="登记年龄统计"
        g.Groups.AddDef("登记年龄","","登记年龄")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="入院年龄统计"
        g.Groups.AddDef("入院年龄","","入院年龄")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="疾病诊断统计"
        g.Groups.AddDef("疾病诊断","","疾病诊断")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="患者来源地统计"
        g.Groups.AddDef("联系信息_省市","患者来源地","联系信息_省市")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    If t Then
        g.Caption="患者来源地(本市)统计"
        g.Groups.AddDef("联系信息_县市区","患者来源地(本市)","联系信息_县市区")
        g.Totals.AddDef("姓名",AggregateEnum.Count,"",kind & "病例数")
    End If
    
    dts(i) = g.BuildDataSource()
Next
For i As Integer =1 To n-1
    dts(0).Combine(tongji,dts(i),tongji)
Next
Tables("统计图形_Table1").DataSource = dts(0)

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/2 11:15:00 [只看该作者]

建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

就可以找出从哪里开始值不对了

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


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

在这几个消息框前面,加一个消息框,看SQL是不是空的字符串:

MessageBox.Show(SQl)

MessageBox.Show("开始时间" & d1,"提示")

MessageBox.Show("截止时间" & d2,"提示")
MessageBox.Show("患者种类" & kind,"提示")
MessageBox.Show("统计项目" & tongji,"提示")

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/2 11:29:00 [只看该作者]

在判断来自重庆市之前都是对的,加了后就变成了没有前面的部分,而只有if后面的了。我再看看。谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/2 16:29:00 [只看该作者]

可以了。把catch删除再启动就OK了。谢谢!

 回到顶部