DUVIDA CRYSTAL REPORTS X MYSQL
Olá gente, seguinte, estou migrando para mysql meus sistemas, mas tenho uma dúvida.
No meu sistema eu chamo a conexão por string de conexão:
DATABASE=xxx; SERVER=xxx; UID=xxx; PASSWORD=xxx
Mas o crystal, pelo que estou vendo só aceita chamar se eu colcoar esse linha:
CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]bd[Ô], [Ô]root[Ô], [Ô]123[Ô], onde TESTEODBC é um DSN.
A pergunta é a seguinte, eu consigo disparar o cystal sem pssar o DSN como parâmetro? porque se for assim, vou ter que criar o DSN em todas as máquinas e por string de conexão como faço no sistema eu num preciso criar DSN em todas as máquinas.
Estou errado ou tem outro jeito de disparar o crystal sem pasar DSN ? porque assim se tiver 100 máquinas vou ter que criar DSN em todas...
abraços e desde já agradecido.
No meu sistema eu chamo a conexão por string de conexão:
DATABASE=xxx; SERVER=xxx; UID=xxx; PASSWORD=xxx
Mas o crystal, pelo que estou vendo só aceita chamar se eu colcoar esse linha:
CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]bd[Ô], [Ô]root[Ô], [Ô]123[Ô], onde TESTEODBC é um DSN.
A pergunta é a seguinte, eu consigo disparar o cystal sem pssar o DSN como parâmetro? porque se for assim, vou ter que criar o DSN em todas as máquinas e por string de conexão como faço no sistema eu num preciso criar DSN em todas as máquinas.
Estou errado ou tem outro jeito de disparar o crystal sem pasar DSN ? porque assim se tiver 100 máquinas vou ter que criar DSN em todas...
abraços e desde já agradecido.
GFASSIO, vc pode criar um ODBC, veja se lhe ajuda:
Como criar uma conexao com o crystal sem usar DNS:
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=317410&varWorld=
Como criar uma conexao com o crystal sem usar DNS:
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=317410&varWorld=
Então, mas eu uso o crystal 4.6...
como que faço?
Quais as propriedades tenho que setar quando chamo o crystal?
eu uso:
1 - CrystalReport1.ReportFileName = [Ô]c:elatorio.rpt[Ô]
2 - CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]terminal[Ô], [Ô]root[Ô], [Ô]123[Ô]
3 - CrystalReport1.Action = 1
Eu nao queria er que usar a linha 2
abrigado pela ajuda!
como que faço?
Quais as propriedades tenho que setar quando chamo o crystal?
eu uso:
1 - CrystalReport1.ReportFileName = [Ô]c:elatorio.rpt[Ô]
2 - CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]terminal[Ô], [Ô]root[Ô], [Ô]123[Ô]
3 - CrystalReport1.Action = 1
Eu nao queria er que usar a linha 2
abrigado pela ajuda!
Hummm, bom, tenta assim que acho que vai na boa, veja:
Aqui vamos derrubar a varialvel para evitar problemas com memoria.
Tenta ae.
Option Explicit
Dim Report As CrystalReport
Private Sub Form_Load()
CrystalRet.ReportFileName = [Ô]C:\seu caminho\seu report\[Ô]
End Sub
Aqui vamos derrubar a varialvel para evitar problemas com memoria.
Private Sub Form_Unload(Cancel As Integer)
Set Report = Nothing
End Sub
Tenta ae.
Obrigado pela ajuda Ferraz, mas eu não entedi.
Onde eu coloco os parêmetros/propriedades e onde eu coloco o metodo .action?
Muito obrigado pela atenção
Onde eu coloco os parêmetros/propriedades e onde eu coloco o metodo .action?
Muito obrigado pela atenção
GFASSIO, olha so, vc pode usar as propriedades nesta linha:
Na verdade, vc pode usar as propriedades da mesma forma que vc conhece, tenta ae.
Private Sub Form_Load()
CrystalRet.ReportFileName = [Ô]C:\Seu caminho\Seu report[Ô]
CryatalRet.Report.WindowTitle = [Ô]Seu Titulo[Ô]
CrystalRet.CopiesToPrinter = 1
CrystalRet.Destination = crptToWindow
CrystalRet.SortFields(0) = [Ô]+{Campo especifico do report que queira}[Ô]
CrystalRet.Action = 1
End Sub
Na verdade, vc pode usar as propriedades da mesma forma que vc conhece, tenta ae.
Ferraz, se eu não colocar a propriedade
CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]terminal[Ô], [Ô]root[Ô], [Ô]123[Ô]
ele dá a mensagem:
[txt-color=#e80000][ô]Cannot open SQL Server[ô] [/txt-color], mas se eu coloco ele dá certo.
Tudo bem sendo assim é só eu colocar a linha mas ai no caso vou ter que criar o DSN TESTEODBC em TODAS as máquina da rede, exatamente o que eu num quero.
Tem algum jeito, API ou outra modo de criar um DSN via código? ai eu fazia o próprio sistema criar e pronto.
abraços e obrigado mais uma vez!
CrystalReport1.LogOnServer [Ô]pdsodbc.dll[Ô], [Ô]TESTEODBC[Ô], [Ô]terminal[Ô], [Ô]root[Ô], [Ô]123[Ô]
ele dá a mensagem:
[txt-color=#e80000][ô]Cannot open SQL Server[ô] [/txt-color], mas se eu coloco ele dá certo.
Tudo bem sendo assim é só eu colocar a linha mas ai no caso vou ter que criar o DSN TESTEODBC em TODAS as máquina da rede, exatamente o que eu num quero.
Tem algum jeito, API ou outra modo de criar um DSN via código? ai eu fazia o próprio sistema criar e pronto.
abraços e obrigado mais uma vez!
GFASSIO, olha, este exemplo aqui monta um DNS caso a maquina nao tenha, agora, nao testei, mais acredito que ira funcionar, veja:
Veja se funciona como esperado, substitua certinho que acho que vai na boa.
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
Private 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
[ô]Specify the DSN parameters.
DataSourceName = [Ô]Aqui vc coloca o nome do seu DNS [Ô]
DatabaseName = [Ô]Seu BD[Ô]
Description = [Ô]Sua tabela/Sua tabela[Ô] [ô]se tiver mais de uma, vc coloca barra depois do nome e vai preenchendo.
DriverPath = [Ô]C:WindowsSystem32[Ô] [ô]Onde vc vai estalar o driver
MaxUser = [Ô]Repita o nome de seu DNS [Ô]
Server = 192.0.8.8 [ô]Ip do Servidor
DriverName = [Ô]SQL Server[Ô] [ô] Aqui vc vai colocar quem eh seu BD.
[ô]Create the new DSN key.
lResult = RegCreateKey(HKEY_LOCAL_MACHINE, [Ô]SOFTWAREODBCODBC.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))
[ô]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, _
[Ô]SOFTWAREODBCODBC.INIODBC Data Sources[Ô], hKeyHandle)
lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, _
ByVal DriverName, Len(DriverName))
lResult = RegCloseKey(hKeyHandle)
End Sub
Veja se funciona como esperado, substitua certinho que acho que vai na boa.
Obrigado Ferraz, vou fazer isso mesmo quando eu entrar no sistema jám ando ele criar aozinho o DNS, ai pode ter 1 ou 1000 máquinas no cliente né
Obrigado pela atenção!
Abraços
Obrigado pela atenção!
Abraços
Tópico encerrado , respostas não são mais permitidas