DECLARAR ROTINA COMO PUBLICA

 Tópico anterior Próximo tópico Novo tópico

DECLARAR ROTINA COMO PUBLICA

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#324977 - 10/10/2009 11:24:40

XXXANGELSXXX
BELO HORIZONTE
Cadast. em:Setembro/2008


Última edição em Editado em 10/10/2009 15:30:20 por TECLA por

Amigos, eu aqui de novo , rs.. aqui, seguinte, tenho alguns componentes data aqui no meu sistema, e preciso colocar eles como publico para que todo meu codigo veja, exemplo, declarar num modulo, como publico e depois so buscar a funçao no form que quero, atualmente to fazendo isso form por form, entao meu fonte ta ficando muito poluido, muito extenso, se tiver como minimizar esse sofrimento.. rs .. vejam o codigo

Private Sub data1_Reposition()

  If IsEmpty(numero_registros) Then
    numero_registros = Conta_Registros(Data1)
  End If
  With Data1
    If .Recordset.RecordCount Then
        Tool1.ButtonCaption(3) = " Registro : " & (.Recordset.AbsolutePosition + 1) & " de " & numero_registros
    Else
        Tool1.ButtonCaption(3) = " O Arquivo Está Vazio "
    End If
  End With
End Sub
Private Sub data1_Validate(Action As Integer, Save As Integer)
Select Case Action
       Case vbDataActionUpdate
          numero_registros = numero_registros + 1
       Case vbDataActionDelete
          numero_registros = numero_registros - 1
   End Select

End Sub

e como faço para chamar ele no form?? desde ja agradeço.

Não importa o que é o mundo...O importante são seus sonhos!Não importa o que você é...O importante é o que você quer ser.
Dúvida Sanada, encerre o tópico e pontue quem ajudou!!!


#324992 - 10/10/2009 15:35:18

TECLA
SAO PAULO
Cadast. em:Janeiro/2001


Membro da equipe
Todos os FORMS tem um controle DATA?
Se sim, cada controle DATA acessa uma TABELA DIFERENTE?
Porque não aproveita o ensejo, e aprende a trabalhar sem o CONTROLE VINCULADO?




#324994 - 10/10/2009 18:27:22

DANIKULL
PIRASSUNUNGA
Cadast. em:Julho/2004


XXXANGELSXXX, boa tarde.

O que você está querendo fazer é justamente o que nosso amigo tecla disse para você aprender. Quando você utliza uma forma de acesso ao Dados que é diferente do uso do objeto Data você passa a trabalhar em modo desvinculado, ou seja, só conecta ao Banco quando precisa executar uma instrução.
Não sei se você está utilzando ADO para acessar o Banco de Dados mais vai aí meu exemplo de acesso a dodos.

Eu organizei meu código fonte em módulos, ou seja, tenho vários módulos para executar algumas coisas, como por exemplo, um só para as variáveis do sistema, outro só para as conexões com o Banco de Dados, outro só para as funções, etc...

Para abrir o Banco de Dados faço da seguinte forma:


Public Sub DataBaseConnection()
Dim Msg As String
On Error GoTo Abrir
Set ERPConn = New ADODB.Connection
    With ERPConn
        .Provider = "Microsoft.JET.OLEDB.4.0"
        .ConnectionString = (ERPDataBaseDir + "\" + ERPDataBaseName)
        '.Mode = adModeShareExclusive
        .Open
    End With

Exit Sub
Abrir:
    Msg = ""
    Msg = vbTab & "***|| ERRO AO ABRIR A BASE DE DADOS ||***                                 " & vbNewLine & vbNewLine
    Msg = Msg & "ERRO:" & vbTab & vbTab & "Não foi possível abrir a Base de Dados" & vbNewLine & vbNewLine
    Msg = Msg & "Descrição:" & vbTab & Err.Description & vbNewLine & vbNewLine
    Msg = Msg & "Data:" & vbTab & vbTab & Format(Date, "DD/MM/YYYY") & vbNewLine
    Msg = Msg & "Hora:" & vbTab & vbTab & Format(Time, "HH:MM:SS") & vbNewLine & vbNewLine & vbNewLine

    MsgBox Msg, vbCritical, "***| Base de Dados Inválida |***"
       End
End Sub

Obs.: Eu só abro o banco quando inicializo o sistema para não haver problemas de perda de dados.

Para abrir uma tabela, como exemplo a tabela produtos faço assim:


Public Sub ConectaProduto()
Set ERPProdutos = New ADODB.Recordset
    With ERPProdutos
        .CursorType = adOpenStatic
        .CursorLocation = adUseClient
        .LockType = adLockPessimistic
        .Source = "Select * From PRODUTOS"
        .ActiveConnection = ERPConn
        .Open
    End With
End Sub

Obs.: Eu só abro a tabela Produtos quando vou realizar alguma operação nesta tabela na tela de atualizações de produtos, assim evito problemas de corrupção, e outros.....
Para executar alguma instrução, tipo INSERT, UPDATE, DELET e SELECT faço dentro do botão atualziar conforme a forma aberta e fecho a tabela.

Ok???

E seguindo a instrução do nosso amigo TECLA, acho melhor você migrar seu sistema para modo desvinculado.

...................
[signx]"quando você se deparar com um problema, não diga para Deus o quão grande ele é, mas diga para o seu problema o quão grande seu Deus é..."
[txt-size=5]autor desconhecido[

Resposta escolhida #325005 - 10/10/2009 22:06:03

ROBIU
CANDEIAS
Cadast. em:Julho/2004


No módulo coloque isso:

Public Function Reposition(DataControl As Data)
    Dim Registros As Long, Posicao As String
    With DataControl
        Registros = .Recordset.RecordCount
        Posicao = " Registro : " & (.Recordset.AbsolutePosition + 1) & " de " & Registros
    End With
    DataControl.Caption = Posicao
End Function


essa rotina vai atualizar a quantidade de registro de qualquer Datacontrol, em qualquer Form
Para chamar, no evento reposition do DataControl:
Private Sub Data1_Reposition()
     Reposition Data1, Data1.Caption
End Sub


Note que o valor vai aparecer no Caption (entre as setas) do Datacontrol. Então é necessário anpliar o comprimento do Datacontrol para vê-lo. Caso queira colocar esse valor em outro lugar, é só fazer:

Tool1.ButtonCaption(3) =Data1.Caption




Roberto Martins

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por XXXANGELSXXX em 17/05/2010 10:08:53