MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    [Resolvido]Mudar consulta para VBA.

    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 30/8/2014, 19:54

    Prezados, boa tarde,

    Tenho a consulta abaixo que filtro os dados por meio da combo cboEnviados em meu formulário.

    Alguém pode me ajudar a transformar essa consulta em código VBA?

    SELECT DISTINCT Enviado.NomeServiço, Enviado.CódGuia
    FROM Enviado
    WHERE (((Enviado.NomeServiço) Like "*Pacote*") AND ((Enviado.CódGuia) Like "*" & [Forms]![Form_Itens enviados]![cboEnviados] & "*"));
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 30/8/2014, 20:36

    Boa noite,
    Deve utilizar a expressão onde precisar.
    Para indicar origem de dados em recordset? set rst=currentdb.openrecordset(Expressão)
    Para indicar origem de controlo? Controlo.rowsource= Expressão
    ...


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 30/8/2014, 20:59

    Boa tarde,

    Então Alexandre,

    Utilizei a comando abaixo e ainda assim não está funcionando:

    Dim strSql As String
    strSql = "SELECT Enviado.NomeServiço, Enviado.CódGuia FROM Enviado WHERE Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] & " * ";"
    Me.RecordSource = strSql
    End Sub

    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 31/8/2014, 00:16

    Consegui alterar para VBA a minha consulta, coloquei um If na combo para cair na seguinte condição: Após atualizar se encontrar no filtro a palavra (Pacote), emite um vbCritical, e se não tiver a palavra dita deve cair na condição Else.

    Meu problema é que nenhuma cai no Else.
    Onde posso está errado?

    Dim strSql As String
    strSql = "SELECT FROM Enviado WHERE Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] & " * "; " 'coloca a tabela pretendida no sql
    If (Me.NomeServiço = ("SELECT FROM Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] ")) Then 'se a caixa de texto não estiver vazia, monta o sql

    Else
    MsgBox "Esta guia possui Pacote, deseja realizar o pagamento manual", vbCritical, "Aperação Cancelada"

    End If
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 31/8/2014, 21:26

    Boa noite,
    Descreva todos os pormenores. Colocou um if na combo? o que é isso?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    toyebom
    toyebom
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1128
    Registrado : 18/07/2012

    [Resolvido]Mudar consulta para VBA. Empty Mudar consulta para VBA.

    Mensagem  toyebom 31/8/2014, 22:06

    Dás a instrução mas falta-te o que queres que ela fassa

    Dim strSql As String
    strSql = "SELECT FROM Enviado WHERE Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] & " * "; "
    If (Me.NomeServiço = ("SELECT FROM Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] ")) Then

    O quê?

    Else
    MsgBox "Esta guia possui Pacote, deseja realizar o pagamento manual", vbCritical, "Aperação Cancelada"

    End If


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 31/8/2014, 22:22

    Seria assim,
    Após atualizar a combo ele me diz se no filtro que eu realizei possui a palavra PACOTE deve mostra a msgbox: essa conta possui pacote.
    caso não tenha tal palavra o código não deve faz nada. Porém, como disse, em todos casos está aparecendo a msgbox.

    Agradeço cada umomento que respondido meus postado no fórum.
    toyebom
    toyebom
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1128
    Registrado : 18/07/2012

    [Resolvido]Mudar consulta para VBA. Empty Mudar consulta para VBA.

    Mensagem  toyebom 31/8/2014, 22:28

    Não estou a compreender muito bem o código mas julgo que tens ao contrário o else. Ve se é assim:

    Dim strSql As String
    strSql = "SELECT FROM Enviado WHERE Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] & " * "; "
    If (Me.NomeServiço = ("SELECT FROM Enviado.NomeServiço Like " * Pacote * " AND Enviado.CódGuia Like " * " & [Forms]![Form_Itens enviados]![cboEnviados] ")) Then

    MsgBox "Esta guia possui Pacote, deseja realizar o pagamento manual", vbCritical, "Aperação Cancelada"

    Else


    End If


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 31/8/2014, 22:49

    Ok. Não deu certo.

    Deixo um exemplo para avaliação.

    https://www.dropbox.com/s/akllwalnae3ny14/exemplo.accdb?dl=0


    1- Nas combos eu escolho a Guia que pretendo analisar (858425802).
    2 - Após atualizar a combo Filtrar Data o código me mostra se há ou não pacote.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 1/9/2014, 00:28

    Será isto que pretende
    Private Sub cboDtAtendimento_AfterUpdate()
    On Error Resume Next
    Dim Filtro As String
    If Not IsNull(Me.cboDtAtendimento) Then Filtro = " and [DtAtendimento] = '" & Me.cboDtAtendimento & "'"
    If Not IsNull(Me.cboEnviados) Then Filtro = Filtro & " and [CódGuia] = '" & Me.cboEnviados & "'"
    DoCmd.ApplyFilter , Mid(Filtro, 6)
    Me.cboGIH.SetFocus
    Me.cboGIH.Requery
    Me.cboGIH.Dropdown

    If DCount("*", "Enviado", "InStr(1,NomeServiço,'Pacote')>0 AND CódGuia=" & [Forms]![Form_Itens enviados]![cboEnviados]) > 0 Then
    If MsgBox("Esta guia possui Pacote, deseja realizar o pagamento manual", vbYesNo) = vbYes Then
    'realizar pagamento semanal
    Else
    MsgBox "Operação Cancelada"
    End If
    End If

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 1/9/2014, 01:00

    Alexandre,

    Agradeço a atenção!

    O código ainda está funcionando para todos os casos, ou seja, ele ainda está caindo dentro do mesmo critério. Na combo eu seleciono uma guia que não tem pacote e o sistema ainda assim mostra a mensagem de que tem pacote. Não queria que a mensagem aparecesse para esse caso.

    Na mensagem anterior postei um exemplo das duas guias abaixo:

    858425802 - Essa tem pacote e deveria mostrar a mensagem (Esta guia possui Pacote, deseja realizar o pagamento manual) após atualizar a combo.
    1142372379 - Essa não tem pacote e não deveria mostrar a mensagem após atualizar a combo.

    Grato pela ajudar!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 1/9/2014, 10:04

    Bom dia
    CódGuia está como texto!. Substitua por
    If DCount("*", "Enviado", "InStr(1,NomeServiço,'Pacote')>0 AND CódGuia='" & [Forms]![Form_Itens enviados]![cboEnviados] & "'") > 0 Then


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 1/9/2014, 12:25

    Alexandre, bom dia,

    O código funcionou perfeitamente.

    Uma dúvida?
    Como eu tenho vários Pacotes, se eu não souber o completo do Pacote. Posso usar algo como Like Pacot* ?

    If DCount("*", "Enviado", "InStr(1,NomeServiço,'Pacote')>0 AND CódGuia='" & [Forms]![Form_Itens enviados]![cboEnviados] & "'") > 0 Then

    Grato,
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 1/9/2014, 15:00

    Pode, mas pode acontecer ter pacotes semelhantes (1234 e 12345) e ter resultados errados. O like devolve resultados que estejam contidos na expressão


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 1/9/2014, 15:10

    Então,

    Seria isso que pretendo.

    Porque na minha tabela vão ter mais de 50 pacotes.

    Estariam assim:
    PACOTE CATETERISMO
    PACOTE ANGIOPLASTIA
    .
    .
    .
    Etc...
    E outros mais...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 1/9/2014, 16:15

    Isso, o quê? Não entendi o que pretende


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 1/9/2014, 17:26

    Pretendo utilizar o like devolva o resultado dos registros encontrados no filtro.

    Algo assim:

    If DCount("*", "Enviado", "InStr(1,NomeServiço,'Like Pacote*')>0 AND CódGuia='" & [Forms]![Form_Itens enviados]![cboEnviados] & "'") > 0 Then
    e o codigo me traga o Pacote.

    Seja PACOTE CATETERISMO ou PACOTE ANGIOPLASTIA.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Alexandre Neves 1/9/2014, 17:59

    O Like é um operador. Não o envolva nas pelicas
    Coloque
    If DCount("*", "Enviado", "NomeServiço Like 'Pacote*')>0 AND CódGuia='" & [Forms]![Form_Itens enviados]![cboEnviados] & "'") > 0 Then


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  XPTOS 1/9/2014, 18:09

    É isso mesmo que queria amigo.

    Grato por sua valiosa ajuda,

    Conteúdo patrocinado


    [Resolvido]Mudar consulta para VBA. Empty Re: [Resolvido]Mudar consulta para VBA.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 05:21