Ir para conteúdo
Fórum Script Brasil

Patricia Nascimento

Membros
  • Total de itens

    9
  • Registro em

  • Última visita

Sobre Patricia Nascimento

  • Data de Nascimento 31/08/1979

Contatos

  • Website URL
    http://www.suportevba.com
  • ICQ
    0

Perfil

  • Gender
    Female
  • Location
    São Paulo

Patricia Nascimento's Achievements

0

Reputação

  1. Boa noite, Crie uma tabela de controle de emissão de relatorios com os campos que voce deseja, ex: Tabela--> Relatorios Campos Relatorio | Id | Data_Imp | Usuario Clientes 1 18/05/2008 Jose.Souza Tabela Preços 1 18/05/2008 Jose.Souza Clientes 2 18/05/2008 Patricia.nascimento Clientes 3 19/05/2008 Patricia.nascimento Clientes 4 19/05/2008 Patricia.nascimento Tabela Preços 2 19/05/2008 Wedson.Silva nos relatorios e formularios exitem uma propriedade chamada de "marca" ou Tag nas versões em ingles. nesta propiedade coloque o nome desejado para o Relatório, no meu exmplo eu tenho um relatorio chamado de rel_clientes e defini a "marca" como Clientes. no botão imprimir deste relatorio cole o seguinte código Dim ssql As String Dim lng_Atual As Long Dim rst_max_num As DAO.Recordset 'desabilita os avisos do access DoCmd.SetWarnings False ssql = "" ssql = ssql & "SELECT Max(ID) AS Atual FROM Relatorios GROUP BY Relatorio HAVING Relatorio ='" & Report_Rel_Clientes.Tag & "'" 'armazena os dados do select na variavel Set rst_max_num = CurrentDb.OpenRecordset(ssql) 'verifica se exite algum registro para o select atual If rst_max_num.EOF Then ' se não existir lng_Atual = 0 Else ' senão lng_Atual = rst_max_num(0) + 1 End If 'atualiza a tabela de relatorios DoCmd.RunSQL ("INSERT INTO Relatorios ( Relatorio, ID, Data_imp, Usuario ) values ('" & Report_Rel_Clientes.Tag & "' , '" & lng_Atual & "' , Format(now, 'dd/mm/yyyy') , 'usuario_logado');") 'habilita os avisos do access DoCmd.SetWarnings True disponibilizei no meu o arquivo em flash para voce acompanhar como fazer. http://www.suportevba.com/contador.html o arquivo é um pouco grande 3 MB mas vale a pena dar uma olhada att,
  2. Boa tarde, A solução dada ao problema deste tópico foi a seguinte: No form de Fichas foi retirado os codigos dos controles de ao receber foco e perder foco que apenas transformavam os dados dos campos em maiusculas "UCASE", substituimos: [color="#0000ff"]If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then [/color] Por sSql = "" sSql = sSql & "SELECT login, tipo FROM Usuario WHERE login= '" & Form_Main.xxx & "';" Set rst_sql = CurrentDb.OpenRecordset(sSql) If rst_sql.EOF = True Then Exit Sub If rst_sql(1) = "atendimento" Then e o problema foi solucionado. att,
  3. Boa tarde, Quando voce diz que o usuario colocou tudo vinculado no computador dele voce quer dizer que ele separou a base de dados do front end? onde está a base de dados? se a base estiver em um local em rede que todos tem acesso e copie o front end dela para uma outra maquina e faça um teste. como exite mais de uma pessoa acessando o sistema isto significa que a base está em um local comum a todos e só descobrir onde a base esta e apontar as tabelas para a base. Para descobrir para onde a base foi mudada e só posicionar o ponteiro do mouse sobre uma das tabelas vinculadas e o access irá mostra o caminho da base. o comando para desvincular tabelas e esse; DoCmd.DeleteObject acTable, nome_da_tabela 'para vincular use este DoCmd.TransferDatabase acLink, "Microsoft Access", "caminho_completo_e_nome_do_banco_de_dados", acTable, "nome_da_tabela_origem", "nome_tabela_destino", False Como funciona o código DoCmd.TransferDatabase (comando para importar, neste caso vincular) acLink (O tipo de transferência que você deseja fazer. Selecione Importação, Exportação ou Vínculo ) "Microsoft Access" (O tipo de banco de dados a ser importado, exportado ou vinculado. Você pode selecionar o Microsoft Access ou um dos vários outros tipos de banco de dados) "caminho_completo_e_nome_do_banco_de_dados" (O nome do banco de dados a ser importado, exportado ou vinculado. Inclui o caminho completo. Esse é um argumento obrigatório) acTable (O tipo de objeto a ser importado ou exportado. Se você selecionar Microsoft Access do argumento Tipo de Banco de Dados, poderá marcar Tabela, Consulta, Formulário, Relatório, Macro, Módulo, Página de Acesso a Dados, Modo de Exibição do Servidor, Diagrama, Procedimento Armazenado ou Função ) "nome_da_tabela_origem" (O nome da tabela, da consulta seleção ou do objeto do Access que você deseja importar, exportar ou vincular. Para alguns tipos de banco de dados, como FoxPro, Paradox ou dBASE, é um nome de arquivo. Inclua a extensão do nome de arquivo (como .dbf) no nome de arquivo. Esse é um argumento obrigatório.) "nome_tabela_destino" (O nome da tabela, da consulta seleção ou do objeto do Access que você deseja importar, exportar ou vincular. Para alguns tipos de banco de dados, como FoxPro, Paradox ou dBASE, é nome de arquivo. Inclua a extensão do nome de arquivo (como .dbf) no nome de arquivo. Esse é um argumento obrigatório. ) False (Especifica se deve ser importada ou exportada somente a estrutura de uma tabela do banco de dados sem nenhum dado. O padrão é False.) Existem funções que fazem esta vinculação automatica sempre que o banco é aberto. não pesquisei mas creio que no proprio site http://scriptbrasil.com.br voce pode encontrala. Att,
  4. Bom dia a todos, Ouço muita gente falar que o Access é para pequenas aplicações devido a sua limitação de tamanho por banco de dados que é de 2 GBytes, mas a limitação se torna inexistente quando se faz um estudo aprofundado do sistema que se quer construir. Recentemente tivemos um grande desafio em um cliente. Este tem 17 lojas de materiais de construção, necessitava de um sistema para levantamento de créditos de ICMS, mas onde esta o problema? Bom, teríamos que fazer um sistema em Access para recuperar os créditos de ICMS a partir do ano de 2005. Durante o levantamento descobrimos o seguinte: Cada loja por ano gera em média 2,6 milhões de registros por 93 colunas, gerando pouco mais de 2,3 GB de informações. Cálculo simples 17 lojas x 4 anos x 2,3 GB por ano = 156,4 GB. Para efeito de comparação os resultados devem ser calculados com tributos de dois períodos diferentes. As informações estão em banco Oracle e a empresa não quer que o Oracle seja responsável pelos cálculos, pois iria onerar em muito o banco de dados e as lojas iriam ficar com o sistema lento. Ainda mais, o usuário deveria ter a possibilidade de executar testes de cálculos como se estivesse no Excel, mas com uma interface gráfica, onde apenas com um clique selecionando os campos desejados, seriam apresentados os cálculos. Também deveria ter a opção de fazer fórmulas avançadas como o Excel (Funções como, por exemplo: SE(), SomaSE(), ProcV() entre outras centenas de formulas). A solução dada para o cliente foi a seguinte: O Oracle gera os arquivos textos consolidando as informações das duas tabelas de tributos e o Access efetua a importação distribuindo os dados entre as tabelas, separando-as em uma árvore de pastas da seguinte forma: Filial e Ano. Na pasta "Ano" serão criadas automaticamente 24 tabelas representando 12 meses com informações geradas com os tributos do primeiro período e mais 12 tabelas com informações geradas com os tributos do segundo período. Assim, não sobrecarregamos o Access com cálculos para exibir resultados dos períodos diferentes, no entanto os 156,4 GB se tornam 312,8 GB divididos em 1.632 arquivos. Para gerenciar os dados, utilizamos vinculação dinâmica em tempo de execução para que o usuário nem perceba que esta utilizando milhares de bases de dados. Por exemplo, o usuário seleciona a filial 1 e o ano de 2007, automaticamente o sistema vincula as tabelas da referida loja e ano, e poderá usá-las para efetuar seus cálculos "o tempo para vincular as tabelas é em media de 5 segundos. Mais uma vez vamos aos números: 17 lojas 4 anos por loja 12 meses utilizando valores de tributos período 1 12 meses utilizando valores de tributos período 2 196 MB de informações por mês/loja Resultado final: 17 * 4 * 24 = 1.632 Arquivos 1632 * 196 MB = 319.872 MB (312,375 GB ) Ainda há quem diz que o Access e um Bando de dados. Em breve estarei disponibilizando este banco de dados em nosso site. att,
  5. Bom dia, Faça o seguinte teste; faça uma copia do banco; entre no codigo vba do form "Cadastro_Fichas" delete todo o codigo dele; cole o codigo que te mandei no procedimento evento "ao abrir" Private Sub Form_Open(Cancel As Integer) 'cole o codigo aqui End Sub abra o vba e coloque um ponto de interrupção no inicio do codigo If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then para isso e só posicionar na linha mensionada acima e apertar a tecla F9 depois execute o seu programa normalmente e carregue a tela form "Cadastro_Fichas" assim que aparecer na tela do vba a linha com ponto de interrupção em amarelo faça o seguinte: aperte CTRL+G para abrir a janela imediata para fazer-mos o teste dentro da janela imediata digite ?Form_Main.xxx e tecle enter neste instante tem que aparecer o valor do campo do formulario e não "nulo" se aparecer nulo digite Form_Main.xxx = "Atendimento" e depois aperte enter faça o teste novamente ?Form_Main.xxx e tecle enter caso apareça na linha ?Form_Main.xxx Atendimento aperte a tecla F8 e veja se da o erro novamente; caso o erro persista me fale que te mando o seu banco com os acertos para voce. "no meu micro esta funcionando perfeitamente" so falta adptar o tipo no form main att,
  6. Chamando uma função atravez de uma consulta: Chame a fução SemAcentos passando o parametro endereço e todos os registros da tabela acentuados irão aparecer sem acentos. SELECT SemAcentos(Endereco) AS Endereço FROM tb_Endereco WHERE tb_Endereco.[ENDERECO] Is Not Null; Crie a função em um modulo. Function SemAcentos(sString As String) Dim x As Integer Dim sStringFinal As String Dim letra() As String For x = 0 To Len(sString) - 1 ReDim Preserve letra(x) letra(x) = Mid(sString, x + 1, 1) If Asc(letra(x)) >= 192 Then 'Acentuados tem código >=192 Select Case letra(x) Case "ã", "á" letra(x) = "a" Case "é", "ê" letra(x) = "e" Case "í" letra(x) = "i" Case "ó", "ô", "õ" letra(x) = "o" Case "ü", "ú" letra(x) = "u" Case "ç" letra(x) = "c" Case Else End Select End If Next x For x = 0 To Len(sString) - 1 sStringFinal = sStringFinal + letra(x) Next x SemAcentos = sStringFinal End Function
  7. com o runtime voce só não consegue alterar a estrutura dos objetos, o resto continua como se você estivesse rodado o access FULL Att,
  8. boa noite, Voce pode usar o agendador de tarefas do windows para abrir o access e executar a sua tarefa. Outra opção é criar uma função que verifica se está na hora de enviar os e-mails, para isso utilize o timer do formulário como descrito abaixo: Private Sub Form_Timer() If Time = "22:00:00" Then 'no intervalo do cronometro informe 1000 "verifica se chegou a hora de segundo em segundo 'insira aqui a chamada de sua função para enviar e-mail Call nomefuncao 'função ' ao final deligue o micro Shell "C:WINDOWSsystem32rundll32.exe C:WINDOWSSystem32shell32.dll,SHExitWindowsEx 1" End If End Sub Não sei se voce já tem o modulo de envio de e-mail caso tenha e so colocara chamada da função no local indicado, se não tem entre em contato. att,
  9. Ola, Boa noite! Gostei muito do layout do seu sistema. bom mas vamos a solução do seu problema. O campo xxx do seu form main está nulo. para sanar o problema do xxx nulo insira a linha destacada na cor azul no seu form main If user = xlogin And pass = xsenha And Not IsNull(Me.user) Then Form_Main.xxx.Value = xlogin ' atualiza o campo xxx do form main usuario = xnome Form_Main.frameMain.SourceObject = "Main_BemVindo" Form_Main.combMenu.Locked = False Form_Main.labTitulo.Caption = Form_Cadastro_Licenca.modulo Form_Main.operador.Value = usuario Form_Main.Caption = usuario + " - " + sistema Else MsgBox "Acesso negado. Verifique se os dados estão corretos e tente outra vez.", vbCritical Form_Main.frameMain.SourceObject = "Main_Acesso" End If substitua no form "Cadastro_Fichas" If DLookup("[Tipo]", "Usuario", "[Tipo] =" & Forms!Main![xxx]) = "Atendimento" Then por If DLookup("Tipo", "Usuario", "Tipo ='" & Form_Main.xxx & "' ") = "Atendimento" Then altere todos os dlookps do seu codigo pelo modelo acima mudando apenas o final Mas o ideal seria você utilizar a função: Select Case Form_Main.xxx.Value Case Is = LCase("Atendimento") Me.AllowAdditions = False Me.AllowDeletions = False Me.AllowEdits = False Me.Combinação50.Enabled = False Me.Comando32.Enabled = False Me.Comando33.Enabled = False Me.Comando34.Enabled = False Me.Comando43.Enabled = False Me.Comando32.Enabled = False Me.Comando33.Enabled = False Me.Comando34.Enabled = False Me.Comando43.Enabled = False Case Is = LCase("Supervisor") Me.AllowEdits = False Me.AllowAdditions = False Me.AllowDeletions = False Me.AllowEdits = False Me.Combinação50.Enabled = False Me.Comando32.Enabled = False Me.Comando33.Enabled = False Me.Comando34.Enabled = False Me.Comando43.Enabled = False Me.Comando32.Enabled = False Me.Comando33.Enabled = False Me.Comando34.Enabled = False Me.Comando43.Enabled = False Case Is = LCase("Processo") Me.AllowDeletions = False Me.Comando33.Enabled = False Case Is = LCase("Administrado") Me.AllowEdits = True Me.AllowAdditions = True Me.AllowDeletions = True Me.AllowEdits = True End Select End Function Att,
×
×
  • Criar Novo...