Ir para conteúdo
Fórum Script Brasil

Humm

Membros
  • Total de itens

    570
  • Registro em

  • Última visita

Tudo que Humm postou

  1. voce sabe usar as consultas (querys) ?
  2. so uma pergunta.. se voce já tem na sua tabela um campo que sinaliza se o cadastro ta ativo ou não.. pra que isolar os cadastros inativos em outra tabela? se a ideia é obter listas de quem ta ativo ou inativo, voce pode usar consultas para isso, definindo o criterio da pesquisa.
  3. no evento apos atualizar da caixa de selecao coloque: me.campo_data = date
  4. Humm

    Atualização automatica

    use procedimento de evento do vba você pode usar os comandos: me.seu_controle.requery ou docmd.requery "seu_controle" ou para todo o form me.refresh
  5. Humm

    (Resolvido) Fluxo de caixa

    cara, pensando aqui acho que voce so precisava de uma tabela.. no caso das saidas, voce colocava um campo logico onde S = saida e E = entrada isso seria o que iria dizer o que é pra somar e o q é pra subtrair. desta forma voce não ia precisar unir duas tabelas.. mas, pra aprender sobre os comandos SLQ, use o contrutor de consultar e depois mande exibir o design em codigo SQL.
  6. hehe deu vontade de dar uma de MrMALJ agora e perguntar: fera, posso colocar como resolvido? uhauhahua abraços iceguy e MrMALj
  7. o interessante é ir reconstruindo a consulta parte a parte até ver quando é que dá o problema. pode ser o uso de duas funcoes IIF.. se puder, voce poderia tentar dividir essa consulta em duas.. uma fazendo uma primeira etapa com IIF, e depois outra consulta chamando essa primeira e aplicando o segundo IIF
  8. o intuito do forum é compartilhar justamente essas informacoes.. descreva como resolveu o erro para a posteridade
  9. so uma dica.. nessas horas é bom utilizar o velho debug.print pra retornar o valores envolvidos.. assim a gente ve como o vba ta interpretando as coisas.
  10. veja bem.. todo evento vba sai de algum lugar de origem.. nesse caso, o está vindo do form em questao.. então quando você coloca o me. no codigo, você indica que a origem do que vier depois do me. é o proprio form.. me.seucampo = form!seuform.seucampo sacou? é como se fosse um atalho.
  11. faz o seguinte, troca o 0 por 1 for i = 1 to ....
  12. o erro está aqui: Private Sub Comando12_Click() Dim i, strPrestacoes As Integer Dim strValor As Currency Dim strData As Date strPrestacoes = [Forms]![Credito]![Contrato]![Meses] strValor = [Forms]![Credito]![Contrato]![Valor] / strPrestacoes strData = [Forms]![Credito]![Contrato]![Data] If Parcela = "" Or IsNull(Parcela) Or Parcela = "0" Then For i = "" To strPrestacoes DoCmd.GoToRecord , , acNewRec Me.Parcela = i Me.Valor = strValor Me.Vencimento = DateAdd("m", i - 1, strData) Next Else MsgBox "Já foram calculadas as prestações deste contrato." _ & " Para calcular novamente tem que apagar as actuais.", vbCritical, "Erro" End If End Sub for i = "" ????? entenda.. i é uma variavel do tipo INTEIRO.. ou seja Dim i, strPrestacoes As Integer isso significa que ela é um NUMERO INTEIRO = INTEGER então o vba ta interpretando.. for I = "" ou seja para I = nada ?? nada não é um numero inteiro.. nada é nulo(null) então voce tem que alterar esse "" para 0 logo fica: for I = 0 então seu codigo corrigido: Private Sub Comando12_Click() Dim i, strPrestacoes As Integer Dim strValor As Currency Dim strData As Date strPrestacoes = [Forms]![Credito]![Contrato]![Meses] strValor = [Forms]![Credito]![Contrato]![Valor] / strPrestacoes strData = [Forms]![Credito]![Contrato]![Data] If Parcela = "" Or IsNull(Parcela) Or Parcela = "0" Then For i = 0 To strPrestacoes DoCmd.GoToRecord , , acNewRec Me.Parcela = i Me.Valor = strValor Me.Vencimento = DateAdd("m", i - 1, strData) Next Else MsgBox "Já foram calculadas as prestações deste contrato." _ & " Para calcular novamente tem que apagar as actuais.", vbCritical, "Erro" End If End Sub
  13. esse codigo que voce copiou ta todo embolado.. copie novamente e use o botao INSERIR CODE aqui do forum
  14. Humm

    Problema em script q fiz

    só uma questao.. a rotina que voce criou acontece antes do form abrir.. se o form ainda não abriu, como voce quer testar um campo dentro dele? outra é que.. se for um form de varios registros.. esse campo me.xuso pode estar em branco. o correto ai é usar a função dlookup que vai pesquisar o valor de xuso diretamente na tabela, e não no form, sacou? ou se voce ta querendo pesquisar esse valor de outro form, especifique o form usando forms!campo.value exemplo: if dlookup("[xuso]", "tabela ou consulta que contem esse valor") = "administrador" then outra é que a metodologia que voce ta usando no seu algoritimo vai te gerar problemas mais tarde. campos de referencia, usa-se sempre numeros para indexa-los.. ou seja, você atribui um numero para cada nivel de usuario.. de uma pesquisada aqui que eu postei um exemplo de sistema de LOGIN
  15. crie um evento apos atualizar na sua caixa de combinacao.. isso significa que após atualizar a caixa, ela vai executar um PROCEDIMENTO DE EVENTO no vba ai la no VBA vai aparecer: private sub sua_combobox_afterupdate() if me.sua_combobox = "emprestado" then 'condição que valida a seleção caso seja EMPRESTADO me.seu_outro_controle.enabled = true 'aqui seu controle alvo pega o estado de ativado elseif me.sua_combobox = "disponivel" then 'a outra condição que valida a seleção caso seja DISPONIVEL me.seu_outro_controle.enabled = false 'aqui seu controle alvo pega o estado de desativado end if 'fim das condições end sub isso é para você ir entendendo o codigo.
  16. http://scriptbrasil.com.br/forum/index.php?showtopic=158853
  17. pois é.. talvez ate de pra rodar tudo via vba.. mas tentei fazer do modo mais pratico. já resolvi daquele outro jeito.. fiz dois forms nesse caso, cada um com um campo calculado adequado ao fim que eu espero.
  18. funciona perfeitamente. fiz uns testes pra tentar isolar o problema.. e descobri o seguinte.. sempre que o vba tentar atribuir para um .sourcecontrol atravez de rotina uma string que contenha a função seimed ou ifImed, vai dar esse erro. eu tentei com ifImed bem simples, tipo.. =ifImed(1=1;"A";"B") e deu o mesmo erro. até tentei fazer o seguinte.. criei um rotulo no form onde o caption dele é a string que quero e que funciona naturalmente se colocada manualmente no sourcecontrol da caixa de texto. então mandei o vba: me.controle.controlsource = me.rotulo.caption deu erro mesmo assim.. tambem tentei antes declarar que se trata de uma string, mas nada resolve isso. acabei clonando o subform e agora tenho dois subforms identicos onde a unica diferença entre os dois é o controlsource dessa caixa.. era isso que eu queria evitar.. duplicar forms so por causa de um detalhe.
  19. é um campo calculado comum, ou seja, caixa de texto não acoplada. to achando que o problema pode estar nas aspas (quotes) como a string contem quotes(") pode ser ai.. exemplo: a string é -> ="TESTE" Me.AD_BOX.ControlSource = " ="teste" " vai dar erro, pois o vba vai entender que a segunda quote já está finalizando a primeira.. então, até onde me lembro, usa-se duas quotes quando se quer que ela não seja interpretada pelo vba. Me.AD_BOX.ControlSource = " =""teste"" " se eu fizer assim, funciona perfeito o exemplo. mas se eu usar a string mais complexa com seimed, etc e tal.. da erro quando tenta executar a rotina.. erro no momento em que a rotina tenta atribuir essa string à propriedade controlsource do controle. o erro diz: lembrando que no vba, o depurador não vê erro de sintaxe na string. existe outra maneira de tratamento de quotes no vba? ou seja, quando se quer quotes fazendo parte da string, usa-se duas quotes seguidas, não é isso? só pra constar, usando a sintaxe tanto em ingles como em portugues, da o mesmo erro. dpesquisa = dlookup, etc e tal
  20. bom, tenho 2 forms diferentes que usam o mesmo subform, porem nunca usam ao mesmo tempo. então, dependendo de qual form tá abrindo o subform, eu quero que a fonte de controle de um determinado campo seja alterada. para isso fiz a rotina: Private Sub Form_Load() If CurrentProject.AllForms("CLI").IsLoaded Then Me.AD_BOX.ControlSource = "=SeImed(ÉNulo([TotalPG]) Ou [TotalPG]=0 Ou [TotalPG]=DPesquisa(""[VALOR_ORC]"";""CONS_VL_ORC_BY_OS_2"");"" "";""Faltam "" & Format(DPesquisa(""[VALOR_ORC]"";""CONS_VL_ORC_BY_OS_2"")-[TotalPG];""Moeda"") & "" para completar o pagamento!"")" ElseIf CurrentProject.AllForms("AGENDA").IsLoaded Then Me.AD_BOX.ControlSource = "=SeImed(ÉNulo([TotalPG]) Ou [TotalPG] = 0 Ou [TotalPG] = DPesquisa(""[VALOR_ORC]""; ""CONS_VL_ORC_BY_OS""); "" ""; ""Faltam "" & Format(DPesquisa(""[VALOR_ORC]""; ""CONS_VL_ORC_BY_OS"") - [TotalPG]; ""Moeda"") & "" para completar o pagamento!"")" Else Me.AD_BOX.ControlSource = "" End If End Sub mas ao abrir qualquer um dos dois forms, da erro de sintaxe ao definir o controlsource, ou seja, é como se houvesse erro na string que eu quero definir para o campo. agora o curioso é que se eu testo a string direto no controlsource do campo la do subform, sem passar pela rotina, funciona perfeitamente. tambem se eu definir uma string besta como: Private Sub Form_Load() If CurrentProject.AllForms("CLI").IsLoaded Then Me.AD_BOX.ControlSource = "=""TESTE""" ElseIf CurrentProject.AllForms("AGENDA").IsLoaded Then Me.AD_BOX.ControlSource = "=""TESTE2""" Else Me.AD_BOX.ControlSource = "" End If End Sub tambem funciona normal.. então quero saber porque diretamente no form a string que quero funciona, mas atravez de rotina, não. valeu
  21. Humm

    Comando não Exclui registro

    bom ,eu uso isso no access 2007/2010 e da certinho
  22. Humm

    Comando não Exclui registro

    use estes 'excluir DoCmd.RunCommand acCmdDeleteRecord 'ir para novo DoCmd.GoToRecord , "", acNewRec
  23. é so criar uma consulta que concatene os campos pesquiaveis que voce deseja em apenas uma linha. voce pode combinar essa tecnica com um exemplo de sistema de busca de dados de exemplo que tem aqui no forum.. já vi postado diversas vezes e é o que eu uso.. vai mostrando os resultados em tempo real a medida que voce digita.
  24. Humm

    codigo Consulta entre datas

    da pra automatizar o processo de importacao tambem
  25. Humm

    codigo Consulta entre datas

    mas ai é q está.. voce n precisa efetivamente de uma tabela para cada equipa.. voce pode ter um campo equipa na tabela principal, onde voce designa quem faz parte de qual equipa. por exemplo.. você tem a tabela de cadastro de funcionarios, e lá voce define a equipa daquele funcionario. então quando voce selecionar na consulta, voce escolhe de qual equipa se trata, e ele tras apenas os registros referentes aquela equipa. ou seja, voce pode concentrar tudo numa tabela só.. no caso dos movimentos diarios, ai faz-se outra tabela para isso, que fica vinculada ao registro de cada funcionario.. entende? ou seja, é a relação um-para-muitos logo, cada registro de funcionario tem varios registros de movimento ligados a ele, entende? assim voce não tem informacoes redundantes, o sistema fica mais leve e organizado. em relacao a datas, o access é capaz de manipular datas da maneira que voce imaginar.. por dia, por semana, por mes, por horario, pelo periodo que voce especificar então voce não precisa de uma tabela para cada dia ou semana.. apenas uma tabela geral de movimento. nela voce vai filtrar o periodo que deseja, o funcionario que deseja, a equipa q deseja e assim por diante.. voce pode ter varios criterios na mesma consulta.. e pode ate usar condicoes nos criterios.. exemplo.. se o valor do campo é tal, exiba-me isso, se não, exiba-me aquilo. podes ter uma condicao dentro da outra.. e por ai vai.. infinitas possibilidades.. comece criando o cadastro de pessoal. depois me infome que tipo de movimento voce armazena com cada funcionario.. por exemplo, que dados voce precisa para cada registro de movimento.. lembre-se que o movimento é preso ao funcionario e não a equipa.. a equipa deve ser apenas um detalhe classificatorio.
×
×
  • Criar Novo...