Ir para conteúdo
Fórum Script Brasil

Humm

Membros
  • Total de itens

    570
  • Registro em

  • Última visita

Tudo que Humm postou

  1. n sei se entendi perfeitamente.. mas vou lhe dar uma dica: você provavelmente vai usar consulta para isso. no criterio, os operadores para isso são: operador "E" ou "AND", exemplo: criterio: [campo1] E [campo2] indica que o criterio para selecionar esse registro é que tem que ser igual ao campo1 e o campo2 operador "OU" ou "OR" criterio: [campo1] Ou [campo2] indica que o criterio para selecionar esse registro é que tem que ser igual ao campo1 ou o campo2 valeu
  2. Humm

    Consulta de acréscimo

    simples.. entenda que geralmente quando você cria comboxs que buscam valores em tabelas, não são armazenados "descricoes" como você mesmo disse.. e sim o codigo de indice de cada item. o access faz dessa maneira automaticamente pois isso aumenta significativamente o desempenho de uma aplicacao. é mais facil referenciar campos indice do que campos de texto. bom, no teu caso, temos duas solucoes: a primeira, e na minha opniao, a correta, é q você deixe como está. e quando você quiser exibir a descricao referente ao indice armazenado, crie campos q exibam somente a coluna da combox q você deseja. a segunda é você alterar seu codigo para q ele busque o valor da coluna q você quer, ao invés do indice. ex: aqui, vai armazenar no CP_FASE o valor da coluna 1 da linha selecionada na combox. lembrando que as colunas iniciam por 0(geralmente a do indice),1,2,3.... Rs("CP_FASE") = column(Me.Combo_fase,1)
  3. olha eu aqui uso esse codigo tambem. e ele busca os dados de um consulta assim como você tambem faz. procure ver se a consulta tem todos os campos q tem a tabela q você usava anteriormente. veja se não ta faltando nada. veja se a referencia de campo indice do codigo realmente aponta para um campo indice da consulta. abraços
  4. acredito que você deva criar uma outra tabela onde um produto = varios na verdade essa tabela seria para cadastrar pacotes saca. funciona assim: tabela de pacotes tabela de saida(pacotes) ai a cada pacote cadastrado, você informa o conteudo puxando os produtos da tabela que você já tem. sendo assim, ao dar saida em um pacote, ele na verdade da saida naquele conjunto de produtos. da um pouco de trabalho mas da pra fazer.
  5. se você usar uma consulta de referencia cruzada como fonte de dados do form, e mandar exibir o form como folha de dados, não da certo?
  6. vou te dar uma dica. mande o codigo pesquisar os dados numa consulta que haja um criterio no campo que identifica a empresa que você quer: criterio = [Formulários]![nome_do_form_carregado_que_contem_a_empresa]![campo_que_identifica_a_empresa] ou seja, o criterio filtra a empresa q aparece no seu form. assim a consulta so retornara os funcionarios da empresa q ta aparecendo no momento no form carregado
  7. facil. coloque no evento "apos atualizar" do campo de checagem um codigo pra atualizar o campo que você quer exemplo: if me.campo_checagem = true then 'aqui a rotina verifica se o campo check ta marcado me.campo_alvo = "texto que vai aparecer" 'aqui a rotina atualiza o campo_alvo caso o check esteja marcado else me.campo_alvo = "" 'aqui a rotina limpa o campo_alvo caso o check não esteja marcado end if
  8. então... a tabela so deve armazenar valores de entradas de dados.. não de calculos. então, cada produto tem seu codigo que o torna individual. logo, usa-se o codigo do produto como indice das tabelas de entrada e saida de estoque. porque não se armazena resultado de calculos em tabelas?? simples, as chances destes campos não estarem atualizados é enorme. se houver um erro no programa em si, já pode comprometer o saldo. quer saber o saldo? simples. rode uma consulta que te retorne o resultado do calculo entrada - saida por produto. para isso é so você relacionar a tabela produtos com as tabelas entrada e saida ligando os campos codigo. impor integridade referencial tambem é um boa para você propagar alteracoes e exclusoes caso você altere o codigo do produto. valeu
  9. não se usa campo para armazenar resultado de operacoes como saldo. você tem q ter uma tabela de produtos, uma de entrada de estoque e outra de saida. o saldo é apenas um campo calculado de uma consulta cruzada que exibe o resultado de entrada - saida valeu
  10. http://www.techonthenet.com/access/forms/popup_cal.php
  11. existe sim. chama-se dlookup ou dpesquisa mas você pode tambem na combox determinar que a origem da linha seja a consulta que você quer
  12. possivel é. você pode fazer atraves de codigo. na propriedade "ao clicar" do campo você manda localizar o q você quer no outro form pelo DoCmd.FindRecord
  13. Humm

    consultas com data

    não entendi muito bem.. ou se entendi, julgo que voce esta aplicando um metodo complicado no teu sistema. eu usaria apenas uma tabela pra todos os turnos, e um campo nessa tabela que identificaria o turno. usaria uma outra tabela pra identificar as peças, outra tabela pra armazenar as entradas das peças, e outra tabela pra armazenar as saidas. o total da diferenca entre entrada e saida seria um campo calculado em uma consulta que cruzaria as tabelas. não se usa campo de tabela pra armazenar totais de contas. na verdade a tabela so deve armazenar entrada de dados. jamais armazenar resultados de calculos. abraços
  14. esse criterio diz o seguinte: a consulta busca a hora cadastrada então o criterio diz: se a hora estiver entre (hora atual + 3min) e (hora atual + 7min) ou seja. se a hora cadastrada par alarme for 9:00.. o alarme ocorrerá entre 8:43 até 8:47 que é a margem dos 5 minutos de antecedencia. senao pode ocorrer do minuto atual não bater exatamente com o minuto cadastrado. mas ao invés disse use: < Time()+#00:06:00# assim ele so considera o que vem 6 minutos antes da hora do alarme. por isso tem q ter um outro codigo pra desativar o alarme que é apresentado, senao a cada minuto, todos os alarmes que já venceram vao sempre aparecer porem, pensando melhor você pode ter 2 campos de hora. um para dizer a hora do compromisso e outro pra dizer a hora do alarme. nesse caso use: < time()
  15. então cara.. a consulta so vai mostrar os eventos q tem mesmo. agora no codigo você coloca algo assim: 'se houver algum registro na consulta, vai abrir o form de minuto em minuto If Not IsNull(DLookup("[data]", "consulta_alarme")) Then DoCmd.OpenForm "form_ALARMES", acFormDS End If
  16. entenda como funciona o relacionamento entre 2 tabelas no caso 1 para muitos: num exemplo: tabela pai: clientes campo chave: codigo do cliente e demais campos.. tabela filha: servicos campo chave: ordem de servico <---- nesse campo, é gerado um numero exclusivo e unico para cada registro, que pode ser usado como numero da O.S. campo filho: clientes_filho <----- nesse campo é q havera o relacionamento 1 para muitos. deve ser um campo tipo numero com duplicacao autorizada e demais campos... como ocorre o relacionamento? cada cliente tem um codigo exclusivo. vamos supor, temos o cliente CODIGO 10 e na tabela de servico fica assim: O.S. = 1 clientes_filho = 10 --- O.S. = 2 clientes_filho = 10 ou seja, o campo cliente_filho indica a qual registro da tabela cliente ele pertence. sacou? depois de fazer as tabelas, você temq fazer o relacionamento do access conectando o campo chave de clientes no campo filho de servicos usando a opcao um para muitos e impondo a referencia tambem. então depois no formulario e subformulario, você indica o campo pai como o chave de clientes e o campo filho como cliente_filho
  17. o seu problema é que acho q você inverteu as coisas. pelo q entendi, o de cima é q deve ser o formulario (mestre) e o de baixo o subform com pelo menos um campo filho para sincronizar as duas tabelas.
  18. use a mesma consulta do form no relatorio. mas se você quer um relatorio, vai ter q criar um relatorio
  19. em ingles campo [data] com criterio = date() campo [hora] com criterio = between Time()+#00:07:00# AND Time()+#00:03:00# campo [ATIVAR_ALARME] use criterio = True campo [AVISADO] use criterio = False
  20. no rodape do subform: =soma([campo]) no form principal(não é no rodape): =[sEU_SUB_FORM].[Formulário]![CAMPO_DO_SUBFORM_QUE_EXIBE_O_TOTAL]
  21. cara.. no form principal, crie um controle com a expressao: =[sEU_SUB_FORM].[Formulário]![CAMPO_DO_SUBFORM_QUE_EXIBE_O_TOTAL]
  22. dá. você tem que criar um codigo no evento NO TIMER de algum form que fique sempre aberto. você pode setar o intervalo de tempo de checagem no campo que vem logo abaixo do NO TIMER que se chama INTERVALO DO CRONOMETRO eu aconselho você a setar de minuto em minuto usando o valor 60000 para não deixar seu sistema lento. sua tabela deve ter pelo menos um campo DATA(00/00/0000), um campo HORA (00:00), um campo ATIVAR_ALARME(sim/não) e um campo AVISADO(sim/não) então crie uma consulta para lhe retornar apenas os registros que estiverem setados como marcados para alarme. ex: campo [data] com criterio = data() campo [hora] com criterio = Entre Tempo()+#00:07:00# E Tempo()+#00:03:00# assim você tem uma margem de erro campo [ATIVAR_ALARME] use criterio = Sim campo [AVISADO] use criterio = Não agora você escolhe se vai chamar os alarmes por msgbox com dlookups ou se vai criar um form pra exibir os alarmes. abraços
  23. voce esta usando um controle calculado no rodape do formulario? ele atualiza de acordo com a filtragem.. mas eu uso num controle no rodape do form: =soma([campo])
  24. resolvi o misterio. faltou eu colocar um modulo que faz parte do codigo. Attribute VB_Name = "basHandleQuotes" Option Compare Database Option Explicit ' Desenvolvido por ' Litwin, Getz, e Gilbert. ' Access 97 Developer's Handbook (Sybex) ' Copyright 1997. ' Para usar este código, mantenha as linhas acima. Function adhHandleQuotes(ByVal varValue As Variant, _ ByVal strDelimiter As String) As Variant ' Replace all instances of strdelimiter with varValue with TWO instances, ' thereby handling the darned quote issue once and for all. ' Returns Null if varValue was Null, otherwise ' returns varValue with all instances of strDelimiter ' replaced with two of each. ' HandleQuotes("This 'is' a test", "'") returns ' "This ''is'' a test" adhHandleQuotes = Replace(varValue, strDelimiter, strDelimiter & strDelimiter) End Function Function Replace(ByVal varValue As Variant, _ ByVal strFind As String, ByVal strReplace As String) As Variant ' Replace all instances of strFind with strReplace in varValue. Dim intLenFind As Integer Dim intLenReplace As Integer Dim intPos As Integer If IsNull(varValue) Then Replace = Null Else intLenFind = Len(strFind) intLenReplace = Len(strReplace) intPos = 1 Do intPos = InStr(intPos, varValue, strFind) If intPos > 0 Then varValue = Left(varValue, intPos - 1) & strReplace & Mid(varValue, intPos + intLenFind) intPos = intPos + intLenReplace End If Loop Until intPos = 0 End If Replace = varValue End Function
  25. cara, eu tenho um codigo de pesquisa que atualiza a janela em tempo real de digitacao. da uma olhada nele pra ver qual o macete e adaptar ao seu. http://scriptbrasil.com.br/forum/index.php...mp;#entry602045
×
×
  • Criar Novo...