| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:为何没有人帮我解释问题错在哪?(
取消只看楼主 加入收藏
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:7 
为何没有人帮我解释问题错在哪?(
我调用存储过程sp_kjy_tj
其过程的意思是先建立张表(#cf_stat),将表的数据查询出来后在删除表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_kjy_tj]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_kjy_tj]
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO



--处方统计
CREATE PROCEDURE sp_kjy_tj
@date1 varchar(10),
@date2 varchar(10)
AS


create table #cf_stat
(
patient_id varchar(10) null,
doctor_name varchar(20) null,
doctor_office varchar(30) null,
pz_count int null,
yp_je dec (10,2)null,   --
kj_count int null,   --
cf_code varchar(20)null  --
)


insert into #cf_stat(patient_id,doctor_name,doctor_office,cf_code,pz_count,yp_je)
select patient_id,doctor_code,doctor_office,cf_code,count(item_code),sum((quantity - quantity_return)*price)
from ci_advice_Fee
where  convert(varchar(10),insert_date,120)>=@date1 and  convert(varchar(10),insert_date,120)<=@date2 and kind_flag='0' and cancel_sign='1'
group by patient_id,doctor_code,doctor_office,cf_code



update #cf_stat set kj_count = isnull(b.kj_count ,0) from #cf_stat a inner join v_ci_advice_Fee b on a.patient_id =b.patient_id and a.cf_code = b.cf_code

   --   set kj_count =  (select isnull( b.kj_count,0) from  v_ci_advice_Fee b where #cf_stat.cf_code = b.cf_code)
--  where cf_code in ( select cf_code from v_ci_advice_Fee)
--   
select patient_id,doctor_name,doctor_office,cf_code,pz_count,yp_je,kj_count
from #cf_stat

drop table #cf_stat
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
我在VB中的语句是如下:
Dim cnn1 As ADODB.Connection '连接
Dim mycommand As '命令
Dim parm_date1 As ADODB.Parameter '参数1
Dim parm_date2 As ADODB.Parameter '参数2
Dim rstByQuery As ADODB.Recordset '结果集
Dim strCnn As String '连接字符串

Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    Set parm_date1 = New ADODB.Parameter
    Set mycommand = New
    ' parm_jobid.Name = "name1"
    parm_date1.Type = adChar '参数类型
    parm_date1.Size = 10 '参数长度
    parm_date1.Direction = adParamInput
    '参数方向,输入或输出
    parm_date1.Value = DTPicker1.Value '参数的值
    mycommand.Parameters.Append parm_date1 '加入参数
    Set parm_date2 = New ADODB.Parameter
    'parm_joblvl.Name = "name2"
    parm_date2.Type = adInteger
    parm_date2.Size = 10
    parm_date2.Direction = adParamInput
    parm_date2.Value = DTPicker2.Value
    mycommand.Parameters.Append parm_date2

    mycommand.ActiveConnection = cnn1
    '指定该command 的当前活动连接
    = "sp_kjy_tj1"
    'myprocedure 是你要调用的存储过程名称
    = adCmdStoredProc
    '表明command 为存储过程
    Set rstByQuery = New ADODB.Recordset
    Set rstByQuery = mycommand.Execute()
    MSFlexGrid1.Rows = 1
    '动态设置MSFlexGrid的行和列
    MSFlexGrid1.Cols = rstByQuery.Fields.Count
    MSFlexGrid1.Row = 0
    For i = 0 To rstByQuery.Fields.Count - 1
        MSFlexGrid1.Col = i
        MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
    Next '设置第一行的标题,用域名填充
    i = 1
    Do While Not rstByQuery.EOF
       MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
       MSFlexGrid1.Row = i '确定行
       For j = 0 To rstByQuery.Fields.Count - 1
           MSFlexGrid1.Col = j
           MSFlexGrid1.Text = rstByQuery(j)
           '添充所有的列
       Next
       rstByQuery.MoveNext
       i = i + 1
    Loop

End Sub

Private Sub Command2_Click()
    End
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
DTPicker1.Value = Form1(Now(), "yyyy-mm-dd  ")
End Sub

Private Sub DTPicker2_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
DTPicker1.Value = Form1(Now(), "yyyy-mm-dd  ")
End Sub

Private Sub Form_Load()
Set cnn1 = New ADODB.Connection
'生成一个连接
strCnn = "Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=jxrmyy;Data Source=JXJXYY\SQL2005"
cnn1.Open strCnn '打开连接
End Sub

Private Sub Form_Unload(Cancel As Integer)
    cnn1.Close '关闭连接
    Set cnn1 = Nothing '释放连接
End Sub
但运行时出现如下错误提示:
实时错误‘3704’对象关闭时,不允许操作  

Do While Not rstByQuery.EOF 出现黄色
我想知道在VB中错在那里,这个问题困惑了我许久。谁能指出原因,先谢了。


[ 本帖最后由 jxawgya 于 2011-5-2 15:11 编辑 ]
搜索更多相关主题的帖子: where 没有人 null 统计 
2011-05-02 14:37
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
新的问题?
我在存储过程中CREATE PROCEDURE sp_kjy_tj
@date1 varchar(10),
@date2 varchar(10)
AS
添加了SET ANSI_NULLS ON
再运行VB时没有错误提示,只是出现 patient_id,doctor_name,doctor_office,cf_code,pz_count,yp_je,kj_count
等列名,没有数据
为何会如此?
2011-05-02 15:33
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
是不是时间格式的问题,但查了一下,应是对的:
DTPicker1.Value = Form1(Now(), "yyyy-mm-dd  ")
parm_date1.Value = DTPicker1.Value
2011-05-02 15:58
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
我用查询跟踪器跟踪了发现exec sp_kjy_tj '2011-4-2  ',40637
为何是如何是如此
2011-05-02 16:09
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
问题解决,时间格式的问题,将修改parm_date2.Type = adChar
能又产生新的问题,如何允许
MSFlexGrid1.Text = rstByQuery(j)为空值
希望有人能关注
2011-05-02 16:36
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
MSFlexGrid1.Text = iif(做rstByQuery(j)判断是否有值,有值就赋值什么,无值就赋值什么)?
能详细说一说?
2011-05-03 13:50
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
谢了,另外是如何将单吉MSFlexGrid1后将一个值赋给另一的MSFlexGrid2
如:MSFlexGrid1.ColWidth(3)有值传给MSFlexGrid2,MSFlexGrid1.ColWidth(3)的值做为查询条件.


[ 本帖最后由 jxawgya 于 2011-5-4 14:31 编辑 ]
2011-05-04 14:19
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
我产意思是单点MSFlexGrid1中的一列将表中的数据赋值给一个文本框,再同时执行一条SQL语句,将结果赋值MSFlexGrid2
用文本框做条件,能有更好的方法?请指教,不知讲清楚了吗 ?
我的要求(先查询出符合条件的编号数据,再点编号时出现这个编号明细数据)
2011-05-05 14:01
快速回复:为何没有人帮我解释问题错在哪?(
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020056 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved