Ir para conteúdo
Fórum Script Brasil

brunohjoia

Membros
  • Total de itens

    121
  • Registro em

  • Última visita

Tudo que brunohjoia postou

  1. puts cara, sem saber programação fica meio complicado cara
  2. brunohjoia

    Dados Da Web

    Cara, eu acho que pelo que voce disse estar precisando nem precisa manjar muito de VB. Bom... primeiro voce precisa ter seu banco de dados hospedado na internet. Depois, crie uma nova tabela vinculada.... quando ele pedir pra voce dizer onde esta o caminho do bd com as tabelas, digite o caminho do seu banco de dados na internet... acho que isso basta
  3. brunohjoia

    Dados Da Web

    Não tenho certeza, mas acho que dá para fazer isso usando o conceito de tabelas vinculadas. Ou seja, você tem um arquivo de banco de dados na WEB e varios arquivos de bqanco de dados com os varios usuarios... Nesses bds dos usuarios você pode criar, além das tabelaspróprias desse bd, tabelas vinculadas ao seu banco de dados na WEB. Assim toda alteração que eles fizerem nessa tabela vinculada se refletirá na tabela do seu banco de dados na Web. Tente isso e me conte se deu certo!
  4. Existe uma função chamada datediff. Ela calcula a diferença em dias, meses, semanas ou anos entre duas datas especificadas. Basta que você use como parametros a data atual, a data de vencimento da conta e no terceiro parametro "d", que especifica que você quer o resultado em dias, que ela te retorna quantos dias faltam para o vencimento da conta... Você pode saber mais sobre essa função no site do MSDN: msdn.microsoft.com
  5. brunohjoia

    Progressbar

    Para adicionar uma progressbar basta que, na hora de desenha seu formulario access, vá em 'mais controles' (um botaozinho que fica na mesma barra de ferramentas dos demais controles do access) e procurar e selecionar a progressbar
  6. Deixar tudo update? como assim? Eu não conheço o método update para formulários. Eu já experimentei comentar essa linha para que ela não seja executada e quando eu faço isso o erro não acontece. O problema é que essa linha me.requery é quase que indispensável pois ela é que atualiza os registro que são exibidos na tela do formulário! Eu também já tentei fazer de outro jeito... Ao invés de usar o me.requery, eu tentei usar duas linhas de comando, uma que fechava o formulário, e outra que o abria novamente imediatamente após ser fechado, mas quando a linha que fecha o formulário (docmd.close) é executada, o erro também acontece. E o mais estranho é que tem vezes (na minoria das vezes) que o erro não acontece.
  7. Oi Pessoal! Eu desenvolvi um sistema bem complexo em access e inclusive já implementei o sistema aqui na empresa onde trabalho. O problema é que ao executar algumas rotinas a partir de um botão de formulário, o meu sistema em access fecha sozinho! Apesar de eu já ter identificado a linha de comando em que esse erro ocorre e ter feito varios testes eu não encontrei erro no código e também não entendo o porque dessa maluquice! Se eu não solucionar esse problema meu projeto inteiro vai pro espaço! Eu inclusive já criei um novo arquivo access, importei todos os objetos e tive o trabalho de atribuir as permissões de acesso a todos os objetos novamente, mas não sei porque raios depois de alguns dias de uso este problema volta a aparecer. Enfim, A rotina onde ocorre o erro é enorme e estou colocando ela prara vocês no final do post. Trata-se de uma rotina com a funcionalidade de extornar um lançamento contabil efetuado no caixa através do fluxo de caixa. Mas o erro ocorre numa linha de código no final da rotina (Me.Requery, que está logo abaixo do comentário 'Ultimos procedimentos') Alguém pode me ajudar e dizer porque o access está fechando sozinho e como solucionar este problema? Obrigado! Private Sub cmdExtornarMov_Click() On Error GoTo trataerro Dim rs As DAO.Recordset Dim DataRetroativa As Boolean 'Utilizada para determinar se o usuário está tentando extornar um lançamento que não seja o ultimo que foi realizado Dim stMsgDeAlerta As String 'String usada no texto da caixa de mensagem Dim ExtornoDeInicializacao As Boolean 'Utilizada para 'avisar' que a inicialização do caixa está sendo extornada 'Verifica se é extorno com data retroativa ou se o usuário está tentando extornar a inicialização do caixa Set rs = CurrentDb.QueryDefs("conCaixa").OpenRecordset rs.MoveLast If Me.Dia_Mov <= VBA.Date - 7 Then MsgBox "Por motivos de segurança, não é permitido extornar um movimento lançado há mais de 7 dias.", vbExclamation, "Atenção" Exit Sub ElseIf Me.Referente_a = "Inicialização do Caixa" Then stMsgDeAlerta = "Você tem certeza de que deseja extornar o lançamento de inicialização do caixa? Este procedimento irá reinicializar o caixa, apagando todos os registros de lançamentos efetuados até o momento." ExtornoDeInicializacao = True ElseIf (Me.Dia_Mov < rs!Dia_Mov) Or (Me.Dia_Mov = rs!Dia_Mov And Me.Hora_Mov < rs!Hora_Mov) Then stMsgDeAlerta = "Você está prestes a extornar um lançamento que não foi o último a ser efetuado. Todos os lançamentos efetuados com data após " & Me.Dia_Mov & " - " & Me.Hora_Mov & " serão reajustados. Tem certeza de que deseja extornar este lançamento?" DataRetroativa = True Else stMsgDeAlerta = "Tem certeza de que deseja extornar o último lançamento efetuado?" End If '***************************************************************** If MsgBox(stMsgDeAlerta _ & vbCrLf & vbCrLf & "Valor: " & Format(Me.Valor_Mov, "Currency") & vbCrLf & "Referente a: " & Me.Referente_a _ & vbCrLf & "Tipo Movimento: " & Me.Tipo_Mov & vbCrLf & "Recebido de/Pago a: " & Me.Nome_Indiv_Empresa _ & vbCrLf & "Descrição: " & Me.Descricao, vbYesNo + vbQuestion, "Atenção!") = vbYes Then Dim MotivoExtorno As String If Not ExtornoDeInicializacao = True Then MotivoExtorno = InputBox("Qual o motivo do extorno? (Opcional - Máximo 100 caracteres)", "Extornar Movimentação") End If 'Extorna movimento na tabela Caixa_DetalhesDiarios_Referentea Set rs = CurrentDb.QueryDefs("conCaixa_DetalhesDiarios_Referentea").OpenRecordset If ExtornoDeInicializacao = True Then 'Apaga todos os registros da tabela Caixa_DetalhesDiarios_Referentea rs.MoveFirst Do While Not rs.EOF rs.Delete rs.MoveNext Loop rs.Requery '*********************************************************************** Else rs.FindFirst "DIA =#" & Format(Me.Dia_Mov, "mm/dd/yyyy") & "# AND Referente_a LIKE '" & Me.Referente_a & "'" rs.Edit If Me.Tipo_Mov = "Saída" Then rs!Total_Saidas = rs!Total_Saidas - Me.Valor_Mov ElseIf Me.Tipo_Mov = "Entrada" Then rs!Total_Entradas = rs!Total_Entradas - Me.Valor_Mov End If rs.Update End If '************************************************************ 'Extorna movimento na tabela Caixa_DetalhesDiarios Set rs = CurrentDb.QueryDefs("conCaixa_DetalhesDiarios").OpenRecordset If ExtornoDeInicializacao = True Then 'Apaga todos os registros da tabela Caixa_DetalhesDiarios rs.MoveFirst Do While Not rs.EOF rs.Delete rs.MoveNext Loop rs.Requery '*********************************************************************** Else rs.FindFirst "DIA =#" & Format(Me.Dia_Mov, "mm/dd/yyyy") & "#" rs.Edit If Me.Tipo_Mov = "Saída" Then rs!Total_Saidas = rs!Total_Saidas - Me.Valor_Mov rs!Saldo_Final = rs!Saldo_Final + Me.Valor_Mov ElseIf Me.Tipo_Mov = "Entrada" Then rs!Total_Entradas = rs!Total_Entradas - Me.Valor_Mov rs!Saldo_Final = rs!Saldo_Final - Me.Valor_Mov End If rs.Update 'Se for data retroativa, ajusta os campos Saldo_Inicial e Saldo_Final de todos os registros de lançamento posteriores If DataRetroativa = True Then rs.FindFirst "DIA =#" & Format(Me.Dia_Mov, "mm/dd/yyyy") & "#" rs.MoveNext Do While Not rs.EOF rs.Edit If Me.Tipo_Mov = "Saída" Then rs!Saldo_Inicial = rs!Saldo_Inicial + Me.Valor_Mov rs!Saldo_Final = rs!Saldo_Final + Me.Valor_Mov ElseIf Me.Tipo_Mov = "Entrada" Then rs!Saldo_Inicial = rs!Saldo_Inicial - Me.Valor_Mov rs!Saldo_Final = rs!Saldo_Final - Me.Valor_Mov End If rs.Update rs.MoveNext Loop End If '******************************************************************************* End If '********************************************************************** 'Cria um registro na tabela Extornos para o extorno realizado se não for extorno de inicialização do caixa, 'ou exclui todos os registros da tabela Extornos se for extorno de inicialização do caixa Set rs = CurrentDb.TableDefs("Extornos").OpenRecordset If ExtornoDeInicializacao = True Then If rs.RecordCount > 0 Then rs.MoveFirst Do While Not rs.EOF rs.Delete rs.MoveNext Loop rs.Requery End If Else rs.AddNew rs!Efetuado_Por = Me.Efetuado_Por rs!Dia_Mov = Me.Dia_Mov rs!Valor_Mov = Me.Valor_Mov rs!Tipo_Mov = Me.Tipo_Mov rs!Referente_a = Me.Referente_a rs!Descricao = Me.Descricao rs!Dia_Extorno = VBA.Date rs!Hora_Extorno = VBA.Time rs!Extornado_Por = CurrentUser rs!Motivo = MotivoExtorno rs.Update End If '********************************************************************* 'Extorna o movimento na tabela Caixa Set rs = CurrentDb.QueryDefs("conCaixa").OpenRecordset If ExtornoDeInicializacao = True Then rs.MoveFirst Do While Not rs.EOF rs.Delete rs.MoveNext Loop rs.Requery Else 'Reajusta os registros de lançamentos posteriores If DataRetroativa = True Then rs.FindFirst "Cod_Mov =" & Me.Cod_Mov rs.MoveNext Do While Not rs.EOF rs.Edit If Me.Tipo_Mov = "Saída" Then rs!Saldo_Atual = rs!Saldo_Atual + Me.Valor_Mov 'rs!Saldo_Final = rs!Saldo_Final + Me.Valor_Mov ElseIf Me.Tipo_Mov = "Entrada" Then rs!Saldo_Atual = rs!Saldo_Atual - Me.Valor_Mov 'rs!Saldo_Final = rs!Saldo_Final - Me.Valor_Mov End If rs.Update rs.MoveNext Loop End If '*********************************************************** 'Exclui o lançamento que está sendo extornado rs.FindFirst "Cod_Mov =" & Me.Cod_Mov rs.Delete '************************************************************ End If '********************************************************************************** MsgBox "Extorno realizado com sucesso.", vbExclamation, "Sucesso" 'Ultimos procedimentos Me.RecordSource = "SELECT Caixa.* FROM Caixa ORDER BY [Caixa].[Dia_Mov] DESC , [Caixa].[Hora_Mov] DESC , [Caixa].[Cod_Mov] DESC; " Me.Requery Set rs = Me.RecordsetClone If rs.RecordCount = 0 Then MsgBox "Não há registros de movimentação no caixa. O Formulário será fechado", vbExclamation, "Atenção" DoCmd.Close Else 'Ajusta o valor da lblSaldoCaixa, que exibe o saldo atual do caixa lblSaldoCaixa.Caption = Format(Me.Saldo_Atual, "Currency") '****************************************************************** End If Set rs = Nothing '********************************************************** End If Exit Sub trataerro: MsgBox Err & ": " & Err.Description End Sub
  8. Estou usando o login do próprio access. Eu usei o assistente de segurança do access para gerar o arquivo do grupo de trabalho. E o sistema é dividido em frontends e um backend. O q realmente acontece é que, como há varios frontends ligados ao mesmo backend (cada frontend em um terminal da rede), quando o mesmo usuário tenta logar em doisfrontends ao mesmo tempo aparece uma msg de erro imdeiatamente após a tentativa de login! A minha duvida é: Esse erro é inevitável, pois essa limitação é própria do access, ou tem como contornar esse problema? Se tiver comom contornoar, como devo proceder? obrigado!
  9. Olá Pessoal! Eu gostaria de saber se é uma característica do access negar que o mesmo usuário do meu WorkGroup acesse o banco de dados em dois frontends diferentes ou se isso que está acontecendo comigo é um problema mesmo! Se for um problema, qual é a razão dele? Obrigado!
  10. Olá Pessoal. Surgiu um problema aqui na empresa onde trabalho. Temos aqui um arquivo de banco de dados central localizado no servidor, que é acessado por formulários de vários outros arquivos mde da rede via tabelas vinculadas (Backend e frontend). O problema é que quando eu, que estou aqui no meu terminal (frontend 1), cadastro um novo cliente, para que seja possível que meu amigo veja o novo cadastro no seu respectivo terminal (frontend 2) ele precisa fechar o aplicativo o formulário e abrí-lo novamente novamente!!!! Não alguma maneira de essa atualização de registros seja percebida instantaneamente, de forma dinamica? Obrigado!
  11. Será que ninguém tem alguma idéia do que possa estar acontecendo????
  12. HAuahua, que simples!! E eu me matei pra escrever esse post anterior! Pleo menos eu tenho criatividade não é?? hhauahua! vlw!
  13. A única solução que vejo é meio trabalhosa mas se você fizer tudo certinho vai funcionar. Vamos a ela: Primeiro você deve, por motivos de segurança, criar uma cópia de sua tabela nesse mesmo arquivo do access (chamaremos essa tabela de TabelaCopia). Depois abra a TabelaCopia no modo estrutura e mude o campo autonumeração para número. Dessa forma você poderá definir manualmente o valor da chave primária. Então crie um registro fictício e coloque no campo de chave primária o valor 79453. Agora exporte os dados dessa tabela para um arquivo do excel - você pode fazer isso com o próprio assistente de exportação do access. Agora crie um novo arquivo do access e importe para ele a TabelaCopia no modo Somente Definição para que os dados não sejam importados junto com a tabela (chamaremos essa tabela de TabelaCopia2). Agora mude o campo número da TabelaCopia2 para autonumeração. Agora importe os dados do excel que você havia exportado anteriormente para a TabelaCopia2. Perceba que agora você pode adicionar registros com o contador da chave primária a partir do valor 79454 como você queria. Agora importe para o seu bd original a TabelaCopia2 (definição e dados) e chame-a de TabelaCopia3. Certifique-se de que após este processo a TabelaCopia3 não tenha perdido nenhum registro em relação a sua tabela original. Exclua o registro fictício 79453 da TabelaCopia3. Agora faça os relacionamentos da TabelaCopia3 com as demais tabelas de seu bd. Os relacionamentos devem estar iguais ao de sua tabela original com as demais tabelas. Agora você pode excluir sua tabela original e passar a usar a TabelaCopia3 como se fosse a tabela original e ela estará com o contador da chave primária no 79454!!! Ufa!
  14. Aew povo! Tah acontecendo o seguinte: fiz uma aplicação em Access com várias tabelas, formulários, relatórios, além de muito código em VBA e segurança em nível de usuário. Mas um recurso simples do próprio access parece que foi desabilitado! Quando estou num form e aperto ALT+E, ou ALT+L (todos esses atalhos de menu padrão q ajudam bastante pra quem não gosta de mouse) ele simplesmente não chama o menu (mesmo quando o usuário logado na aplicação é o Administrador)! O único jeito é Apertar e soltar ALT, e depois apertar E. O estranho é que quando vim fazer o teste em casa, criei um novo bd access, fiz o teste e funcionou! O que será que aconteceu com a minha aplicação que não aceita mais esses atalhos do teclado? Obrigado
  15. O problema de usar a tecla ESC é que ela serve para cancelar a edição de um registro. Portanto, se você usar a tecla Esc para tentar fechar um form, as alterações no ultimo registro editado serão desfeitas! Procure usar outra tecla. F1 por exemplo, sei lá... falou!
  16. Olá Pessoal. Eu tenho aqui no meu servió um arquivo de banco de dados que deve poder ser usado por várias pessoas em computadores diferentes ao mesmo tempo. Mas infelizmente isso não acontece. Quando eu tento abrir um arquivo mdb que já está aberto em outra máquina, ele dá erro e não me permite abrir o arquivo... É como se o arquivo estivesse aberto em modo exclusivo... Como eu faço para sanar este problemä? Obrigado
  17. Vou explicar de um modo mais facil. O conceito de chave primária e chave estrangeira parece ser complicado mas na verdade é bem simples. 1°- Chave primária é um campo (ou varios campos) de uma tabela que tem um valor único e exclusivo para cada registro. Ou seja, ele não pode se repetir. Geralmente usamos a chave primária num campo do tipo autonumeração. Ela serve pra distinguir um registro de uma tabela de todos os outros registros da tabela. Um bom exemplo se chave primária seria o CNPJ de uma empresa numa tabela de cadastro de fornecedores. 2°- Chave estrangeira é um conceito mais abstrato. Suponha que além da tabela de fornecedores, cuja chave primária é o campo 'CNPJ', tenhamos uma tabela de produtos. Pense comigo: um fornecedor pode nos fornecer vários produtos, ou, de forma análoga, vários produtos podem ter um forncedor em comum não é? Por causa disso precisamos de um campo na tabela de produtos que nos indique qual é o fornecedor desse produto. O campo que melhor faz este papel é o CNPJ da empresa pois, através dele podemos estabelecer uma relação do produto com a tabela de fornecedores (1 fornecedor para muitos produtos). Resumindo: Quando dois campos de nomes e tipos iguais existem em duas tabelas, sendo que em uma delas ele é chave primária, na outra ele será automaticamente a chave estrangeira!!!! Esse foi o método mais facil que encontrei para explicar o conceito de chave estrangeira. Mas isso não significa que eu esteja absolutamente certo. Procure artigos na internet ou em livros específicos. Eles te darão a base que você precisa. Ateh mais!
  18. Olá! Eu tirei a propriedade requerido de todos os campos da tabela indivíduos e tentei executar a consulta... mas aih ele passou a dar erro de violação de chave... mas então eu percebi q haviam 3 chaves primarias na tabela indivíduos e apenas 2 delas estavam envolvidas na transação... então desfiz a chave primária e executei a consulta. Aí deu certo!!!! Vlw Gray!
  19. Obrigado por poder me ajudar. Mandei por e-mail o arquivo de banco de dados para você dar uma olhadinha. Ele só tem duas tabelas. Uma é a PACIENTES, que contém alguns dados fictícios, e a outra chamada Indivíduos está vazia. Esta segunda tabela é a que deverá receber os dados importados de PACIENTES através da consulta PACIENTES Consulta. As tabelas não são iguais. Elas não têm o mesmo número de campos e os mesmos nomes de campos, mas os tipos de dados dos campos que estarão envolvidos na importação é o mesmo nas duas tabelas. É por isso que eu não entendo o erro que o access acusa ao tentar executar a consulta acréscimo. Obrigado
  20. Olá pessoal. Bom, tenho num bd duas tabelas, e desejo transferir os dados de uma para outra através de uma consulta acréscimo. Só que quando executo a consulta ele não transfere os registros por um erro de regras de validação. Por que isso acontece? Como esse forum não possibilita anexos nos posts fica dificil, mas alguém q esteja disposto a me ajudar passe seu e-mail que eu envio o banco de dados pra dar uma olhadinha, ok? Obrigado! Bruno
  21. Nossa! Valeu cara era isso mesmo que eu queria! Mas assim... Tenho 3 duvidas ainda: 1-O que significam as constantes CB_ERR = -1 e CB_FINDSTRING = &H14C? Eu andei vendo outros exemplos e tem gente que usa CB_FINDSTRING = &H18F. Presumo que pra cada valor dessas constantes, a API SendMessage se comporta de uma maneira. Então em que lugar eu posso estar consultando todos os valores possíveis para estas constantes e o que cada valor faz? 2- porque você declarou a API GetUserName se em nenhum momento ela é usada no código? Eu testei o código sem a API declarada e funcionou normalmente! 3- O que exatamente faz a função Left(cbo.text, cbo.selstart) dentro do âmbito da rotina? Eu percebi que sem ela a rotina não funciona corretamente, mas não entendi o porquê! Obrigado!
  22. Olá! Eu detectei dois possíveis erros no código que você estava usando. O 1° pode ser resolvido fazendo a seguinte alteração no seu código: Um segundo possível problema é a variável Letras. Pelo que eu ví esta variável nem foi declarada na sua rotina e, portanto, está vazia, o que pode ser a razão do seu problema. Mas mesmo que ela já tenha sido declarada fora da rotina, fique atenta ao valor que ela está contendo porque dependendo do seu valor, quando a linha "J = J Mod Letras" for executada, ela pode fazer com que J fique com valor <> de 0, o que aciona a instrução "Exit Sub". Esta instrução, ao ser acionada, pára de executar a rotina sem acusar erro algum. Acho que é isso!
  23. Olá Pessoal! Eu tenho uma combobox no meu formulário e gostaria que, à medida que o usuário vai digitando algo nessa combobox, ela já vá sugerindo a opção da sua lista que completa aquela sentença que o usuário digitou. É igualzinho àquele recurso de autocompletar do Internet Explorer. Se a solução for usar uma API, teria como vocês me ajudarem com a sintaxe dessa API? Obrigado!
  24. Muito Obrigado! Foi claro sim! vlw!
×
×
  • Criar Novo...