Ir para conteúdo
Fórum Script Brasil
  • 0

Crystal 8.5 Sem ODBC


Pandox

Pergunta

Bom Dia, sou novo no fórum, estou alterando em um projeto todas as suas conexões via OBDC para conexão Nativa com o Banco de Dados, até ai tudo bem, porem eu tive um problema os meus relatórios via Crystal estão fazendo conexão via ODBC com o Banco de Dados, eu gostaria que o Crystal enxergasse meu banco e suas tabelas sem ODBC, alguém sabe como ?

Eu utilizo VB6

Obrigado

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

hum na hora de selecionar o banco (Database -> Set Location), acho q se você entra na opcao More Data Sources -> Active Data -> Active Data (ADO), seleciona a opcao ADO and OLE DB e adicionar a connection string do seu banco (ou clicar em Build... pra fazer por wizard) deve funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, obrigado pela ajuda, porem eu estou tirando qualquer referencia de componentes do meu projeto ou seja, eu queria fazr um conexao Nativa mesmo, sem ADO, ODBC, DAO, vou te dar um exemplo, no meu projeto eu tenho um .INI onde eu coloco todas as referencias de onde esta o meu bando.

Dim cArq As String, wQry As String, nH As Long, wP As String, ws As String

    If App.PrevInstance Then
        MsgBox ("A aplicação já se encontra aberta !")
        End
    End If
    
   projeto = "TRANSPORTE"
    DbDir = ""
    ImpNF = ""
    nH = GetDesktopWindow          'Pega o Handler da Screen
    
    cArq = App.Path + "\TRANSP.Ini"
    If Dir(cArq) <> "" Then
        Open cArq For Input Access Read As #1
        Do While Not EOF(1)
           Line Input #1, wQry

           If InStr(wQry, "SER=") > 0 Then
              Srv = Mid(wQry, InStr(wQry, "=") + 1, Len(Trim(wQry)))
           ElseIf InStr(wQry, "BCO=") > 0 Then
              Bco = UCase(Mid(wQry, InStr(wQry, "=") + 1, Len(Trim(wQry))))
           ElseIf InStr(wQry, "UID=") > 0 Then
              Usr = Mid(wQry, InStr(wQry, "=") + 1, Len(Trim(wQry)))
           ElseIf InStr(wQry, "PWD=") > 0 Then
              PWD = Val(Mid(wQry, InStr(wQry, "=") + 1, Len(Trim(wQry))))
              If PWD = 0 Then PWD = ""
           ElseIf InStr(wQry, "PRT=") > 0 Then
              Porta = Val(Mid(wQry, InStr(wQry, "=") + 1, Len(Trim(wQry))))
           End If
           
        Loop
        Close #1
    End If
nesse codigo eu pego as informações do meu INI
gMyConn.SetOption MYSQL_OPT_COMPRESS
    gMyConn.OpenConnection Srv, Usr, PWD, Bco, 3306
    If gMyConn.State = MY_CONN_OPEN Then

aqui eu faço o teste para ver se eu me conectei com o Banco, por isso eu não quero nenhuma ligações pois já tive muitos problemas com ODBC. tem como fazer uma ligação nativa com o Crystal, só referenciando a tabela ?

Obrigado

Editado por Pandox
Link para o comentário
Compartilhar em outros sites

  • 0

a mais ai pra fazer essa conexao ativa você usou algum componente no visual basic 6 não?? esse objeto gMyConn é de q dll??

ai no crystal não conheco nd assim não. talvez se você encontrasse por ai alguma dll q fizesse isso em conjunto com o crystal...

o q eu sei tb é q tem uma opcao no crystal de você fazer a conexao a partir de um Crystal Dictionary ou de um Cystal SQL Query File q seriam formas de gravar uma query num txt q retornaria uma view dos dados q você quer pegar do banco de dados. e ai o vinculo do crystal fica com o arquivo e não com o banco.

