2014-12-05 5 views
-1

다른 폼을 표시하고 크리스탈 리포트에 매개 변수를 보내는 버튼이 있지만 버튼을 클릭하면 데이터베이스 로그인이 항상 표시되고 사용자 이름과 비밀번호를 입력해야합니다. 대신 "통합 보안 사용"을 선택하면 실패했습니다. 제 질문은 로그인을 표시하지 않고 데이터베이스에 연결하는 방법입니다.Crystal 보고서를 사용할 때 로그인 프롬프트를 피하는 방법은 무엇입니까?

Imports CrystalDecisions.CrystalReports.Engine 
Imports CrystalDecisions.Shared 

Public Class param_list_agree 

Private Sub Cmdpreview_Click(sender As Object, e As EventArgs) Handles Cmdpreview.Click 
    Call opendb() 

    Dim cryrpt As New ReportDocument 
    cryrpt.Load("D:\Report\List_Agreement.rpt") 
    Dim crparamdfs As ParameterFieldDefinitions 
    Dim crparamdf As ParameterFieldDefinition 
    Dim crparamvl As New ParameterValues 
    Dim crparamdisvl As New ParameterDiscreteValue 
    Dim konek As New ConnectionInfo 



    crparamdisvl.Value = DTP1.Text 
    crparamdfs = cryrpt.DataDefinition.ParameterFields 
    crparamdf = crparamdfs.Item("@date_to") 
    crparamvl = crparamdf.CurrentValues 

    crparamvl.Clear() 
    crparamvl.Add(crparamdisvl) 
    crparamdf.ApplyCurrentValues(crparamvl) 

    rpt_listagree.CrystalReportViewer1.ReportSource = cryrpt 
    rpt_listagree.CrystalReportViewer1.Refresh() 
    rpt_listagree.Show() 

    'CrystalReportViewer1.ReportSource = cryrpt 
    'CrystalReportViewer1.Refresh() 
    With konek 
     .ServerName = "ServerName" 
     .DatabaseName = "DatabaseName" 
     .UserID = "UserID" 
     .Password = "Password" 
     .IntegratedSecurity = False 
    End With 
    Me.Close() 
End Sub 

Private Sub param_list_agree_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Call opendb() 
End Sub 
End Class 
+0

, 당신은 .'UserID'와'.Password'을 설정하고'.IntegratedSecurity = TRUE '를 설정하지 않는 시도? 실제로 그것은 konek이 내가 말할 수있는 한 멀리까지 사용되지 않기 때문에 중복 코드로 보입니다. 어쩌면 그게 문제 야. – DeanOC

+0

우리는 더 이상'Call' 키워드를 사용할 필요가 없습니다. – OneFineDay

+0

동일, 항상 데이터베이스 로그인 표시 –

답변

1

우선, 매개 변수를로드/설정하기 전에 로그인 정보를 설정하십시오. 매개 변수가 어떤 식 으로든 동적 인 경우 데이터베이스에 액세스하려고 시도하며 로그인 정보가 설정되지 않습니다.

로그인 할 수있는 팝업 대화 상자가 나타나면 Crystal에서 연결 설정이 설정되기 전에 Crystal에서 보고서의 데이터베이스에 액세스하려고했거나 연결 정보가 잘못되었음을 의미합니다. 코드에서

*** 편집

Dim cryrpt As New ReportDocument 
cryrpt.Load("D:\Report\List_Agreement.rpt") 
Dim crparamdfs As ParameterFieldDefinitions 
Dim crparamdf As ParameterFieldDefinition 
Dim crparamvl As New ParameterValues 
Dim crparamdisvl As New ParameterDiscreteValue 
Dim konek As New ConnectionInfo 

'Login FIRST 
With konek 
    .ServerName = "ServerName" 
    .DatabaseName = "DatabaseName" 
    .UserID = "UserID" 
    .Password = "Password" 
    .IntegratedSecurity = False 
End With 

'THEN set your parameters 
crparamdisvl.Value = DTP1.Text 
crparamdfs = cryrpt.DataDefinition.ParameterFields 
crparamdf = crparamdfs.Item("@date_to") 
crparamvl = crparamdf.CurrentValues 

crparamvl.Clear() 
crparamvl.Add(crparamdisvl) 
crparamdf.ApplyCurrentValues(crparamvl) 

rpt_listagree.CrystalReportViewer1.ReportSource = cryrpt 
rpt_listagree.CrystalReportViewer1.Refresh() 
rpt_listagree.Show() 

'CrystalReportViewer1.ReportSource = cryrpt 
'CrystalReportViewer1.Refresh() 
+0

john, 고맙겠습니다.하지만 설정 로그인을하고 내가 사용하는 스크립트가 필요한 곳은 어디입니까? ? 위의 스크립트로 예제를주세요. –

+0

그 코드보다 더 많은 것이 있습니다. 제 요점은 먼저 로그인해야한다는 것입니다. 시작부터 끝까지 모든 코드를 작성하지는 않습니다. –

관련 문제