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]Campos em uma Tabela: qual quantidade recomendada?

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 02:04

    Pesquisei a dúvida e quase não encontrei muitos comentários.
    Uma tabela com mais de 20 campos pode comprometer o funcionamento de um banco de dados?

    Uma outra dúvida:
    em meus projetos uso relacionamentos entre tabelas. Na tabela Trabalhadores, por exemplo, tenho o campo Cod.Empregador, ligado a tabela Empregador. Este campo tem formato numérico e o transformei numa caixa de combinação retornando o CódEmpregador e Nome. A dúvida é: usar a caixa de combinação apenas no formulário Trabalhador, deixando o campo da tabela CodEmpregador como caixa de texto (com formato numérico), melhora o desempenho do banco de dados?
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 02:15


    Olá, seja bem vindo ao Fórum!

    A regra básica para a criação de tabelas, em termos de quantidade de campos, é quanto menos, melhor.
    Sempre que possível, devemos criar tabelas auxiliares. Do tipo, p.ex., que poder-se-ia deixar como uma lista de valores.
    Claro que a tabela terá o número de campos que precisa ter.

    Não tenho estatísticas quanto ao desempenho, mas considero inúteis as caixas de combinação em tabelas, a não ser que se vá lançar dados diretamente, o que é muito raro.

    Há muito material de estudo sobre tabelas e relacionamentos no fórum.
    Se estiver precisando, não vai se decepcionar.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 02:25

    Elas (as caixas de combinação) podem diminuir o desempenho se colocadas em tabelas?
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 02:38


    É lógico supor que o uso de opções de valores de outra(s) tabela(s) vá influenciar o desempenho, assim como a quantidade de campos.
    Mas duvido que seja representativo. E certamente é ínfimo comparado ao efeito de uma grande quantidade de registros. Que também não é muito expressivo, já que vemos aí tabelas como a base de ceps rodando sem problemas.

    A questão é mais de natureza utilititária.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 03:04

    Boa informação. Era uma dúvida sobre a qual não tinha nenhum esclarecimento.
    Recentemente dividi uma tabela de um banco de dados Folha de Pagamento. Ela possuía informações de 6 tipos de folhas (mensal, férias, 13º salário, rescisão, pró-labore, pag. autônomos). A dividi em 3:

    1º) mensal, férias, 13º salário;
    2º) rescisão;
    3º) pró-labore, pag. autônomos;

    A 1º) e a 2º) não podem coincidir no mesmo mês: caso haja a 1ª)Mensal..., a 2ª)Rescisão pode existir no mesmo mês; e vice-versa. Quando estas informações estavam na mesma tabela, conseguia facilmente fazer a busca e informar se já havia uma ou outra através do formulário. Fazia isso através do operador AntesDeInserir do formulário.

    Agora como estão em tabelas separadas, não sei como (e se é possível) identificar o "registro duplicado".

    A decisão de dividi-la, veio por causa da quantidade de campos: quase 50!
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 03:21


    Não podemos dividir uma tabela simplesmente passando os campos para outra(s). Obviamente deve haver coerência com a situação.

    Estas 3 tabelas estão relacionadas? Há um identificador comum?
    Muita informação pode ser retornada pela função DLookup. Com ela pode ser possível verificar um valor em qualquer tabela, e retornar um True/False, que pode ser usado como critério para uma ação.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 13:42

    A estrutura é assim:

    >> tab_Competência (datas mês-a-mês com formato mês/ano);
    >> tab_Movimento (para cada empregador incluído numa determinada competência (mês/ano), é criado um novo registro em Movimento);
    >> tab_Folha (para cada trabalhador incluído no Movimento de seu empregador, é criado um novo registro em Folha).

    A tabela Folha foi dividida em três partes, como descrevi acima:
    1º) Folha Mensal, Férias, 13º Salário;
    2º) Rescisão;
    3º) Pró-Labore e Recibo de Autônomo (essa apenas para não empregados: sócio/dirigentes e trab. autônomos).

    O denominador comum delas é a tabela Movimento (com o campo CodMovimento, que há nas três).

    Para identificar se o registro é duplicado, uso um filtro. Para tentar criar, por exemplo, uma nova Folha Mensal, faço isso através do formulário Movimento (onde há os campos CodMovimento, CodTrabalhador e TipoFolha). Seleciono um trabalhador e, ao escolher o tipo de folha, é aberto um novo formulário. Através dos 03 campos, é feita uma tentativa de filtragem. Caso haja os registros, uma mensagem informa que não é possível criar o registro. Caso a busca seja nula, o novo registro é criado e as informações dos três campos é copiada para a Folha.
    Desta maneira, ele faz a pesquisa na tabela de origem do formulário.
    Seria melhor juntar as 03 folhas numa única tabela e subdividi-la através de consultas?
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 14:11


    É difícil fazer uma recomendação sem conhecer a estrutura de perto.
    Se as 3 tabelas originárias da tabela tab_Folha estão relacionadas com a tabela Movimento, e funcionam sem problemas, parece estar tudo ok.

    Não entendi seu sistema de filtragem, mas em princípio talvez consiga os mesmos resultados com menos elementos, usando a função DLookup ou DCount para as verificações de duplicidade.

    Obs: após sua próxima mensagem este tópico será movido para a sala Tabelas.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 17:40

    O sistema de filtragem funciona assim:

    1) No formulário Movimento, há os campos CodMovimento, CodEmpregador, CodTrabalhador(caixa de listagem). Escolho um trabalhador e clique no botão correspondente ao que quero: 1.Folha Mensal/Férias/13ºSal -- 2.Rescisão -- 3.Pró-Labore/Pag.Autônomo.

    2) Ao clicar em um dos botões, o formulário é aberto e os campos CodMovimento & CodTrabalhador são usados, primeiro, para procurar um registro igual. Caso não encontre, cria um novo registro copiando os dados do critério de busca para para o formulário que foi aberto.

    Exemplo com o botão botFolha Mensal/Férias/13ºSalário.

    Private Sub botFolha_Click()
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim strTexto As String
    Dim strTítulo As String
    Dim intRetVal As Integer
    Dim Cancel As Integer

    stLinkCriteria = "[CodMovimento]&[CodTrabalhador] = " & Me![CodMovimento] & Me![CodTrabalhador]
    stDocName = "FolhaMensal_Férias_13Salário"

    DoCmd.OpenForm stDocName, , , stLinkCriteria

    If IsNull(Forms![FolhaMensal_Férias_13Salário]!CodFolha) Then
    strTexto = "Trabalhador ainda não cadastrado neste movimento. Confirma a inclusão?"
    strTítulo = "Novo Registro!"
    intRetVal = MsgBox(strTexto, vbYesNo + vbQuestion + vbDefaultButton2, strTítulo)
    Select Case intRetVal
    Case vbYes
    Forms![FolhaMensal_Férias_13Salário]!CodMovimento = Me!CodMovimento
    Forms![FolhaMensal_Férias_13Salário]!CodTrabalhador = Me!CodTrabalhador
    Case vbNo
    Cancel = True
    DoCmd.Close
    End Select
    Else
    strTexto = "Trabalhador já cadastrado neste movimento. Deseja alterar o registro? "
    strTítulo = "Alterar Registro?"
    intRetVal = MsgBox(strTexto, vbYesNo + vbQuestion + vbDefaultButton1, strTítulo)
    Select Case intRetVal
    Case vbNo
    Cancel = True
    DoCmd.Close
    End Select
    End If
    End Sub

    Meu problema é: uma nova FolhaMensal/Férias/13ºSal só pode ser aberta se não houver nenhuma Rescisão para o trabalhador selecionado no formulário Movimento. E nenhuma Rescisão poderá ser criada se já houver uma Folha. Esse código só faz a pesquisa no formulário que está sendo aberto.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 18:28


    Dá pra fazer estas verificações de forma mais simples agindo direto nas tabelas, usando as funções que mencionei.

    Mas preciso do bd (se puder postar-lo), para tentar montar os códigos.
    Se for em versão superior a 2003 deverá ser convertido para esta versão.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 27/2/2012, 19:04


    Ou, faça um printscreen caprichado da janela relacionamentos/relações, de forma que seja possível ver as tabelas, os nomes de seus campos, e os relacionamentos. E poste a imagem.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 27/2/2012, 22:25

    Vou enviar o arquivo BD. Ele está grande e vou tirar o que está fora desta dúvida especifica para melhorar a transmissão e facilitar sua ajuda.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 28/2/2012, 02:28

    Norbs, estou enviando o banco de dados (formato 2003).

    Não consegui deixar apenas o que está em debate aqui. Mas direi os formulários:

    >> Lista_Movimentos (formulário inicial): através dele é possível abrir Movimento.
    >> Movimento: através dele é que são abertos os formulários Folha Mensal/Av. Férias, Rescisão, Pró-Labore, RPA.


    Anexos
    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? AttachmentFolha de Pagamento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (403 Kb) Baixado 35 vez(es)
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 28/2/2012, 02:38


    Ok, recebido.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 1/3/2012, 00:06


    Podemos usar a função DLookup para verificar o valor de determinado campo em determinada tabela ou consulta, e que satisfaça um critério ou conjunto de critérios.
    Se não for encontrado um valor, a função retorna Nulo.
    Sintaxe:
    DLookup("NomeDoCampo", "NomeDaTabela/Consulta", "Critério1 AND Critério2")

    Vc pode usar para checar se o trabalhador tem uma rescisão antes de abrir o formulário:

    If IsNull(DLookup("CodTrabalhador", "tabRescisao", "CodTrabalhador = Forms!Movimento!Movimento_TrabSubform!CodTrabalhador")) Then
    DoCmd.OpenForm ...
    Else
    Me.NomeDoCampo.SetFocus
    MsgBox "Existe rescisão para este trabalhador"
    Exit Sub
    End If
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 1/3/2012, 00:14

    Ok, Norbs. Vou testar e retorno. Muito Obrigado pela atenção.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 1/3/2012, 00:20


    Uma observação no seu bd:
    Vc não pode usar Cancel = True num evento que não seja interceptável, como o evento Click(). Já ser for o evento DoubleClick(), pode.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 1/3/2012, 00:42

    Com tua licença Norberto, vou traduzir o que você disse: Razz

    O Norberto disse que o "Cancel" tem que estar dentro do parênteses do evento.

    Por exemplo:
    Private Sub Form_DblClick(Cancel As Integer)

    Note que o "Cancel" não aparece no evento click().

    E não adianta tentar colocar ele ali dentro, que o Access vai "berrar".

    Abraços

    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 1/3/2012, 00:47


    É isto mesmo, Balem.

    rgondim:
    Fiz outro layout na janela Relacionamentos, até pra entender melhor a estrutura.

    Baixar imagem
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 3/3/2012, 01:29

    Ao invés de Cancel = True seria DoCmd.CancelEvent?

    Noberto, muito bom o layout dos relacionamentos. Valeu, camarada.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 3/3/2012, 01:49


    Todo os eventos canceláveis no vba tem o argumento Cancel.
    Esses podem ser cancelados com um ou outro, mas normalmente usa-se Cancel.
    E em eventos que só podem ser cancelados em macros, usa-se o CancelEvent.
    Num evento como Click(), nenhum cancela.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 6/3/2012, 23:07

    Noberto, nada no access pode cancelar AoClicar???
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 6/3/2012, 23:54


    Nem é necessário.
    Pois vc pode definir o que vai ocorrer quando o evento for disparado.
    Usando a condição If...Then vc pode, p.ex., direcionar o Click para um CampoX.SetFocus ou um Exit Sub (que finaliza o Sub) se a condição não for satisfeita.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 7/3/2012, 00:02

    Continuando com a aula, se me permite Norberto:

    o evento clique acontece com o conjunto de dois outros eventos:
    - mouse down (ao apertar o mouse)e
    - mouse up (ao liberar o mouse)

    Ai estão dois eventos que você pode cancelar com CancelEvent dito pelo Norberto.

    Vá na folha de propriedade de um controle que tenha esses eventos clique em um deles e aperte F1

    Como alguém diz sempre aqui:

    Bom estudo

    obs. Depois que respondi, li novamente o tópico todo e percebi que estamos fugindo do escopo do tópico. Crying or Very sad

    Abraços
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 7/3/2012, 00:08


    Detalhe importante e muito bem lembrado.
    Valeu Balem.
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  rgondim 7/3/2012, 02:54

    Vou continuar a dúvida em outro tópico. Se puderem ajudar fico muito grato.
    avatar
    Convidad
    Convidado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Convidad 7/3/2012, 02:57


    Certo.
    Marco este como Resolvido.

    Conteúdo patrocinado


    [Resolvido]Campos em uma Tabela: qual quantidade recomendada? Empty Re: [Resolvido]Campos em uma Tabela: qual quantidade recomendada?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/11/2024, 22:52