CONEXAO MYSQL 5.1

 Tópico anterior Próximo tópico Novo tópico

CONEXAO MYSQL 5.1

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#373095 - 03/05/2011 14:44:08

ADEMIRBP
LONDRINA
Cadast. em:Abril/2011


Estou fazendo a conexo do VB6 com mysql 5.1 (Baixei e j instalei o Mysql ODBC). Consegui fazer a conexo, mas na hora de fazer a consulta ocorre o seguinte erro: Os argumentos so incorretos, esto fora do intervalo aceitvel ou esto em conflito. Segue o cdigo da conexo que est module e a instruo sql:

MODULE
[]Declaraes 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 conexo
   Set Cn = CreateObject([]ADODB.Connection[])
   []**** abrindo conexo
   Cn.Open []driver={MySQL ODBC 5.1 Driver};server=localhost;uid=root;pwd=21052000;database=IbizCond[]
   []**** criando recordset
   Set Rs = CreateObject([]ADODB.RecordSet[])
   []**** efetuando conexo 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 []Sequncia automtica esgotada...[], vbInformation, []Ateno![]
               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 agradeo






#373097 - 03/05/2011 15:03:11

NETMANIA
BRASILIA
Cadast. em:Janeiro/2004


O campo CON_CODIGO do tipo numrico ou texto?

Voc tento usar o OpenRecordset somente com os parmetros do tipo de cursor e o comando SQL?



#373098 - 03/05/2011 15:06:11

ADEMIRBP
LONDRINA
Cadast. em:Abril/2011


Numrico (Int)



#373099 - 03/05/2011 15:08:20

ADEMIRBP
LONDRINA
Cadast. em:Abril/2011


Na verdade a primeira vez que ligo o myslq com o VB6, geralmente eu fao isso com o delphi. Se alguem puder me orientar se a conexo est escrito certa eu agradeo...



Resposta escolhida #373102 - 03/05/2011 15:24:22

ROMEROSISTEMAS
CACOAL
Cadast. em:Maio/2011


mdl_coneco

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 [](padro)
   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/gravaao
      .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 no Reconhecido![], vbCritical, []Banco de Dados[]
      Err.Clear
      End
      Exit Function
   End If
   Screen.MousePointer = 0
   MsgBox [] N [] & Str$(Err) & []:    Descrio:  [] & Err.Description, 16
   Err.Clear
   End
End Function


mdl_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 & [][][][] & [] no existe ou[] & _
         [] foi removido![] & []  Deseja criar um Novo? [], []Erro[], AbortarPadro, DlgSimNo, []Erro[] & _
         [] Nmero :[] & Err.Number & vbCrLf & []Descrio :[] & Err.Description & vbCrLf & []Precione [] _
         & [][][][] & []Sim[] & [][][][] & [] e tente LOCALIZAR o Banco de Dados pado, ou crie um NOVO Banco[] & _
         [] de Dados.[]
      If MdiMain.Mensagem1.Retorno = MsgNo Then
         MdiMain.Mensagem1.Mensagem []Sendo assim o Programa ser finalizado!!![], []RM_PLACE[], _
            informaoAzul, 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 Sub


eu uso assim e meu banco abre certinho sem problema...

Informatizao Empresarial
Ajudei...ento feche o post...!!!

#373108 - 03/05/2011 15:38:28

ADEMIRBP
LONDRINA
Cadast. em:Abril/2011


Resolvi de outra maneira, onde continuo mantendo a minha conexo, a diferena est na maneira como o MYSQL trata uma string SQL: Segue abaixo o cdigo caso alguem precise:

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) []ERRADO
Set Rs = Cn.Execute(Sql) []CERTO
   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) []ERRADO
       Set Rs = Cn.Execute(Sql) []CERTO
         If IsNull(Rs(0)) Then
            TxtCodigo.Text = 1
         Else
            If Rs(0) = 999999 Then
               Screen.MousePointer = 0
               MsgBox []Sequncia automtica esgotada...[], vbInformation, []Ateno![]
               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 conexo VB6 com MYSQL 5.1

---------------------
Agradeo ao ROMEROSISTEMAS pela dica, est guardada para futuras pesquisas. Vlw



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ADEMIRBP em 03/05/2011 15:39:30