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


    [Resolvido]Relatório usando recordsert para exibir vários registros...

    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 02:29

    Bem com a ajuda do fórum.. cheguei a este código que abre um relatório desvinculado através de recordset....

    So que ele é para abrir o registro do controle ativo do Form...
    Como exibir todos os registros.. páginas???


    Código:

    Private Sub Report_Close()
        Forms!frmDetentoConsulta.Visible = True
        DoCmd.ShowToolbar "Ribbon", acToolbarNo
        Call EscondeBotoes(True)
    End Sub
    Private Sub Report_Load()
    On Error Resume Next
    Parametros_de_Inicializacao "SysPen.par"
    DoCmd.Maximize
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
    Call EscondeBotoes(False)
    '*******************************************************************************
    'Popula Campos fixos da unidade no Relatório
    '*******************************************************************************
    Dim Db As DAO.Database
    Dim dbLocal As DAO.Database
    Dim ws  As DAO.Workspace
    Dim rs, rsAdm  As DAO.Recordset
    Set ws = DBEngine.Workspaces(0)
    Set Db = ws.OpenDatabase(CurrentProject.Path & "\Syspen_Be.accdb", False, False, "MS Access;PWD=senha")
    Set dbLocal = ws.OpenDatabase(CurrentProject.Path & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")
           
            strSQLDetentos = "SELECT * FROM Detentos LEFT JOIN Fotos_Detentos ON Detentos.ID=Fotos_Detentos.Detento WHERE ID = " & Forms!frmDetentoConsulta!ID & ";"
            Set rs = Db.OpenRecordset(strSQLDetentos)
           
            strSQLAdm = "SELECT * FROM Administração"
            Set rsAdm = dbLocal.OpenRecordset(strSQLAdm)
        Me.txtID = rs![ID]
        Me.txtDetento = rs![Nome] & Space(1) & rs![Sobrenome]
        Me.txtAlcunha = rs![Alcunha]
        Me.txtDataNascimento = rs![Data de Nascimento]
        Me.txtNacionalidade = rs![Nacionalidade]
        Me.txtNaturalidade = rs![Naturalidade]
        Me.txtTelefone = rs![Telefone Residencial]
        Me.txtEstadoCivil = rs![Estado Civil]
        Me.txtFilhos = rs![Filhos]
        Me.txtDocumentos = rs![RG/CPF]
        Me.txtPai = rs![Nome do Pai]
        Me.txtFalecido = rs![Se falecido]
        Me.txtMae = rs![Nome da Mãe]
        Me.txtFalecida = rs![Se Falecida]
        Me.txtEndereco = rs![Endereço]
        Me.txtCidade = rs![Cidade]
        Me.txtEstado = rs![Estado]
        Me.txtTrabalho = rs![Trabalho- anterior a Prisão]
        Me.txtProfissao = rs![Profissão]
        Me.txtInstrucao = rs![Grau de Instrução]
        Me.txtConjuge = rs![Conjuge]
        Me.txtEtnia = rs![Etnia]
        Me.txtTipoFisico = rs![Tipo Físico]
        Me.txtPeso = rs![Peso Informado]
        Me.txtCabelos = rs![Cabelos]
        Me.txtOlhos = rs![Olhos]
        Me.txtEstatura = rs![Estatura]
        Me.txtSinal = rs![Sinais Particulares]
        Me.txtReicidente = rs![Reicidente]
        Me.txtOrigem = rs![Origem]
        Me.txtDataPrisao = rs![Data da Prisão]
        Me.txtDataSaida = rs![Data da Saída]
        Me.txtRegime = rs![Regime]
        Me.txtInfracao = rs![Infração]
        Me.txtSituacao = rs![Situação do Processo Anterior]
        Me.txtProcessoNumero = rs![Processo Número]
        Me.txtPena = rs![Pena Ano] & Space(1) & "e" & Space(1) & rs![Pena Mês]
        Me.txtCondicional = rs![Condicional]
        Me.txtComarca = rs![Juizado]
        Me.txtVara = rs![Vara]
        Me.txtPromotoria = rs![Promotoria]
        Me.txtOutrasComarcas = rs![Processos em outras Comarcas]
        Me.txtSituacaoPenal = rs![Situação Penal]
        Me.txtAssistenteJu = rs![Assitente Jurídico]
        Me.txtObservacoes = rs![Observações]
        'Tabela Foto_Detentos
        Me.CaminhoFotoRosto = rs![CaminhoFotoRosto]
        Me.IDFoto = rs![IDFoto]
       
    '**********************************************************
    'Para o redorsetcrsAdm
    '************************************************
        Me.txtRegional = rsAdm![Regional]
        Me.txtEnderecoUnidade = rsAdm![Endereco Unidade]
        Me.TxtUnidade = rsAdm![Nome da Unidade]
        Me.txtTel = rsAdm![Telefone1]
        Me.txtTel1 = rsAdm![Telefone2]
        Me.txtFax = rsAdm![Fax]
        Me.txtEmail = rsAdm![EMail]
           
       
        rs.Close
        rsAdm.Close
       
    Set rsAdm = Nothing
    Set rs = Nothing
    Set Db = Nothing
    Set dbLocal = Nothing
    End Sub
    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]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Alexandre Neves 12/6/2011, 09:50

    Bom dia, Hary

    Em vez de criar o recordset, atribua a SQL à origem do formulário/sub-formulário
    SubFrmX.Recordsource=InstrucaoSQL
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 17:05

    Bom dia Amigão.. Eu colocaria esta linha??/

    strSQLDetentos = "SELECT * FROM Detentos LEFT JOIN Fotos_Detentos ON Detentos.ID=Fotos_Detentos.Detento WHERE ID = " & Forms!frmDetentoConsulta!ID & ";"


    Como viraria isso?
    Na origem? ou no Módulo do report?
    E como as caixa texto reconheceriam essa instrução visto que são desacopladas?
    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 17:07

    e como fazer para que ele saiba o caminho do Back end? pois nao gostaria de usar tabelas vinculadas....
    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]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Alexandre Neves 12/6/2011, 17:10

    Boa tarde, Hary

    Coloque, ao abrir do relatório, NomeRelatorio.RecordSource=InstrucaoSQL
    Em cada caixa de texto coloque, normalmente, o nome do campo que alimenta os dados.
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 17:53

    Caro Alexandre... cheguei nesta sequencia de código:

    Private Sub Report_Load()
    Dim dbBanco As Database
    Dim StrDetento As String
    Dim StrPath As String

    Parametros_de_Inicializacao "SysPen.par" 'Este é um arquivo externo de parametros onde tenho dados que podem ser alterados.. no caso há nele a seguinte linha:
    BancoDados:=c
    :\SysPen\Syspen_be.accdb


    'String com path para conexão com a base de dados.
    StrPath = BancoDados 'Aqui le o caminho contido no Syspen.Par

    ' Conecta ao banco de dados
    ' Se vc estiver tbls vinculadas use:
    'Set dbBanco = CurrentDb()
    Set dbBanco = OpenDatabase(StrPath)

    StrDetento = "SELECT Detentos.ID, Detentos.[Nome] FROM Detentos IN '" & StrPath & "'" _
    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado';"


    RptAla.RecordSource = StrDetento


    Mas abre uma tela de conexão:

    Selecionar Fonte de Dados.. com o texto..

    Selecione a fonte de dados de arquivos que descreve o drive ao qual voce deseja se conectar... Drive ODBC....
    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]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Alexandre Neves 12/6/2011, 18:01

    Novamente,

    Aí nunca mexi.
    Note que falta espaço na instrução SQL, entre a última pelica e a palavra WHERE
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 18:10

    Onde??
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 18:28

    Caro Alexande.. veja que solução interessente encontrei usando o Arquivo de Parametros... (Este exemplo eu o coloquei no repositório)

    Aqui apliquei ao carregar uma CboBox em um form.... Veja..


    'Carrega as ComBox's usadas no Form
    Private Sub CarregaCombo()
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Dim NomeBD As String 'Aqui crio uma variável onde aplicarei o nome do Banco de dados
    Dim StrCboDetento As String 'Aqui crio uma variável para a ComBox

    NomeBD = "Syspen_be.accdb"' ' Aqui aplico o nome do Banco de dados à Variável

    StrPath = DirBancoDados & NomeBD ' 'String com path para conexão com a base de dados, aqui adicionei o caminho contido no Syspen.Par + o nome da dase de dados contidos na Váriável NomeBD

    Set dbBanco = OpenDatabase(StrPath) 'Aqui Abro O BD através do caminho contido na variável StrPath, que é o Caminho no Syspen.Par + Variável NomeBD

    'Aqui o carregamento da ComBox
    'ComBox CboDetento
    StrCboDetento = "SELECT Detentos.ID, Detentos.[Nome] FROM Detentos IN '" & StrPath & "'" _ 'Note que aqui esta o caminho do BD Caminho no Syspen.Par + Variável NomeBD (C:\Syspen\Syspen.Accdb)
    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado';"
    Me.CboDetento.RowSource = StrCboDetento
    Me![CboDetento].ColumnCount = 4
    Me![CboDetento].ColumnWidths = "0cm;7cm;0cm;0cm"


    End Sub

    PERFECT..... dessa forma caso queira muda o BD de endereço é so alterar o Caminho no Syspen.Par colocando o caminho que desejar sem precisar mexer no Sistema...

    Bem.. agora vou tentar aplicar isso no relatório.. e retorno...

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Convidado 12/6/2011, 19:20

    Caro Alexande havia me passado a seguinte instrução...:
    RptAla.RecordSource = StrDetento


    Bem assim não consegui.. pois dava objeto obrigátorio....
    Pesquisando encontrei que nao se podia atribuir valor a objeto pois o objeto fazia referencia não a uma caixa texto.. e sim ao proprio relatório...
    Então seguindo esse raciocínio apliquei: Me.RecordSource = StrDetento

    Agora aplicando a solução alhures.. em que apliquei em uma combo no formulário... Segue o código para carregar o relatório via carregamento do RECORSOURCE com uma SQL utilizando o arquivo de parâmetros...


    Private Sub Report_Open(Cancel As Integer)
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Dim dbBanco As Database 'Váriável para o Banco de Dados
    Dim StrDetento As String ''Aqui crio uma variável para a a tabela a ser pesquisada
    Dim StrPath As String 'Aqui crio uma variável para receber o caminho da base de dados
    Dim NomeBD As String ' 'Aqui crio uma variável onde aplicarei o nome do Banco de dados

    NomeBD = "Syspen_be.accdb" ' Aqui aplico o nome do Banco de dados à Variável


    StrPath = DirBancoDados & NomeBD 'String com path para conexão com a base de dados, aqui adicionei o caminho contido no Syspen.Par + o nome da dase de dados contidos na Váriável NomeBD


    Set dbBanco = OpenDatabase(StrPath) 'Aqui Abro O BD através do caminho contido na variável StrPath, que é o Caminho no Syspen.Par + Variável NomeBD



    'Carrega a Váriável com o SQL
    StrDetento = "SELECT * FROM Detentos IN '" & StrPath & "'" _ 'Note que aqui esta o caminho do BD Caminho no Syspen.Par + Variável NomeBD (C:\Syspen\Syspen.Accdb)

    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado';" 'Filtros para dados na tabela

    Me.RecordSource = StrDetento 'Aqui carrega o relatório Via recordSource com a variável StrDetento, que contem A tabela e o seu endereço via StrPath
    End Sub


    PERFECT....
    Grato pela ajuda amigão

    Conteúdo patrocinado


    [Resolvido]Relatório usando recordsert para exibir vários registros... Empty Re: [Resolvido]Relatório usando recordsert para exibir vários registros...

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 06:23