CONEXAO CRYSTAL COM MYSQL

DAVIDNUNES 27/08/2011 12:37:20
#382624
Realizo a conexao assim
Set cn = New Connection
cn.ConnectionTimeout = 60
cn.CommandTimeout = 400
cn.CursorLocation = adUseClient
cn.Open [Ô]DRIVER={MySQL ODBC 3.51 Driver};[Ô] & _
[Ô]user=123d[Ô] & _
[Ô];password=123[Ô] & _
[Ô];database=123[Ô] & _
[Ô];server=123[Ô] & _
[Ô];option=[Ô] & 131072
cn.CursorLocation = adUseClient


e para chamar o relatório assim

Private Sub Command1_Click()

[ô]open new recordset & assign that to datagrid
Set Rs1 = New Recordset
Rs1.Open [Ô]select codigo,produto from Produtos[Ô], cn, adOpenDynamic, adLockOptimistic
Set DG1.DataSource = Rs1

End Sub


O erro está aqui
Report.Database.AddADOCommand rsGlobal.ActiveConnection, rsGlobal.ActiveCommand

Se alguém souber como faço para arrumar isso, por que se eu usar a conexao com acess dai funciona
[ô]Dim path As String
[ô]path = App.path & [Ô]\db1.mdb[Ô]
[ô]cn.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & path & [Ô];Persist Security Info=False[Ô]

porém no mysql não.

O erro é esse :
Server has not yet been opened
MGALDINO 27/08/2011 20:17:54
#382649
Nao sei qual versão do Crystal esta usando, mais cria uma ODBC e faz o conexão pela ODBC!
ALVAROVB2009 29/08/2011 09:35:44
#382700
DavidNunes o q vc precisa realmente é criar um DNS para o crystal de comunicar com o banco, segue abaixo um esquema para vc montar uma conexão dns no momento que vc abre o programa na máquina.

Eu não lembro onde peguei esse esquema, más eu fiz algumas mudanças, pois eu tenho um config.ini para iniciar o sistema, más eu deixei todas as linhas comentadas

Coloque em um módulo
Option Explicit

Private Const REG_SZ = 1 [ô]Constant for a string variable type.
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCreateKey Lib [Ô]advapi32.dll[Ô] Alias [Ô]RegCreateKeyA[Ô] (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib [Ô]advapi32.dll[Ô] Alias [Ô]RegSetValueExA[Ô] (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib [Ô]advapi32.dll[Ô] (ByVal hKey As Long) As Long

Public Sub Cria_DSN()
Dim DataSourceName As String
Dim DatabaseName As String
Dim Description As String
Dim DriverPath As String
Dim DriverName As String
Dim MaxUser As String
Dim Regional As String
Dim Server As String
Dim lResult As Long
Dim hKeyHandle As Long

Dim Pwd As String
Dim Uid As String
Dim Port As String


[ô]Parametros do ODBC
DataSourceName = iniReadKey(App.Path & [Ô]\config.ini[Ô], [Ô]ODBC[Ô], [Ô]DESCRIPTION[Ô]) [ô][Ô]Aqui vc coloca o nome do seu DNS [Ô]
DatabaseName = iniReadKey(App.Path & [Ô]\config.ini[Ô], [Ô]BANCO[Ô], [Ô]BANCO[Ô]) [ô][Ô]Seu BD[Ô]
Description = iniReadKey(App.Path & [Ô]\config.ini[Ô], [Ô]ODBC[Ô], [Ô]DESCRIPTION[Ô]) [ô][Ô]Pode repetir o datasource e/ou colocar as tabelas usadas separadas com /
DriverPath = [Ô]C:\Arquivos de programas\MySQL\Connector ODBC 5.1\myodbc5.dll[Ô] [ô]Onde vc vai instalar o driver
MaxUser = [Ô]ControleSindical[Ô] [ô][Ô]Repita o nome de seu DNS [Ô]
Server = iniReadKey(App.Path & [Ô]\config.ini[Ô], [Ô]DADOS[Ô], [Ô]DIRETORIO[Ô]) [ô]Ip do Servidor
DriverName = [Ô]MySQL ODBC 5.1 Driver[Ô] [ô] Aqui vc vai colocar quem eh seu BD.
Pwd = [Ô]123456789[Ô] [ô]Senha
Uid = [Ô]root[Ô] [ô]Usuario
Port = [Ô]3306[Ô] [ô]Porta


[ô]Create the new DSN key.
lResult = RegCreateKey(HKEY_LOCAL_MACHINE, [Ô]SOFTWARE\ODBC\ODBC.INI\[Ô] & DataSourceName, hKeyHandle)
[ô]Set the values of the new DSN key.
lResult = RegSetValueEx(hKeyHandle, [Ô]Database[Ô], 0&, REG_SZ, ByVal DatabaseName, Len(DatabaseName))
lResult = RegSetValueEx(hKeyHandle, [Ô]Description[Ô], 0&, REG_SZ, ByVal Description, Len(Description))
lResult = RegSetValueEx(hKeyHandle, [Ô]Driver[Ô], 0&, REG_SZ, ByVal DriverPath, Len(DriverPath))
lResult = RegSetValueEx(hKeyHandle, [Ô]MaxUser[Ô], 0&, REG_SZ, ByVal MaxUser, Len(MaxUser))
lResult = RegSetValueEx(hKeyHandle, [Ô]Server[Ô], 0&, REG_SZ, ByVal Server, Len(Server))
lResult = RegSetValueEx(hKeyHandle, [Ô]Pwd[Ô], 0&, REG_SZ, ByVal Pwd, Len(Pwd))
lResult = RegSetValueEx(hKeyHandle, [Ô]Uid[Ô], 0&, REG_SZ, ByVal Uid, Len(Uid))
lResult = RegSetValueEx(hKeyHandle, [Ô]Port[Ô], 0&, REG_SZ, ByVal Port, Len(Port))
[ô]Close the new DSN key.
lResult = RegCloseKey(hKeyHandle)
[ô]Open ODBC Data Sources key to list the new DSN in the ODBC Manager.
[ô]Specify the new value.
[ô]Close the key.
lResult = RegCreateKey(HKEY_LOCAL_MACHINE, [Ô]SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources[Ô], hKeyHandle)
lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, ByVal DriverName, Len(DriverName))
lResult = RegCloseKey(hKeyHandle)
End Sub

E qdo vc abrir o sistema, coloque o comando
Call Cria_DSN

Como em todas as máquinas que o sistema rodar, vc terá que criar o dns para o cristal funcionar, com esse esquema vc não se preocupa
Tópico encerrado , respostas não são mais permitidas