AGENDAMENTO COM VB6

ANAMOREIRA 07/07/2011 12:30:45
#378649
Boas Malta, neste momento encontro-me em estágio profissional e faltam apenas alguns dias para o terminar,

Preciso mesmo da vossa ajuda.

Neste momento estou a fazer a fase de agendamento dos backups automáticos,
só que não sei fazer isto por vectores, tipo tenho um timer com um código que faz o seguinte:
lê o dia actual e procura na base de dados se existe algum agendamento para esse dia.
Se existir, arranca um outro timer que o que faz e verificar a hora desse agendamento, só que não estou a conseguir fazê-lo, sem que tenho que fazer isto por vectores, mas não estou mesmo a conseguir.

Pf ajudem-me, para eu não acabar os estágio com isto por terminar.

Ficar aqui o meu email: anamoreira08@gmail.com

Muito obrigado, bjinhos ;)


MARCELO.TREZE 07/07/2011 14:06:03
#378665
colega posta o código do seu timer, acredito que dois timers não serão necessários

ANAMOREIRA 07/07/2011 14:29:44
#378673
Private Sub Timer1_Timer()

If Form1.Calendar1.Value = label1.Caption Then
Timer2.Interval = 1
Else
End If

End Sub


-------------------------------------------------//-------------------------------------------

Private Sub Timer2_Timer()

Data1.Refresh
Data1.Recordset.MoveFirst
[ô]ciclo while para verificar as horas, para efetuar o backup
Do While Data1.Recordset.EOF = False
Data1.Recordset.MoveNext


If Label4.Caption = Form1.Label9 Then
[ô]aqui falta a linha de ler o ID do agendamento
Shell ([Ô]C:\Backup\ps.cmd[Ô]) [ô]isto é para parar os serviços de SQL
[ô]aqui o cod de copiar
lblestado.Caption = [Ô]Vamos executar o Backup agendado.....[Ô]
[ô]FileCopy origem, Destino
Origem = Form1.txtFields(3).Text
Destino = Form1.txtFields(4).Text
FileCopy Origem, Destino
lblestado.Caption = [Ô]Fim de Backup.....[Ô]
End If
Shell ([Ô]C:\Backup\as.cmd[Ô]) [ô]isto é para arrancar os serviços de SQL
Else
End If
Timer2.Interval = 0
End Sub
FERRAZ 07/07/2011 16:08:20
#378689
Anamoreira, acho que so basta vc por um select que resolve seu problema:

If Label4.Caption = Form1.Label9 Then
[ô]aqui falta a linha de ler o ID do agendamento
[Ô]SELECT * FROM sua tabela WHERE seu campo id = [Ô] & campo texto do form = resolveria seu problema acredito nao testei.
Shell ([Ô]C:\Backup\ps.cmd[Ô]) [ô]isto é para parar os serviços de SQL
[ô]aqui o cod de copiar
lblestado.Caption = [Ô]Vamos executar o Backup agendado.....[Ô]
[ô]FileCopy origem, Destino
Origem = Form1.txtFields(3).Text
Destino = Form1.txtFields(4).Text
FileCopy Origem, Destino
lblestado.Caption = [Ô]Fim de Backup.....[Ô]
End If Shell ([Ô]C:\Backup\as.cmd[Ô]) [ô]isto é para arrancar os serviços de SQL
Else
End If
Timer2.Interval = 0
End Sub



Bom trabalho.
ANAMOREIRA 08/07/2011 10:04:55
#378751
com esse codigo só vai funcionar se for base de dados SQL, certo?
MARCELO.TREZE 08/07/2011 12:05:51
#378765
Bom vejo uma certa dificuldade de entendimento do que deseja fazer.

primeiro, você usa o componente datacontrol, que a maioria ja descartou, porém isto não é um impedimento para executar o que deseja.

Também não há a necessidade de se usar dois timers um será o suficiente.

ao iniciar o sistema faça um loop na tabela e preencha um array dinamico com as horas de backup.

veja como ficaria

primeiro declare no general do form

Dim HoraDeBackUp() As Date


no load coloque o código para preencher a array dinamica (horadebackup)

Dim C As Integer
Data1.Refresh
Data1.RecordSource = [Ô]select * from [txt-color=#e80000]suatabela [/txt-color]where [txt-color=#e80000]campodata [/txt-color]= #[Ô] & Format(Date,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
[ô] acima faço um select para verificar quais registros com a data de hoje
[ô] para depois (abaixo) preencher um array coma as horas do backup
Do While Not Data1.Recordset.EOF
Redim Preserve HoraDeBackUp(C) As Date
HoraDeBackUp(C) = Data1.Recordset.Fields([Ô][txt-color=#e80000]horadobackup[/txt-color][Ô])
C = C + 1
Data1.Recordset.MoveNext
Loop


agora coloque um timer com interval = 1

[ô]no timer coloque o seguinte código

For F = 0 To UBound(HoraDeBackUp)
If HoraDeBackUp(F) = Time Then
[ô] ...aqui vc executa o que for preciso
End If
Next F



repare que o que destaqueoi em vermelho são os campos e nome da tabela que só vc sabe, altere conforme sua tabela

e veja se funciona
ANAMOREIRA 08/07/2011 12:53:30
#378770
se a minha bd estiver em access, vai funcionar?
MARCELO.TREZE 08/07/2011 12:57:09
#378771
o código acima é para access mesmo
ANAMOREIRA 08/07/2011 13:00:40
#378773
ok

coloquei o codigo como indicado acima... mas esta dando um erro nesta linha


HoraDeBackUp(C) = Data1.Recordset.Fields & (label4.caption)

o erro diz: [Ô]item not found in this collection[Ô]
MARCELO.TREZE 08/07/2011 13:19:58
#378778
sabe ana acho que seus captions estão associados ao data1, e acredito que isto estegerando o erro


aqui deveria ser como postei acima

Data1.Recordset.Fields([Ô]nome_do_campo_hora[Ô])

poste a estrutura de sua tabela
ANAMOREIRA 08/07/2011 13:24:10
#378779
a minha tabela tem 5 campos..

ID
Data
Hora
Caminho
Destino

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas