• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Kryptex

[Resolvido] Problema em access

24 mensagens neste tópico

Tenho varios formularios com apresentaçao em tabela e qeria passar a informaçao toda de uma coluna da tabela pra uma textbox pelo vba, mas só me passa o 1º registo do formulario.

Como posso fazer para passar todos

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra o código que estais a utilizar para fazer isso, deve ser alguma coisa no código que esteja mal ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra o código que estais a utilizar para fazer isso, deve ser alguma coisa no código que esteja mal ...

estou a usar a funçao dlookup

ja tentei coloca-la num ciclo o que funciona mas como a tabela tem 308 registros bloqueia o programa  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Vlookup só devolve um resultado. Tens de fazer um ciclo na tabela e ir concatenando dados numa string e no final colocas na textbox.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Vlookup só devolve um resultado. Tens de fazer um ciclo na tabela e ir concatenando dados numa string e no final colocas na textbox.

podes mostrar um codigo de exemplo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Vlookup só devolve um resultado. Tens de fazer um ciclo na tabela e ir concatenando dados numa string e no final colocas na textbox.

eu tou a usar este codigo neste momento, embora no meu form existam registros diferentes do que "(Form_Aveiro.zp = "Norte")", este codigo nao o esta a assumir e faz-m um ciclo infinito  :)

[move]:wallbash: :rant_01:[/move]

Private Sub cc1_Change()
Dim x, y As String
If (cc1.Text = "Norte") Then
    Do
    x = DLookup("email", "camaras", "zp= '" & Form_mensagem.cc1 & "'")
    y = y + ";" + " " + x
Loop While (Form_Aveiro.zp = "Norte") 
    y = Form_mensagem.txtTo
End If
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres recolher os emails para utilizares como newletter, publicidade, etc, não é ? Podes fazer mais ou menos isto:

Crias uma função para ler os emails:

Function ReadEmails() As String
Dim rs As Recordset
Dim SQL As String

    ' Define o filtro
    SQL = "SELECT * FROM camaras WHERE zp = 'norte';"
    
    Set rs = CurrentDb.OpenRecordset(SQL)
    With rs
       
        ' Ciclo em todos os registos
        Do Until .EOF
        
            ' Lê a informação e move para o próximo registo
            ReadEmails = ReadEmails & rs.Fields("email") & ";"
            .MoveNext
        Loop
        
    End With

End Function

E depois só tens de fazer:

Text1.Value = ReadEmails()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres recolher os emails para utilizares como newletter, publicidade, etc, não é ? Podes fazer mais ou menos isto:

Crias uma função para ler os emails:

Function ReadEmails() As String
Dim rs As Recordset
Dim SQL As String

    ' Define o filtro
    SQL = "SELECT * FROM camaras WHERE zp = 'norte';"
    
    Set rs = CurrentDb.OpenRecordset(SQL)
    With rs
       
        ' Ciclo em todos os registos
        Do Until .EOF
        
            ' Lê a informação e move para o próximo registo
            ReadEmails = ReadEmails & rs.Fields("email") & ";"
            .MoveNext
        Loop
        
    End With

End Function

E depois só tens de fazer:

Text1.Value = ReadEmails()

esse codigo ta a dar erro type mismatch na instruçao "Set rs = CurrentDb.OpenRecordset(SQL)"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra lá o filtro que utilizaste e verifica (no editor de VBA) em Tools - References se tens adicionado o Microsoft ActiveX Data Objects x.xx Library

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho adicionado o Microsoft ActiveX Data Objects 2.7 Library e nao fiz nenhum filtro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu tens uma função dentro de um sub. Tens de colocar a função fora do sub e depois dizes que a textbox respectiva é igual ao resultado da função

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu tens uma função dentro de um sub. Tens de colocar a função fora do sub e depois dizes que a textbox respectiva é igual ao resultado da função

eu ja tentei fazer isso e atraves duma macro e continua-me a dar o mesmo erro na mesma linha de codigo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa, foi também uma pequena falha minha (não tinha testado)  :-[

Retira a referência ao Microsoft ActiveX Data Objects x.xx Library e selecciona Microsoft DAO 3.x Objects Library.

Depois fazes assim:

Function ReadEmails(zona As String) As String
Dim rs As Recordset
Dim SQL As String

    ' Define o filtro
   SQL = "SELECT * FROM camaras WHERE [zp] = '" & zona & "';"
   
    Set rs = CurrentDb.OpenRecordset(SQL)
    With rs
       
        ' Ciclo em todos os registos
       Do Until .EOF
        
            ' Lê a informação e move para o próximo registo
           ReadEmails = ReadEmails & rs.Fields("email") & ";"
            .MoveNext
        Loop
        
    End With

End Function

Private Sub cc1_Change()
    Me.txtTo.Value = ReadEmails(Me.cc1.Value)
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Retira a referência ao Microsoft ActiveX Data Objects x.xx Library e selecciona Microsoft DAO 3.x Objects Library.

Fizeste isto ? Qual é o erro que dá e  como está o código agora ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fizeste isto ? Qual é o erro que dá e  como está o código agora ?

ya fiz tudo o que tava ai mas continua a dar-m run-time error '13' type mismatch

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, não fizeste o que te disse  :)

Eu disse retira "Retira a referência ao Microsoft ActiveX Data Objects x.xx Library" e tu deixaste lá.

Remove essa e deixa apenas a Microsoft DAO 3.6 Objects Library

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya afinal era isso agora ja da, tinha tirado uma mas exqueci-me desse. :-[

:thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

surgiu-me outro problema, :ohwell: necessito que a base continue a fazer o mesmo nesse campo. mas que separe os endereços de emails por tipo.

ex: tenho emails das camaras e das piscinas mas quero que m apareça apenas os das piscinas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres recolher os emails para utilizares como newletter, publicidade, etc, não é ? Podes fazer mais ou menos isto:

Crias uma função para ler os emails:

Function ReadEmails() As String
Dim rs As Recordset
Dim SQL As String

    ' Define o filtro
    SQL = "SELECT * FROM camaras WHERE zp = 'norte';"
    
    Set rs = CurrentDb.OpenRecordset(SQL)
    With rs
       
        ' Ciclo em todos os registos
        Do Until .EOF
        
            ' Lê a informação e move para o próximo registo
            ReadEmails = ReadEmails & rs.Fields("email") & ";"
            .MoveNext
        Loop
        
    End With

End Function

E depois só tens de fazer:

Text1.Value = ReadEmails()

sei que este codigo nao está 100% correcto, mas tenho o correcto, ou seja, o que postas-te aqui, mas tenho um problema ao converter este codigo para a minha BD.

ao tentar fazer uma pesquisa atraves deste codigo, o programa da-me um erro "type mismatch" e apresenta-me todos os valores da tabela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora