VB5 CRYSTAL 9 SQL SERVER 2008

KACIOQUIN 03/10/2011 09:35:46
#385734
Bom dia galera! Sou novo aqui no fórum e estou precisando da seguinte ajuda: tenho um relatório feito no crystal 9 usando craxdrt.dll e crviewer.dll. Na máquina em que eu desenvolvi o relatorio, funcionou perfeitamente, porem na maquina cliente eu estou tendo alguns erros referente a conexão com o sql(eu imagino q seja isso).
Detalhe: o tipo de provedor usado na empresa onde trabalho é o OLE DB ADO.

Vai ai parte do código q estou usando:

Dim crystal as Craxdrt.application
Dim relat as craxdrt.report

set crystal = new craxdrt.application
set relat = crystal.OpenReport(DirCorrente_SisExe_Contas & [Ô]    este.rpt[Ô])

crystal.LogOnServer [Ô]pdssql.dll[Ô], NomeServidor, vNomeBdContas, VUID_rpt, vPWD_rpt

[ô][ô]Aqui preecho um record set chamado Temporario q vai alimentar meu relatorio

Seguindo:

relat.DiscardSavedData
relat.Database.SetDataSource Temporario

relat.Database.LonOnServer [Ô]pdssql.dll[Ô], NomeServidor, vNomeBDContas, vUID_rpt, vPWD_rpt

relat.Database.Tables(1).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(2).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(3).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(4).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(5).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(6).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(7).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]
relat.Database.Tables(8).SetTableLocation NomeServidor & DirCorrente_SisBD_Contas & vNomeBDContas, [Ô][Ô], [Ô][Ô]

frmImpCorrespondencia.CRep.DisplayTabs = False CRep é o meu obejto do tipo CRViewer
frmImpCorrespondencia.CRep.ReportSource = relat
frmImpCorrespondencia.CRep.EnableExportButton = True
frmImpCorrespondencia.CRep.EnablePrintButton = False

frmImpCorrespondencia.CRep.ViewReport [ô]Nesse ponto acontece o seguinte erro

Logon failed
Details: ADO Error Code: 0x80004005
Source: Microsoft OLE DB Provider for ODBC Drivers
Description: [Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado
SQL State: IM002

Continuação do código:

frmImpCorrespondencia.CRep.Zoom 100
frmImpCorrespondencia.Show
Set crystal = Nothing
Set relat = Nothing
Temporario.Close



PROFESSOR 27/10/2011 02:29:53
#387867
Combinação interessante, CR9 (2002) + VB5 (1997) + SQL 2008 (2008).

[ô]Aqui você passa ao CR a fonte de dados, já preenchida como um Recordset.
relat.Database.SetDataSource Temporario

[ô]Aqui você diz á ele que ele que ao invés de usar o recordset, deve logar na fonte de dados.
relat.Database.LonOnServer [Ô]pdssql.dll[Ô], NomeServidor, vNomeBDContas, vUID_rpt, vPWD_rpt[ô][ô]
[ô]Ainda aqui, você está usando pdssql.dll. Se não estou enganado, o driver OleDb do CR9 para OleDb com SQL é p2ssql.dll. Em 2002, a Seagate vendeu á Business Objects o Crystal Reports, e o CR9 veio com várias alterações, incluindo o pacote de redistributáveis.

Até onde dá para ver, ainda que você tenha preenchido o recordset primário, o report ainda está usando conexão direta ao servidor para a composição de vínculos e / ou filtros do rpt principal e / ou sub-reports.

Não é o mais adequado, que seria ou mapear as fontes de dados via recordset, ou basear o report em uma view e logar no servidor, porém como eu já vi isso antes e funcionando, então não vou entrar nesse mérito.

Desse modo, se de fato o driver da versão 9 for o que eu citei, é o que resta, ocorreria esse problema com o código.

KACIOQUIN 27/10/2011 11:21:44
#387897
Pois é, mto interessante msm (rs..)

Mesmo assim, obrigado pela dica, mas acabou dando certo aqui dps q fiz algumas alterações no código e troquei a dll. Antes usava a CRAXDRT9.DLL, agora uso a CRAXDDRT9.DLL, o que praticamente fez toda a diferença

Abraço e obrigado
Tópico encerrado , respostas não são mais permitidas