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

2 participantes

    [Resolvido]Filtro em Relatório com muitas variaveis

    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Filtro em Relatório com muitas variaveis

    Mensagem  ton0612 11/10/2011, 17:11

    Bom dia pessoal tudo bem?

    Estou precisando de uma ajudinha...
    Preciso gerar um relatório mas com filtros da seguinte forma:
    Tenha os campos em um form.
    txtLinha, txtmodelo, txtMaterial, txtFormato, txtCor, txtStatus - todos texto

    e preciso gerar eles como filtro. tentei colocar diretamente na consulta "Como "*" & Forms!MeuForm!txtcampo & "*" " e funcionou, mas mostrava não só o valor que eu queria mas os valores parecidos tipo txtformato =1 abria o 1, 11, 10, 12.., 21 e todos que tinha o 1 (como texto) quando tentei tirar os "*" nao abria nada... pois nem sempre uso todos os filtros juntos, entao resolvi tentar gerar o filtro em Vb...

    defini 6 variaveis

    Dim Linha, Modelo, Material, Formato, Cor, Status As String

    e tentei gerar o valor delas para abrir o form, por exemplo

    If Not IsNull(Me.txtLinha) Then
    Linha = Me.txtLinha
    else
    Linha = "*" 'ja tentei sem aspas e o vb nao permite.
    End If

    DoCmd.OpenReport "rlt Saldo em Estoque", acViewPreview, , "Cod_Linha='" & Linha & "'", acWindowNormal

    ele só abre qd o campo esta totalmente preenchido, se estiver em branco ele nao abre.
    e depois ainda terei que filtrar com mais os outros campos que ficaria algo tipo: "Cod_Linha='" & Linha & "' And Cod_Modelo='" & Modelo & "'And Cod........" até o sexto.


    alguem pode me ajudar por favor... desde ja muito obrigado.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Re: [Resolvido]Filtro em Relatório com muitas variaveis

    Mensagem  Alexandre Neves 11/10/2011, 18:16

    Boa tarde, ton

    será
    Dim strFiltro as string
    strFiltro=""
    If Not IsNull(Me.txtLinha) Then
    strFiltro = "Cod_Linha='" & Me.txtLinha & "'"
    ElseIf Not IsNull(Me.txtModelo) Then
    if strFiltro="" then
    strFiltro = "Cod_Modelo='" & Me.txtModelo & "'"
    Else
    strFiltro = strFiltro " and Cod_Modelo='" & Me.txtModelo & "'"
    ElseIf Not IsNull(Me.txtMaterial) Then
    if strFiltro="" then
    strFiltro = "Cod_Material='" & Me.txtMaterial & "'"
    Else
    strFiltro = strFiltro " and Cod_Material='" & Me.txtMaterial & "'"
    ElseIf Not IsNull(Me.txtFormato) Then
    if strFiltro="" then
    strFiltro = "Cod_Formato='" & Me.txtFormato & "'"
    Else
    strFiltro = strFiltro " and Cod_Formato='" & Me.txtFormato & "'"
    ElseIf Not IsNull(Me.txtCor) Then
    if strFiltro="" then
    strFiltro = "Cod_Cor='" & Me.txtCor & "'"
    Else
    strFiltro = strFiltro " and Cod_Cor='" & Me.txtCor & "'"
    ElseIf Not IsNull(Me.txtStatus) Then
    if strFiltro="" then
    strFiltro = "Cod_Status='" & Me.txtStatus & "'"
    Else
    strFiltro = strFiltro " and Cod_Status='" & Me.txtStatus & "'"
    End If

    DoCmd.OpenReport "rlt Saldo em Estoque", acViewPreview, , strFiltro, acWindowNormal


    Última edição por Alexandre Neves em 11/10/2011, 18:33, editado 1 vez(es)
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Re: [Resolvido]Filtro em Relatório com muitas variaveis

    Mensagem  ton0612 11/10/2011, 18:25

    Obrigado pelo retorno Alexandre...
    as linhas onde definem os Strfiltro ficaram em vermelhas (com erro) entao acrescentei um "&" ficando
    StrFiltro = StrFiltro & " and Cod_Status='" & Me.txtStatus & "'", por exemplo

    mas ao executar gera o erro dizendo bloco If sem end if.

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Re: [Resolvido]Filtro em Relatório com muitas variaveis

    Mensagem  Alexandre Neves 11/10/2011, 18:35

    Pois, fiz errado.
    veja agora se funciona
    será
    Dim strFiltro as string
    strFiltro=""
    If Not IsNull(Me.txtLinha) Then strFiltro = "Cod_Linha='" & Me.txtLinha & "'"
    If Not IsNull(Me.txtModelo) Then
    if strFiltro="" then
    strFiltro = "Cod_Modelo='" & Me.txtModelo & "'"
    Else
    strFiltro = strFiltro " and Cod_Modelo='" & Me.txtModelo & "'"
    End If
    If Not IsNull(Me.txtMaterial) Then
    if strFiltro="" then
    strFiltro = "Cod_Material='" & Me.txtMaterial & "'"
    Else
    strFiltro = strFiltro " and Cod_Material='" & Me.txtMaterial & "'"
    End If
    If Not IsNull(Me.txtFormato) Then
    if strFiltro="" then
    strFiltro = "Cod_Formato='" & Me.txtFormato & "'"
    Else
    strFiltro = strFiltro " and Cod_Formato='" & Me.txtFormato & "'"
    End If
    If Not IsNull(Me.txtCor) Then
    if strFiltro="" then
    strFiltro = "Cod_Cor='" & Me.txtCor & "'"
    Else
    strFiltro = strFiltro " and Cod_Cor='" & Me.txtCor & "'"
    End If
    If Not IsNull(Me.txtStatus) Then
    if strFiltro="" then
    strFiltro = "Cod_Status='" & Me.txtStatus & "'"
    Else
    strFiltro = strFiltro " and Cod_Status='" & Me.txtStatus & "'"
    End If

    DoCmd.OpenReport "rlt Saldo em Estoque", acViewPreview, , strFiltro, acWindowNormal
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Re: [Resolvido]Filtro em Relatório com muitas variaveis

    Mensagem  ton0612 11/10/2011, 18:38

    Obrigado alexandre...
    Estranho que eu tinha postado a mensagem aqui e nao foi... mas fiz alguns ajustes aqui... ficou assim o código.
    Private Sub btnVerRelOp_Click()
    Dim StrFiltro As String


    StrFiltro = ""

    If Not IsNull(Me.txtLinha) Then
    StrFiltro = "Cod_Linha='" & Me.txtLinha & "'"
    Else
    StrFiltro = StrFiltro
    End If


    If Not IsNull(Me.txtModelo) Then
    If StrFiltro = "" Then
    StrFiltro = "Cod_Modelo='" & Me.txtModelo & "'"
    Else
    StrFiltro = StrFiltro & " and Cod_Modelo='" & Me.txtModelo & "'"
    End If
    End If

    If Not IsNull(Me.txtMaterial) Then
    If StrFiltro = "" Then
    StrFiltro = "Cod_Material='" & Me.txtMaterial & "'"
    Else
    StrFiltro = StrFiltro & " and Cod_Material='" & Me.txtMaterial & "'"
    End If
    End If

    If Not IsNull(Me.txtFormato) Then
    If StrFiltro = "" Then
    StrFiltro = "Cod_Formato='" & Me.txtFormato & "'"
    Else
    StrFiltro = StrFiltro & " and Cod_Formato='" & Me.txtFormato & "'"
    End If
    End If

    If Not IsNull(Me.txtCor) Then
    If StrFiltro = "" Then
    StrFiltro = "Cod_Cor='" & Me.txtCor & "'"
    Else
    StrFiltro = StrFiltro & " and Cod_Cor='" & Me.txtCor & "'"
    End If
    End If
    If Not IsNull(Me.txtFase) Then
    If StrFiltro = "" Then
    StrFiltro = "Cod_Fase='" & Me.txtFase & "'"
    Else
    StrFiltro = StrFiltro & " and Cod_Fase='" & Me.txtFase & "'"
    End If
    End If



    DoCmd.OpenReport "rlt Saldo em Estoque", acViewPreview, , StrFiltro, acWindowNormal
    DoCmd.Maximize
    DoCmd.OpenForm "frmTransRel", acNormal, , , , acHidden
    Forms!frmTransRel!txtOp = Me.txtOp
    DoCmd.Close acForm, "frm Relatorio Estoque", acSaveYes
    End Sub


    Muito obrigado.
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Filtro em Relatório com muitas variaveis Empty Re: [Resolvido]Filtro em Relatório com muitas variaveis

    Mensagem  ton0612 11/10/2011, 18:40

    na verdade só mudei o status para fase.. Valeu Alexandre...

      Data/hora atual: 28/11/2022, 02:52