我的存储过程中有两个时间参数,在VB6.0中DTPICKER分别做为对应的输入值,但是传到水晶报表中时发现,每次都要弹出水晶报表是参数设置对话框给我,如果我将它设为不可见,但是参数值也没有传进来,若直接用视图却可以,但是我必须得用存储过程才行?请问带参数的存储过程怎样将值传给水晶报表?

解决方案 »

  1.   

    Dim Cryapp     As New CRAXDRT.Application
    Dim Report     As New CRAXDRT.Report
    Dim CNN As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim Par As ADODB.Parameter
    Dim DT10, DT20 As Variant
    Dim Cmd As ADODB.Command
    Dim StrCnn As String
    Dim i As IntegerOn Error Resume Next
    Set Report = Cryapp.OpenReport(App.Path + "\11.rpt")
    CNN.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=AIS20070910122938;Data Source=WAPSERVER"
    CNN.Open
    DT10 = Format(Trim(DT1.Value), "yyyy-mm-dd")
    DT20 = Format(Trim(DT2.Value), "yyyy-mm-dd")
    Set Cmd = New ADODB.Command
    Cmd.ActiveConnection = CNN
    Cmd.CommandType = adCmdStoredProc
    Cmd.CommandText = "[manusalary] "
    Set Par = Cmd.CreateParameter("BeginDate", adDBDate, adParamInput, , DT10)
    Cmd.Parameters.Append Par
    Set Par = Cmd.CreateParameter("EndDate", adDBDate, adParamInput, , DT20)
    Cmd.Parameters.Append Par
    Set rs = Cmd.Execute()Report.Database.SetDataSource rs
    Report.DiscardSavedData
    'Report.EnableParameterPrompting = False,加了这句就不会弹出水晶报表中的变量对话框,但参数没传过去,去掉这句就会弹出对话框,
    Screen.MousePointer = vbHourglass
    Form2.CRViewer91.ReportSource = Report
    Screen.MousePointer = vbDefault
    Form2.Show
    Form2.WindowState = 2Set rs = Nothing
    Set CNN = Nothing