MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Erro na buca menor valor em base MySQL

    Compartilhe

    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 15/06/2013

    [Resolvido]Erro na buca menor valor em base MySQL

    Mensagem  Eloirp em Qui 12 Jun 2014, 15:06

    Não estou conseguindo fazer funcionar a busca no MySQL quando coloco a instrução MIN para localizar o menor valor, sendo que quando rodo na base local access funciona perfeitamente!
    Também se coloco a instrução SQL diretamente no servidor MySQL e executo traz o valor correto!

    Erro em tempo de execução '3265'
    o item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado


    Na base MySQL este campo está definido como DECIMAL(10,2)

    Sub Load_PVCR()
       strRS = "SELECT Min(Preco) FROM tbl_CrossReference_Preco WHERE Produto='" & Me.Codigo & "' AND Status='ATIVO' AND Preco>0"
       Call Cnn_Open
       Set rs = New ADODB.Recordset
       With rs
           Set .ActiveConnection = Cnn
           .Source = strRS
           .LockType = adLockOptimistic
           .CursorType = adOpenKeyset
           .Open
       End With
                   
       If Not rs.BOF Then
           Me.PVCR.Value = Replace(rs!Preco, ".", ",")
       End If
       
       Set rs = Nothing: Close
       Set Cnn = Nothing: Close
    End Sub

    Giovanny
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 20/10/2011

    Resposta erro de busca MySql

    Mensagem  Giovanny em Qui 12 Jun 2014, 19:04

    Caro amigo,

    esse erro é devido ao nome do seu campo que está sendo setado pelo rs!.
    Você já verificou se o campo do seu recordset é rs!preco?

    Caso não consigo solucionar este pequeno detalhe entre você e o seu sql.
    Opte por outra abordagem que são muitas,creio que para um objetivo tão
    simples como esse não seria mais fácil utilizar um DFirst?

    VALORMINIMO = DMIN("NOMEDOCAMPO","NOMEDATABELA","CONDIÇÃO")

    caso opte pelo SELECT MIN(NOMEDOCAMPO) FROM NOMETABELA

    não é necessário utilizar o rs.bof
    pois ele irá retornar somente um registro ,não tendo registros a percorrer.

    espero que te ajude.

    vlw

    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 15/06/2013

    Re: [Resolvido]Erro na buca menor valor em base MySQL

    Mensagem  Eloirp em Qui 12 Jun 2014, 20:27

    Olá Giovanny,

    Primeiro, muito obrigado pela ajuda!
    Porém não sei se observou no título to tópico que estou acessando os dados de uma base MySQL e esta base está em servidor externo, logo estou trabalhando tudo desvinculado, assim acho que o DMin não funciona, certo? O que está rodando atualmente é com back-end e front-end e uso o Dmin, porém estou convertendo para base externa e por isso estão surgindo estas pequenas dúvidas!
    Qto ao nome do campo na base está correto sim...
    A sintaxe que vc passa do SQL é a mesma que estou utilizando, então não teria porque mudar! Acredito que deve ser alguma diferença por ser devido a mudança para MySQL e algum ajuste entre Access e MySQL! Antes de abrir o tópico eu pesquisei tanto no fórum quanto fora, mas nas pesquisas que fiz sempre cai na mesma sintaxe e se rodo ela diretamente na base dá certo!

    Giovanny
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 20/10/2011

    Erro na busca menor valor em base MySQL

    Mensagem  Giovanny em Sex 13 Jun 2014, 12:23

    Bom dia ,caro amigo.

    sempre é um prazer poder ajudar.
    Neste caso te aconselho o seguinte,mudar o evento que executa a função para um botão no evento Ao Clicar,
    e mudando a busca da sua consulta para uma ficticia somente para dividirmos o problema e identifica-lo.
    mudando a busca mudará também o nome do campo que você vai mudar,tente colocar um campo que seja string
    para que façamos essa comparação e usando o break para ver se ele chegar a conectar no banco realmente e em que momento ele ocorre o erro.

    Aguardo resposta.

    Abraco

    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 15/06/2013

    Re: [Resolvido]Erro na buca menor valor em base MySQL

    Mensagem  Eloirp em Sex 13 Jun 2014, 14:42

    Novamente lhe agradeço Giovanny pelo empenho em me ajudar!

    Fiz uma pequena alteração na instrução SQL e deu certo!

    Era:
    strRS = "SELECT Min(Preco) FROM tbl_CrossReference_Preco WHERE Produto='" & Me.Codigo & "' AND Status='ATIVO' AND Preco>0"

    Ficou:
    strRS = "SELECT Preco FROM tbl_CrossReference_Preco WHERE Preco=(SELECT Min(Preco) FROM tbl_CrossReference_Preco WHERE Produto='" & Me.Codigo & "' AND Preco > 0 AND Status = 'ATIVO')"

    Sendo que o restante permaneceu da mesma forma que estava...
    Sub Load_PVCR()

       strRS = "SELECT Preco FROM tbl_CrossReference_Preco WHERE Preco=(SELECT Min(Preco) FROM tbl_CrossReference_Preco WHERE Produto='" & Me.Codigo & "' AND Preco > 0 AND Status = 'ATIVO')"
       Call Cnn_Open
       Set rs = New ADODB.Recordset
       With rs
           Set .ActiveConnection = Cnn
           .Source = strRS
           .LockType = adLockOptimistic
           .CursorType = adOpenKeyset
           .Open
       End With
                   
       If Not rs.BOF Then
           Me.PVCR.Value = Replace(rs!Preco, ".", ",")
       End If
       
       Set rs = Nothing: Close
       Set Cnn = Nothing: Close
    End Sub


    Mas também funciona assim:
    strRS = "SELECT Min(Preco) as PVCR FROM tbl_CrossReference_Preco WHERE Produto='" & Me.Codigo & "' AND Status='ATIVO' AND Preco>0"

    Neste caso substitui Me.PVCR.Value = Replace(rs!Preco, ".", ",") por Me.PVCR.Value = Replace(rs!PVCR, ".", ",")

      Data/hora atual: Sex 09 Dez 2016, 03:48