我的源代码如下:Dim CRYAT As New CRAXDRT.Application
Dim CRY As CRAXDRT.Report
Dim Strcnn As String
Dim cnn1   As New ADODB.Connection
Dim adoRS   As New ADODB.RecordsetStrcnn = "Provider=SQLOLEDB.1;Data Source =super;Initial Catalog=cggl;User ID=dick;Password=dick;"  sql = "select a.[订单号],a.[供应商名称],b.[订单号],b.[描述] from [fkpomt] as a inner join [fkpomx] as b on a.[订单号]=b.[订单号] and b.[订单号]='" & ldh & "'"  Set CRYAT = New CRAXDRT.Application  Set CRY = CRYAT.OpenReport(App.Path & "\htdy.rpt")
  
  cnn1.Open Strcnn
  adoRS.Open sql, cnn1, adOpenKeyset, adLockOptimistic  CRY.Database.SetDataSource adoRS
  CRY.DiscardSavedData
       
  CRY.ParameterFields.GetItemByName("ddh").ClearCurrentValueAndRange
  
  CRY.ParameterFields.GetItemByName("ddh").AddCurrentValue (ldh)
  
  CRY.EnableParameterPrompting = False
  
  CRViewer91.ReportSource = CRY  CRViewer91.Refresh
  CRViewer91.ViewReport
当我在报表中的“数据库字段”里边只选一张表(FKPOMX)的时候,报表可以正常显示,但是如果选了2张表,运行就会出错,提示:登录失败。
详细资料:ADO Error Code:0x80040e4d
Source:Microsoft OLE DB Provider for SQL Server
Description:用户'aa'登录失败 
SQL state:42000
Native Error:18456这个是什么原因呢,请高手指点一下!谢谢

解决方案 »

  1.   

    请问楼主,
    这句话 CRViewer91.Refresh 有用吗?我用它的时候,报表并没有刷新。
      

  2.   

    你的兩個表是在report中嗎
    如果是,請設定如下
    CRY.Database.SetDataSource(1) adoRS1
    CRY.Database.SetDataSource(2) adoRS2如果不是,請詳細描述一下
      

  3.   

    to carpenter01(木匠):有用啊,我这边都可以刷新。
      

  4.   

    tolanway(秋冰):我两个表是在report中,但是CRY.Database.SetDataSource(1) adoRS1
    CRY.Database.SetDataSource(2) adoRS2这样写是否正确呢,我这边运行有错呀!
      

  5.   

    寫錯了,不好意思:)
    CRY.Database.Tables(1).SetDataSource Rs1
    CRY.Database.Tables(2).SetDataSource Rs2
      

  6.   

    To lanway(秋冰):
       
    总算可以了,这个问题折腾了我好久,真是非常感谢:)