Ir para conteúdo
Fórum Script Brasil

Marcia Torquato

Membros
  • Total de itens

    10
  • Registro em

  • Última visita

Posts postados por Marcia Torquato

  1. MrMALJ

    Bom dia!

    Deu para resolver. Agora até mesmo se você colocar uma informação mais tarde

    ele já esta programado para preencher todos os dados alterados. Exemplo, você não sabe

    o CEP para não travar o processo deixará o campo para depois e continuará com as outras

    informações. Quando souber o CEP no formRuas ao colocar o número do CEP automaticamente na Rua

    daquele CEP no formDados será preenchido automaticamente.

    Segue a solução:(Caixa de combinação do FormDados em Após atualizar)

    Option Compare Database

    Private Sub ExibirDados()

    If IsNull(Me.CódigoRua.Value) Or Not IsNumeric(Me.CódigoRua.Value) Then

    Exit Sub

    End If

    Me.Endereço.Value = _

    DLookup("Endereço", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.CEP.Value = _

    DLookup("CEP", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.ResponsavelRua.Value = _

    DLookup("ResponsavelRua", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.Setor.Value = _

    DLookup("Setor", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.Bairro.Value = _

    DLookup("Bairro", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.Cidade.Value = _

    DLookup("Cidade", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.UF.Value = _

    DLookup("UF", "tab_Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    End Sub

    Private Sub CódigoRua_AfterUpdate()

    Call ExibirDados

    Me.Recalc

    End Sub

    Private Sub Form_AfterUpdate()

    Me.Recalc

    End Sub

    Private Sub Form_Open(Cancel As Integer)

    DoCmd.GoToRecord , , acNewRec

    End Sub

    Com relação a atualizar automaticamente para depois a solução é

    esta (formRuas em Após atualizar):

    Private Sub CEP_AfterUpdate()

    DoCmd.RunSQL "UPDATE Tab_Dados SET Tab_Dados.CEP = Forms!FormRuas!CEP WHERE (((Tab_Dados.CódigoRua)=[Forms]![FormRuas]![CódigoRua]));"

    End Sub

    Agradeço a atenção de todos.

  2. MrMALJ

    Perdão.

    Bem o que ocorreu foi o seguinte.

    Tenho duas tabelas, uma de dados onde tenho, nome completo, idade , fone...Endereço.

    E outra tabela de cadastro de ruas, onde tenho CEP, setor, Rua,Responsável.

    No formulário Dados cadastrais criei uma caixa de combinação de ruas, baseado na

    tabela ruas, ou seja quando o usuário começar a cadatrar uma nova pessoa e

    chegar na caixa de combinação, escolherá a Rua em que o morador esta situado e os dados Endereço, CEP,Setor,

    Responsável, será preenchido automaticamente, sem ter que entrar em um novo

    formulário para preencher esta informação.

    Antes eu estava conseguindo fazer o processo com dois formulários o que não é prático,

    já que as pessoas que usarão o sistema nunca utilizaram um computador ou conhecem muito

    pouco, portanto a minha idéia é deixa-lo o mais prático e didático possível.

    Espero ter me expressado melhor.

  3. Oi

    Deixa ver se eu entendi.

    Pelo que você escreveu, tu quer data abreviada 28/11/2008,

    se na tua tabela esta configurado para data completa vai aparecer por

    extenso (sexta-feira, 28 de novembro de 2008), você pode alterar a

    tabela para data abreviada e caso não queira mecher na tabela vá no

    teu relatório e na caixa de texto Data em propriedades/dados altere a

    mascará de entrada para Data Abreviada...

    Só estou na dúvida se é isso que você quer.

    E me desculpe na primeira, eu havia entendido que você não queria

    que aparecesse apenas o dia da semana.

    Com relação ao valor em R$ confesso que não entendi exatamente o

    que você quer!

  4. Com relação ao valor por extenso tente esta dica, fiz e deu certo.

    E não manjo de linguagem VBA.

    Function Extenso95(nValor)

    If IsNull(nValor) Or nValor <= 0 Or nValor > 9999999.99 Then

    Exit Function

    End If

    Dim nContador, nTamanho As Integer

    Dim cValor, cParte, cFinal As String

    ReDim aGrupo(4), aTexto(4) As String

    ReDim aUnid(19) As String

    aUnid(1) = "UM ": aUnid(2) = "DOIS ": aUnid(3) = "TRES "

    aUnid(4) = "QUATRO ": aUnid(5) = "CINCO ": aUnid(6) = "SEIS "

    aUnid(7) = "SETE ": aUnid(8) = "OITO ": aUnid(9) = "NOVE "

    aUnid(10) = "DEZ ": aUnid(11) = "ONZE ": aUnid(12) = "DOZE "

    aUnid(13) = "TREZE ": aUnid(14) = "QUATORZE ": aUnid(15) = "QUINZE "

    aUnid(16) = "DEZESSEIS ": aUnid(17) = "DEZESSETE ": aUnid(18) = "DEZOITO "

    aUnid(19) = "DEZENOVE "

    ReDim aDezena(9) As String

    aDezena(1) = "DEZ ": aDezena(2) = "VINTE ": aDezena(3) = "TRINTA "

    aDezena(4) = "QUARENTA ": aDezena(5) = "CINQUENTA "

    aDezena(6) = "SESSENTA ": aDezena(7) = "SETENTA ": aDezena(8) = "OITENTA "

    aDezena(9) = "NOVENTA "

    ReDim aCentena(9) As String

    aCentena(1) = "CENTO ": aCentena(2) = "DUZENTOS "

    aCentena(3) = "TREZENTOS ": aCentena(4) = "QUATROCENTOS "

    aCentena(5) = "QUINHENTOS ": aCentena(6) = "SEISCENTOS "

    aCentena(7) = "SETECENTOS ": aCentena(8) = "OITOCENTOS "

    aCentena(9) = "NOVECENTOS "

    cValor = Format$(nValor, "0000000000.00")

    aGrupo(1) = Mid$(cValor, 2, 3)

    aGrupo(2) = Mid$(cValor, 5, 3)

    aGrupo(3) = Mid$(cValor, 8, 3)

    aGrupo(4) = "0" + Mid$(cValor, 12, 2)

    For nContador = 1 To 4

    cParte = aGrupo(nContador)

    nTamanho = Switch(Val(cParte) < 10, 1, Val(cParte) < 100, 2, Val(cParte) < 1000, 3)

    If nTamanho = 3 Then

    If Right$(cParte, 2) <> "00" Then

    aTexto(nContador) = aTexto(nContador) + aCentena(Left(cParte, 1)) + "E "

    nTamanho = 2

    Else

    aTexto(nContador) = aTexto(nContador) + IIf(Left$(cParte, 1) = "1", "CEM ", aCentena(Left(cParte, 1)))

    End If

    End If

    If nTamanho = 2 Then

    If Val(Right(cParte, 2)) < 20 Then

    aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 2))

    Else

    aTexto(nContador) = aTexto(nContador) + aDezena(Mid(cParte, 2, 1))

    If Right$(cParte, 1) <> "0" Then

    aTexto(nContador) = aTexto(nContador) + "E "

    nTamanho = 1

    End If

    End If

    End If

    If nTamanho = 1 Then

    aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 1))

    End If

    Next

    If Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 0 And Val(aGrupo(4)) <> 0 Then

    cFinal = aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS")

    Else

    cFinal = ""

    cFinal = cFinal + IIf(Val(aGrupo(1)) <> 0, aTexto(1) + IIf(Val(aGrupo(1)) > 1, IIf(aGrupo(2) Mod 100 = 0, "MILHÕES ", "MILHÕES, "), IIf(aGrupo(2) Mod 100 = 0, "MILHÃO E ", IIf(aGrupo(2) = 0 And aGrupo(3) = 0, "MILHÃO ", "MILHÃO, "))), "")

    If Val(aGrupo(2) + aGrupo(3)) = 0 Then

    cFinal = cFinal + "DE "

    Else

    If Val(aGrupo(3)) = 0 Then

    cFinal = cFinal + IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL ", "")

    Else

    cFinal = cFinal + IIf(Val(aGrupo(3)) Mod 100 = 0 And aGrupo(4) = 0, IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL E ", ""), IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL, ", ""))

    End If

    End If

    cFinal = cFinal + aTexto(3) + IIf(Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 1, "REAL ", "REAIS ")

    cFinal = cFinal + IIf(Val(aGrupo(4)) <> 0, "E " + aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS"), "")

    End If

    Extenso95 = cFinal

    End Function

    Para testa-la, experimente inserir num formulário 2 caixas de texto, sendo uma para receber valores monetários (que poderemos chama-la de "txtValor") e a outra para observar o resultado da conversão (denominada "txtExtenso"). No evento "AfterUpdate" da primeira, cole o código abaixo:

    If IsNull(txtValor) Or txtValor = "" Then

    txtExtenso = Null

    Exit Sub

    Else

    txtExtenso = Extenso95(txtValor.Text)

    End If

    Desculpe...faltou informar:

    Esta formula você tem que criar um módulo para ela.

    Esta informação você não cole neste módulo:

    Para testa-la, experimente inserir num formulário 2 caixas de texto, sendo uma para receber valores monetários (que poderemos chama-la de "txtValor") e a outra para observar o resultado da conversão (denominada "txtExtenso"). No evento "AfterUpdate" da primeira, cole o código abaixo:

    If IsNull(txtValor) Or txtValor = "" Then

    txtExtenso = Null

    Exit Sub

    Else

    txtExtenso = Extenso95(txtValor.Text)

    End If

    Na caixa de texto após atualizar cole somente somente esta parte:

    If IsNull(txtValor) Or txtValor = "" Then

    txtExtenso = Null

    Exit Sub

    Else

    txtExtenso = Extenso95(txtValor.Text)

    End If

    É a única coisa que consegui fazer sem dar erro.

    A problema é que gera duas caixas.

    Mas enfim...quem sabe te ajuda.

  5. Oi

    Para fazer o que você quer com relação a data, a única forma

    que conheço é mudar as configurações regionais

    DATA COMPLETA: Exibe de acordo com a sua configuração regional do Painel de controle do windows -» Terça, 25 de agosto de 2007 (exemplo).

    Se mudar lá, deixar apenas para que apareça o dia/mês/ano verá que no

    teu banco de dados ficará do mesmo modo.

    Porém deve existir um outro meio; que nossos caros colegas devem saber.

    Não devo ter ajudado muito, porém vai que a informação te ajude.

  6. Consegui ajuda.

    A resposta esta aí.

    Option Compare Database

    Private Sub ExibirDados()

    If IsNull(Me.CódigoRua.Value) Or Not IsNumeric(Me.CódigoRua.Value) Then

    Exit Sub

    End If

    Me.Endereço.Value = _

    DLookup("Endereço", "Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.CEP.Value = _

    DLookup("CEP", "Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    Me.ResponsavelRua.Value = _

    DLookup("ResponsavelRua", "Ruas", "[CódigoRua]=" & CLng(Trim(Me.CódigoRua.Value)))

    End Sub

    Private Sub CódigoRua_AfterUpdate()

    Call ExibirDados

    Me.Recalc

    End Sub

    Private Sub Form_AfterUpdate()

    Me.Recalc

    End Sub

    Private Sub Form_Open(Cancel As Integer)

    DoCmd.GoToRecord , , acNewRec

    End Sub

  7. Prezados colegas:

    Já pesquisei nos tópicos sobre caixa de combinação e não encontrei a solução para a minha dúvida.

    Ou melhor encontrei um próximo, porém não me deu a idéia de como fazer, já que a dúvida esta além

    da minha.

    Tenho duas tabelas, uma é de Ruas onde tem os seguintes campos, Nome da Rua, CEP e setor e outra é de dados, onde

    terei o nome da pessoa, data de nascimento, idade e afins.

    No meu formulário de Dados eu gostaria que através de uma caixa de combinação

    fosse localizado a Rua que cadastrei na tabela e ao selecionar a Rua os demais campos

    como CEP e setor fossem preenchidos automáticamente.

    Não consigo fazer esse processo.

    Encontrei caminho para usar dois formulários, como ter um de DADOS e com um botão de comando acessar outro

    formulário que seria o de RUAS. Mas esta não é a minha intenção, pois quero deixar tudo em um único formulário para ficar o mais didático

    possível.

    Se por ventura tiver algum tópico com esta resposta, peço antecipadamente desculpas, pois confesso que não encontrei.

    E se puderem me indicar ficarei imensamente agradecida.

    Obrigada a todos pela atenção! :mellow:

×
×
  • Criar Novo...