DECLARAR ROTINA COMO PUBLICA
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.
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.
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?
Se sim, cada controle DATA acessa uma TABELA DIFERENTE?
Porque não aproveita o ensejo, e aprende a trabalhar sem o CONTROLE VINCULADO?
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:
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:
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.
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.
No módulo coloque isso:
essa rotina vai atualizar a quantidade de registro de qualquer Datacontrol, em qualquer Form
Para chamar, no evento reposition do DataControl:
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:
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
Tópico encerrado , respostas não são mais permitidas