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

Kryptex

[Resolvido] Problema em access

Recommended Posts

Kryptex

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:

Share this post


Link to post
Share on other sites
vbtipo

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


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Share this post


Link to post
Share on other sites
Kryptex

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  :)

Share this post


Link to post
Share on other sites
jpaulino

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.

Share this post


Link to post
Share on other sites
vasco16

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?

Share this post


Link to post
Share on other sites
Kryptex

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: 😡 [/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

Share this post


Link to post
Share on other sites
jpaulino

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()

Share this post


Link to post
Share on other sites
Kryptex

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)"

Share this post


Link to post
Share on other sites
jpaulino

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

Share this post


Link to post
Share on other sites
jpaulino

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

Share this post


Link to post
Share on other sites
Kryptex

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

Share this post


Link to post
Share on other sites
jpaulino

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

Share this post


Link to post
Share on other sites
jpaulino

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 ?

Share this post


Link to post
Share on other sites
Kryptex

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

Share this post


Link to post
Share on other sites
jpaulino

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

Share this post


Link to post
Share on other sites
Kryptex

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.

Share this post


Link to post
Share on other sites
vasco16

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.