CONEXAO MYSQL 5.1
                    Estou fazendo a conexão do VB6 com mysql 5.1 (Baixei e já instalei o Mysql ODBC). Consegui fazer a conexão, mas na hora de fazer a consulta ocorre o seguinte erro: Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito. Segue o código da conexão que está é module e a instrução sql:
MODULE
[ô]Declarações Globais
Global Cn As ADODB.Connection
Global Rs As ADODB.Recordset
Global Sql As String
Global Nl As String * 2
Public Function ConectarBanco()
[ô]**** criando a conexão
Set Cn = CreateObject([Ô]ADODB.Connection[Ô])
[ô]**** abrindo conexão
Cn.Open [Ô]driver={MySQL ODBC 5.1 Driver};server=localhost;uid=root;pwd=21052000;database=IbizCond[Ô]
[ô]**** criando recordset
Set Rs = CreateObject([Ô]ADODB.RecordSet[Ô])
[ô]**** efetuando conexão do recordset
Set Rs.ActiveConnection = Cn
End Function
FORM CADASTRO
Private Sub CmdSalvarFun_Click()
Sql = [Ô]SELECT CON_CODIGO FROM CONDOMINIO WHERE CON_CODIGO = [Ô] & Val(TxtCodigo.Text)
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64) [ô]O ERRO OCORRE BEM AQUI
If Rs.EOF Then
If Val(TxtCodigo.Text) = 0 Then
Sql = [Ô]SELECT MAX(CON_CODIGO) FROM CONDOMINIO[Ô]
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)
If IsNull(Rs(0)) Then
TxtCodigo.Text = 1
Else
If Rs(0) = 999999 Then
Screen.MousePointer = 0
MsgBox [Ô]Sequência automática esgotada...[Ô], vbInformation, [Ô]Atenção![Ô]
Rs.Close
TxtCodigo.SetFocus
Exit Sub
End If
TxtCodigo.Text = Rs(0) + 1
End If
Rs.Close
End If
      
Sql = [Ô]INSERT INTO CONDOMINIO VALUES( [Ô] & Val(TxtCodigo.Text) & [Ô],[ô][Ô] & Trim(TxtNome.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & Trim(TxtEndereco.Text) & [Ô][ô],[ô][Ô] & Trim(TxtBairro.Text) & [Ô][ô],[ô][Ô] & Trim(TxtCidade.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (CboUF.Text) & [Ô][ô],[ô][Ô] & (MskCNPJ.Text) & [Ô][ô],[ô][Ô] & (MskIE.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (MskTelefone.Text) & [Ô][ô],[ô][Ô] & Trim(TxtSindico.Text) & [Ô][ô],[ô][Ô] & Trim(TxtObs.Text) & [Ô][ô])[Ô]
Cn.Execute Sql, 64
End Sub
----------------------------------------
Se alguem puder me ajudar agradeço
                
            MODULE
[ô]Declarações Globais
Global Cn As ADODB.Connection
Global Rs As ADODB.Recordset
Global Sql As String
Global Nl As String * 2
Public Function ConectarBanco()
[ô]**** criando a conexão
Set Cn = CreateObject([Ô]ADODB.Connection[Ô])
[ô]**** abrindo conexão
Cn.Open [Ô]driver={MySQL ODBC 5.1 Driver};server=localhost;uid=root;pwd=21052000;database=IbizCond[Ô]
[ô]**** criando recordset
Set Rs = CreateObject([Ô]ADODB.RecordSet[Ô])
[ô]**** efetuando conexão do recordset
Set Rs.ActiveConnection = Cn
End Function
FORM CADASTRO
Private Sub CmdSalvarFun_Click()
Sql = [Ô]SELECT CON_CODIGO FROM CONDOMINIO WHERE CON_CODIGO = [Ô] & Val(TxtCodigo.Text)
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64) [ô]O ERRO OCORRE BEM AQUI
If Rs.EOF Then
If Val(TxtCodigo.Text) = 0 Then
Sql = [Ô]SELECT MAX(CON_CODIGO) FROM CONDOMINIO[Ô]
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)
If IsNull(Rs(0)) Then
TxtCodigo.Text = 1
Else
If Rs(0) = 999999 Then
Screen.MousePointer = 0
MsgBox [Ô]Sequência automática esgotada...[Ô], vbInformation, [Ô]Atenção![Ô]
Rs.Close
TxtCodigo.SetFocus
Exit Sub
End If
TxtCodigo.Text = Rs(0) + 1
End If
Rs.Close
End If
Sql = [Ô]INSERT INTO CONDOMINIO VALUES( [Ô] & Val(TxtCodigo.Text) & [Ô],[ô][Ô] & Trim(TxtNome.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & Trim(TxtEndereco.Text) & [Ô][ô],[ô][Ô] & Trim(TxtBairro.Text) & [Ô][ô],[ô][Ô] & Trim(TxtCidade.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (CboUF.Text) & [Ô][ô],[ô][Ô] & (MskCNPJ.Text) & [Ô][ô],[ô][Ô] & (MskIE.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (MskTelefone.Text) & [Ô][ô],[ô][Ô] & Trim(TxtSindico.Text) & [Ô][ô],[ô][Ô] & Trim(TxtObs.Text) & [Ô][ô])[Ô]
Cn.Execute Sql, 64
End Sub
----------------------------------------
Se alguem puder me ajudar agradeço
                    O campo CON_CODIGO é do tipo numérico ou texto?
Você tento usar o OpenRecordset somente com os parâmetros do tipo de cursor e o comando SQL?
            Você tento usar o OpenRecordset somente com os parâmetros do tipo de cursor e o comando SQL?
                    Numérico (Int)
                
            
                    Na verdade é a primeira vez que ligo o myslq com o VB6, geralmente eu faço isso com o delphi. Se alguem puder me orientar se a conexão está escrito certa eu agradeço...
                
            
                    mdl_conecção
mdl_principal
eu uso assim e meu banco abre certinho sem problema...
            Option Explicit  [ô]exige que todos os objetos sejam declarados
Public Enum Tipo_Lado
   Lado_Servidor = 2 [ô] AdUseServer
   Lado_Cliente = 3  [ô] AdUseCliente
End Enum
Public Enum Tipo_CursorType
   TC_adOpenForwardOnly = 0
   TC_adOpenKeyset = 1
   TC_adOpenDynamic = 2
   TC_adOpenStatic = 3
End Enum
Public Enum Tipo_Travamento
   TT_adLockReadyOnly = 1 [ô](padrão)
   TT_adLockOptimistic = 3
   TT_adLockPessimistic = 2
   TT_adLockBatchOptimistic = 4
End Enum
Public Conexao As ADODB.Connection
Public Senha_BD As String
[ô]usar Outros Bancos
Public UsarOutroBanco As String
Public Function MeuRecordset(SQL As String, _
                             Optional CursorLado As Tipo_Lado = Lado_Servidor, _
                             Optional Cursores As Tipo_CursorType = 0, _
                             Optional travamento As Tipo_Travamento = 1) As Recordset
   Set MeuRecordset = New ADODB.Recordset
   MeuRecordset.CursorLocation = 3
   MeuRecordset.Open SQL, Conexao, Cursores, travamento
   If Error = -2147467259 Then
      If Err.Number <> 5 Then MsgBox Err.Number & vbCrLf & Err.Description: Err.Clear
   End If
End Function
Public Function Plic(ByVal sTexto As String) As String
   If InStr(sTexto, Chr(39)) Then
      Plic = Chr(39) & Replace(sTexto, Chr(39), Chr(39) & Chr(39)) & Chr(39)
    Else
      Plic = Chr(39) & sTexto & Chr(39)
   End If
   Plic = Replace(Plic, [Ô]*[Ô], [Ô]%[Ô])
End Function
Function str_conexao_ADO(DatabasePath As String, senha As String) As Boolean
   On Error GoTo TrataErr_DB:
   Set Conexao = New ADODB.Connection
   NomeBancoDados = DatabasePath
   With Conexao
      [ô] especifica o provedor Jet
      [ô] Leitura/gravaçao
      .Mode = adModeReadWrite
      If UsarOutroBanco = [Ô]PostGre[Ô] Then
         .ConnectionString = [Ô]Provider=MSDASQL.1;Persist Security Info=true;User ID=postgres;Data[Ô] & _
            [Ô] Source=PostgreSQL30;Initial Catalog=Banco_de_Dados[Ô]
       ElseIf UsarOutroBanco = [Ô]FireBird[Ô] Then
         .ConnectionString = [Ô]Provider=ZStyle IBOLE Provider;Data Source=[Ô] & DatabasePath & [Ô][Ô] & _
            [Ô] ;UID=sysdba;password=[Ô] & senha
       ElseIf UsarOutroBanco = [Ô]SQLSERVER[Ô] Then
      Dim X
      X = GetComputerName([Ô]me[Ô])
      .ConnectionString = [Ô]Driver={SQL Server};Server=[Ô] & X & [Ô];[Ô]
       ElseIf UsarOutroBanco = [Ô]MySQL[Ô] Then
         .ConnectionString = [Ô]DRIVER={MySQL ODBC 5.1 Driver};[Ô] & [Ô]SERVER=200.196.233.50;[Ô] & [Ô][Ô] & _
            [Ô] DATABASE=romerosistemas;[Ô] & [Ô]UID=romerosistemas;PWD=maykow05; OPTION=3[Ô]
       Else
         .Provider = [Ô]Microsoft.Jet.OLEDB.4.0[Ô]
         .ConnectionString = [Ô]data source=[Ô] & DatabasePath & [Ô] ;Jet OLEDB:Database Password= [Ô] & senha
      End If
      .Open
   End With
   str_conexao_ADO = True
   Exit Function
TrataErr_DB:
   str_conexao_ADO = False
   If Err.Number = -2147467259 Then
      MsgBox [Ô]Formato do Banco de Dados não Reconhecido![Ô], vbCritical, [Ô]Banco de Dados[Ô]
      Err.Clear
      End
      Exit Function
   End If
   Screen.MousePointer = 0
   MsgBox [Ô] Nº [Ô] & Str$(Err) & [Ô]:    Descrição:  [Ô] & Err.Description, 16
   Err.Clear
   End
End Functionmdl_principal
Public Sub AbreBanco(NomeDoBanco As String, Optional senha As String)
      If str_conexao_ADO(NomeDoBanco, senha) = True Then
         Set RectTMP = MeuRecordset([Ô]SELECT * FROM Configuracao[Ô], 3, , 3)
         If RectTMP.RecordCount = 0 Then
            RectTMP.AddNew [ô]ADICIONA NOVO REGISTRO
            [ô]RectTMP.Fields([Ô]id[Ô]) = 1
            RectTMP.Fields([Ô]Data[Ô]).Value = Date
            RectTMP.Fields([Ô]Hora[Ô]) = time
            RectTMP.Fields([Ô]Descricao[Ô]).Value = LoadResString(100) & [Ô] [Ô] & LoadResString(113)
            [ô]RectTMP.Fields([Ô]Vercao[Ô]) = Format(App.Major, [Ô]0#[Ô]) & Format(App.Minor, [Ô]0#[Ô]) &
            [ô]   Format(App.Revision, [Ô]0#[Ô])
            RectTMP.Update [ô]ATUALIZA/SALVA O REGISTRO
            [ô]Serial_Int = MdiMain.BtnSerial1.DataParaChave(Day(Date) & [Ô]/[Ô] & Month(Date) & [Ô]/[Ô] &
            [ô]   Year(Date))
            [ô]GravarValorSTRING HKEY_LOCAL_MACHINE, [Ô]SOFTWARE\RM [Ô] & LoadResString(100), [Ô]Serial[Ô],
            [ô]   Serial_Int
         End If
     Else [ô]mensagem Personalizada
      MdiMain.Mensagem1.Mensagem [Ô]O Banco de dados [Ô] & [Ô][ô][ô][Ô] & NomeDoBanco & [Ô][ô][ô][Ô] & [Ô] não existe ou[Ô] & _
         [Ô] foi removido![Ô] & [Ô]  Deseja criar um Novo? [Ô], [Ô]Erro[Ô], AbortarPadrão, DlgSimNão, [Ô]Erro[Ô] & _
         [Ô] Número :[Ô] & Err.Number & vbCrLf & [Ô]Descrição :[Ô] & Err.Description & vbCrLf & [Ô]Precione [Ô] _
         & [Ô][ô][ô][Ô] & [Ô]Sim[Ô] & [Ô][ô][ô][Ô] & [Ô] e tente LOCALIZAR o Banco de Dados padão, ou crie um NOVO Banco[Ô] & _
         [Ô] de Dados.[Ô]
      If MdiMain.Mensagem1.Retorno = MsgNão Then
         MdiMain.Mensagem1.Mensagem [Ô]Sendo assim o Programa será finalizado!!![Ô], [Ô]RM_PLACE[Ô], _
            informaçãoAzul, DlgOk: End
         End
     end if
   On Error GoTo 0
End Sub
Public Sub Main()
  Dim BancoDeDados As String
  UsarOutroBanco = [Ô]MySQL[Ô]
   If UsarOutroBanco = [Ô]MySQL[Ô] Then
         AbreBanco [Ô]IP+LocalBanco[Ô], [Ô]Senha[Ô]
         [ô]Altera_Banco
         FrmSpan.Show [ô]abre a tela de Span
         FrmSpan.Tag = [Ô]login[Ô]
         FrmLogin.Show , FrmSpan [ô]abre a tela de login
         FrmLogin.ZOrder [ô]coloca a tela de login na frente
   end if
End Subeu uso assim e meu banco abre certinho sem problema...
                    Resolvi de outra maneira, onde continuo mantendo a minha conexão, a diferença está na maneira como o MYSQL trata uma string SQL: Segue abaixo o código caso alguem precise:
FORM CADASTRO
Private Sub CmdSalvarFun_Click()
Sql = [Ô]SELECT CON_CODIGO FROM CONDOMINIO WHERE CON_CODIGO = [Ô] & Val(TxtCodigo.Text)
[txt-color=#e80000] [ô][ô] Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)[/txt-color] [ô]ERRADO
[txt-color=#007100] Set Rs = Cn.Execute(Sql)[/txt-color] [ô]CERTO
If Rs.EOF Then
If Val(TxtCodigo.Text) = 0 Then
Sql = [Ô]SELECT MAX(CON_CODIGO) FROM CONDOMINIO[Ô]
[txt-color=#e80000] [ô][ô] Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)[/txt-color] [ô]ERRADO
[txt-color=#007100] Set Rs = Cn.Execute(Sql)[/txt-color] [ô]CERTO
If IsNull(Rs(0)) Then
TxtCodigo.Text = 1
Else
If Rs(0) = 999999 Then
Screen.MousePointer = 0
MsgBox [Ô]Sequência automática esgotada...[Ô], vbInformation, [Ô]Atenção![Ô]
Rs.Close
TxtCodigo.SetFocus
Exit Sub
End If
TxtCodigo.Text = Rs(0) + 1
End If
Rs.Close
End If
      
Sql = [Ô]INSERT INTO CONDOMINIO VALUES( [Ô] & Val(TxtCodigo.Text) & [Ô],[ô][Ô] & Trim(TxtNome.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & Trim(TxtEndereco.Text) & [Ô][ô],[ô][Ô] & Trim(TxtBairro.Text) & [Ô][ô],[ô][Ô] & Trim(TxtCidade.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (CboUF.Text) & [Ô][ô],[ô][Ô] & (MskCNPJ.Text) & [Ô][ô],[ô][Ô] & (MskIE.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (MskTelefone.Text) & [Ô][ô],[ô][Ô] & Trim(TxtSindico.Text) & [Ô][ô],[ô][Ô] & Trim(TxtObs.Text) & [Ô][ô])[Ô]
Cn.Execute Sql, 64
End Sub
----------------------
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64) [ô]FUNCIONA BEM PARA ACESS MDB
Set Rs = Cn.Execute(Sql) [ô]Funcionou para minha conexão VB6 com MYSQL 5.1
---------------------
Agradeço ao ROMEROSISTEMAS pela dica, está guardada para futuras pesquisas. Vlw
            FORM CADASTRO
Private Sub CmdSalvarFun_Click()
Sql = [Ô]SELECT CON_CODIGO FROM CONDOMINIO WHERE CON_CODIGO = [Ô] & Val(TxtCodigo.Text)
[txt-color=#e80000] [ô][ô] Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)[/txt-color] [ô]ERRADO
[txt-color=#007100] Set Rs = Cn.Execute(Sql)[/txt-color] [ô]CERTO
If Rs.EOF Then
If Val(TxtCodigo.Text) = 0 Then
Sql = [Ô]SELECT MAX(CON_CODIGO) FROM CONDOMINIO[Ô]
[txt-color=#e80000] [ô][ô] Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64)[/txt-color] [ô]ERRADO
[txt-color=#007100] Set Rs = Cn.Execute(Sql)[/txt-color] [ô]CERTO
If IsNull(Rs(0)) Then
TxtCodigo.Text = 1
Else
If Rs(0) = 999999 Then
Screen.MousePointer = 0
MsgBox [Ô]Sequência automática esgotada...[Ô], vbInformation, [Ô]Atenção![Ô]
Rs.Close
TxtCodigo.SetFocus
Exit Sub
End If
TxtCodigo.Text = Rs(0) + 1
End If
Rs.Close
End If
Sql = [Ô]INSERT INTO CONDOMINIO VALUES( [Ô] & Val(TxtCodigo.Text) & [Ô],[ô][Ô] & Trim(TxtNome.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & Trim(TxtEndereco.Text) & [Ô][ô],[ô][Ô] & Trim(TxtBairro.Text) & [Ô][ô],[ô][Ô] & Trim(TxtCidade.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (CboUF.Text) & [Ô][ô],[ô][Ô] & (MskCNPJ.Text) & [Ô][ô],[ô][Ô] & (MskIE.Text) & [Ô][ô],[Ô] & Nl
Sql = Sql & [Ô][ô][Ô] & (MskTelefone.Text) & [Ô][ô],[ô][Ô] & Trim(TxtSindico.Text) & [Ô][ô],[ô][Ô] & Trim(TxtObs.Text) & [Ô][ô])[Ô]
Cn.Execute Sql, 64
End Sub
----------------------
Set Rs = Cn.OpenResultset(Sql, rdOpenForwardOnly, 1, 64) [ô]FUNCIONA BEM PARA ACESS MDB
Set Rs = Cn.Execute(Sql) [ô]Funcionou para minha conexão VB6 com MYSQL 5.1
---------------------
Agradeço ao ROMEROSISTEMAS pela dica, está guardada para futuras pesquisas. Vlw
                        Tópico encerrado , respostas não são mais permitidas
                    
                