mas não sei os detalhes de como usar esses arquivos e tb tem poca informacao na internet. alem de q não sei se internamente você teria q especificar uma conexao odbc ou oledb no arquivo, mas talvez ele faca a conexao nativa, talvez se você fosse atras disso funcionasse pra você, mas deve dar trabalho achar informacoes sobre isso.

uma opcao q talvez funcionasse pra você seria no crystal você dexar apenas a definicao do tabela. e ai você preenche a tabela a partir dos dados do recordset do visual basic. como na explicacao aqui:

http://scriptbrasil.com.br/forum/index.php...st&p=477615

mas não sei se vai funcionar com esse objeto q você ta usando.

ou talvez vale a pena tentar o oledb, não sei q problemas você teve com o odbc...

agora caso você descubra alguma coisa sobre a conexao nativa, posta ai q tb quero saber, falou.

Link para o comentário
Compartilhar em outros sites

  • 0
a mais ai pra fazer essa conexao ativa você usou algum componente no visual basic 6 não?? esse objeto gMyConn é de q dll??
Eu utilizo duas dll´s chamada MyVbQL.dll e a libmysql.dll, ambas juntamente com o meu codigo fazem a conexão com o Banco de Dados, caso você ou alguém queira saber sobre isso me fale que eu explico direito e mando as dll´s, porem uma coisa eu garanto o seu programa fica muito mais rapido, porem é muita mão de obra.

ou talvez vale a pena tentar o oledb, não sei q problemas você teve com o odbc...

eu tive problemas com varios clientes que mudaram para Windows Server 2003 e a conexão ficou muito lenta, isso quando o projeto entreva, ai fizemos o teste desta conexão nativa e o projeto teve uma grande evolução em processamento.

eu irei dar uma olhada no tópico que você me mandou para dar um olhada.

Muito Obrigado !

Link para o comentário
Compartilhar em outros sites

  • 0

a então, era essa linha aqui:

cr.Database.Tables(1).SetDataSource rs, 3

agora não sei como funciona essa sua dll ai. no exemplo ai, o rs é um recordset ADO aberto com uma consulta na mesma estrutura q você criou no Crystal. deve funcionar com um recordset DAO tb, agora tem q ver o seu componente como funciona. tem algum objeto (ou propriedade de objeto) q funcione como um recordset (q armazene os registros selecionados)?? tente passar ele como parametro.

Link para o comentário
Compartilhar em outros sites

  • 0
tem algum objeto (ou propriedade de objeto) q funcione como um recordset (q armazene os registros selecionados)?? tente passar ele como parametro.

a dll substitui o Adodc e assim sendo ela substitui o recordset.

um exemplo:

Quando eu declarava um Recordset assim

Dim rsTeste as Recordset

agora eu declaro assim

Dim rsTeste as Mysql_Rs

quando eu fazia um select no recordset, era assim

Set rsTeste = arqmdb.OpenRecordset("Select table * from",dbOpenSnapShot)

agora é assim

Set rsTeste = gmyconn.Execute("Select table * from")

isso que muda, essa dll alem de substituir a Odbc, ela faz um recordset em memoria

Link para o comentário
Compartilhar em outros sites

  • 0
isso que muda, essa dll alem de substituir a Odbc, ela faz um recordset em memoria

é você tentou passar o rs_teste desse tipo Mysql_Rs?? e não funcionou??

Consegui fazer, porem com SQlServer, mas com Mysql(banco que eu utilizo não), alguém sabe como ?

você conseguiu fazer ele se conectar a partir do ini?? isso pelo visual basic ou direto no crystal??

Link para o comentário
Compartilhar em outros sites

  • 0
é você tentou passar o rs_teste desse tipo Mysql_Rs?? e não funcionou??
eu não consegui passar!

você conseguiu fazer ele se conectar a partir do ini?? isso pelo visual basic ou direto no crystal??

Eu embuti o Crystal dento do Visual Basic, e peguei a conexão por SQLServer, ele achou os bancos, porem ele não me da uma opção para MySql, eu fiz isso pelo proprio Crystal

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...