以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]字符串合并问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44492) |
-- 作者:cqlwsam -- 发布时间: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 -- 发布时间:2014/1/2 10:47:00 -- 上例子,看你发出来的代码不应该会这样. |
-- 作者:lsy -- 发布时间:2014/1/2 10:50:00 -- 完整的代码贴出来,才能知道来龙去脉。 说不定之前的代码拦截了。 |
-- 作者:cqlwsam -- 发布时间: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 -- 发布时间:2014/1/2 11:15:00 -- 建议您用这个方法: http://www.foxtable.com/help/topics/1485.htm 就可以找出从哪里开始值不对了
|
-- 作者:lsy -- 发布时间:2014/1/2 11:27:00 -- 在这几个消息框前面,加一个消息框,看SQL是不是空的字符串: MessageBox.Show(SQl) MessageBox.Show("开始时间" & d1,"提示") MessageBox.Show("截止时间" & d2,"提示")
MessageBox.Show("患者种类" & kind,"提示")
MessageBox.Show("统计项目" & tongji,"提示")
|
-- 作者:cqlwsam -- 发布时间:2014/1/2 11:29:00 -- 在判断来自重庆市之前都是对的,加了后就变成了没有前面的部分,而只有if后面的了。我再看看。谢谢。 |
-- 作者:cqlwsam -- 发布时间:2014/1/2 16:29:00 -- 可以了。把catch删除再启动就OK了。谢谢! |