MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 153
    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
    avatar
    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
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 153
    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!
    avatar
    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
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 153
    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: Ter 21 Nov 2017, 00:55