Bem, uma coisa é certa, vou guardar isto para me servir de guia em situações futuras, mas no caso concreto não é bem o que preciso.
Passo a explicar. As fotografias em questão estão guardadas num servidor e o nome delas normalmente é o número do empregado e estão guardadas por pastas MÊS e pastas ANO. Ou seja, neste momento as fotografias estão a ser armazenadas na pasta 2015, sub pasta Agosto. Nessa organização não vou poder mexer.
Como é que estou a fazer neste momento? Como se faz pelo menos desde os anos 60. Imprimimos 3 fotografias, uma para o documento de identificação, outra para uma ficha individual que está no meu serviço e outra para os registos centrais.
O que eu queria era deixar de ter de imprimir uma foto para colar na ficha. Essa foto passaria a ser aproveitada do servidor (mas não será seguro fazer ligação ao ficheiro) e a ficha seria digital.
Para isso converto as fotos tiradas no mês de Agosto em BMP. São cerca de 100 novas fotos todos os meses (não arquivamos fotos repetidas), essa operação demora apenas uns segundos com o Format Factory e depois tenho de ir registo a registo adicionar o ficheiro BMP a um empregado.
Sei que parece um trabalho infindável, mas neste momento tenho de colar as fotografias em fichas em papel. Que é bem mais chato e demora mais. Assim, uma vez por mês perco 10 a 20 minutos e tenho tudo feito.
Em relação aos subformulários, tenho um FormFotografias que contém (neste momento) 12 subformulários, todos eles estão ligados ao formulário principal pelo IdPessoal e o sFormFoto1 contém um filtro ao carregar [numerofoto]="01", o sFormFoto2 contém um filtro ao carregar [numerofoto]="02" e por aí em diante.
a numeração 01, 02, 03... é obtida no momento em que insiro a fotografia e cria esse registo para cada empregado, ou seja a numeração 01 aparecerá na TabFoto 100 vezes, caso eu tenha 100 registos, mas cada uma associada a uma só pessoa, visto que faz o recordcount do formula´rio e não da tabela.
O código que uso neste momento para obter essa numeração é este:
Private Sub ObjFoto_BeforeUpdate(Cancel As Integer)
If Not IsNull([TxtNumeroFotoPessoal]) Then
Exit Sub
ElseIf Me.Recordset.RecordCount = 0 Then
Me.TxtNumeroFotoPessoal = Format("1", "00")
Else
Me.TxtNumeroFotoPessoal = Format(Me.Recordset.RecordCount + 1, "00")
End If
End Sub
Foi adaptado a partir do código postado
aqui no fórum
Vou ver se consigo pôr aqui um exemplo amanhã. Pode ser que melhore depois de ser visto por olhos mais experientes. O meu nível deve roçar o 0.2
(de 0 a 100)
Ainda vou por um On Error... só para salvaguardar