Essa função eu uso com banco SQL Server, adapte ela para o MySql.
CODE
'Função que loga...
Public Shared Sub LogonToReport(ByVal ds As Object)
Dim logonInfo As New TableLogOnInfo()
Dim table As CrystalDecisions.CrystalReports.Engine.Table
For Each table In ds.ReportDocument.Database.Tables
logonInfo = table.LogOnInfo
logonInfo.ConnectionInfo.ServerName = GetVarConnection("Data Source")
logonInfo.ConnectionInfo.DatabaseName = GetVarConnection("Initial Catalog")
logonInfo.ConnectionInfo.UserID = GetVarConnection("User ID")
logonInfo.ConnectionInfo.Password = GetVarConnection("password")
table.ApplyLogOnInfo(logonInfo)
table.Location = GetVarConnection("Initial Catalog") + ".dbo." + table.Location.Substring(table.Location.LastIndexOf(".") + 1)
Next table
End Sub
CODE
'Função que lê o web.config
Shared Function GetVarConnection(ByVal var As String)
Dim strconn As String = ConfigurationSettings.AppSettings("ConnectionString")
Dim m() As String = strconn.Split(";")
Try
For i As Integer = 0 To m.Length - 1
If m(i).ToLower Like "*" & var.ToLower & "*" Then
Dim m1() As String = m(i).Split("=")
Return m1(1)
End If
Next
Catch ex As Exception
Throw
Finally
m = Nothing
End Try
End Function
Exemplo de chamada, no caso eu passo os valores dos parametros por Session.
CODE
Funcoes.LogonToReport(ds)
For i As Integer = 0 To UBound(Session("parametros_relatorio")) - 1
ds.ReportDocument.ParameterFields(i).CurrentValues.AddValue(Session("parametros_relatorio")(i))
Next
Espero ter ajudado.