Imagem - Banco de Dados

Pessoal,

Existe a possibilidade no Elipse E3, da criação de uma tela com imagens a
serem adquirida por uma câmera USB. e posteriormente salvar as informações
contidas nesta tela.

Por exemplo.: Basicamente é desenvolver uma tela de cadastro com os (nomes
das peças e fotos), salvar em um banco de dados e quando necessitar saber qual
item, realizo uma consulta ao banco de dados é o mesmo me retorna o item
equivalente.

@edy_bahia, boa tarde.

Como será feita esta aquisição da imagem? Algum ActiveX?

Uma ideia seria ao invés de armazenar a imagem no BD, guardar o caminho onde está a imagem e também o nome dela (ou um nome para referencia).
Ao consultar, poderia retornar a imagem num objeto Image utilizando-se do caminho+nome.

Tenta explicar com mais detalhes o que será feito para facilitar o entendimento.

Abraços.

@Fernando, Sim será por activex.

Minha ideia será montar um sistema de supervisão para o
operador conseguir identificar a peça correta, ou seja, vou criar uma tela de
cadastro para o operador, nesta tela ele deverá colocar (TAG + Nome da peça +
detalhes técnicos + foto que será adquirida por uma câmera USB).

Em uma outra tela, agora a de consulta, ele poderá consultar
qualquer peça cadastrada através da TAG dela.

Minha ideia e que no futuro está tag´s possam vim de um CLP.

@edy_bahia, parece que não teria problemas.

Só é necessário identificar como este ActiveX funciona. Se nele tiver como saber o caminho onde o arquivo será salvo, basta salvar o caminho no BD e na consulta recuperar com o nome do arquivo junto carregando no IMAGE do MSForms.

Ótimo…
Também posso adotar o método de armazenar a imagem no PC e mandar buscar pelo caminho do arquivo, acredito que assim consiga diminuir o tamanho do banco.

@Fernando, conseguir testar a mudança de imagem pelo “figura”, associando uma tag e nela o endereço da image, ou seja, está mudando a imagem via o endereço.

Porém fiquei com uma dúvida referente ao amazenamento no BD, como não se trata de um alarme, nem de Relatório e sim de tag´s. Como poderei enviar para uma tabela de banco de dados o valor da tag a cada evento do botão ENTER.

@edy_bahia,

Pode criar um evento onde, sempre que clicar no enter, gravar uma linha.

Veja este tópico: Criar histórico baseando numa condição

@Fernando Então, testei a aplicação aqui, porém consigo gravar no banco de dados e ver no histórico (São 2 dados) o que acontece e que em momentos consigo visualizar os 2 dados, depois de algum tempo gravando valores só grava o 1. Dai a tabela fica incompleta.

Ex Tela Cadastro.: São 2 campo 1 campo com a descrição e outro campo com o caminho do arquivo.

Imagino que a solução seria criar um botão que coloque os dados no banco de dados, com uso de script, porém não tenho este código, poderia me dar um auxilio ?.

Na tela 2 pretendo criar a consulta ao banco de dados daí quando digito a TAG visualizo a imagem.

@edy_bahia,

No Hist está associando um campo para o nome com um TagInterno que recebe este valor e outro campo com um TagInterno para receber o nome do caminho? Se sim, não deveria estar com problemas. Caso não esteja funcionando, teria como exibir como está sendo feito ou detalhar?

Para gravar os dados por script, utiliza este KB.

Para consultar um dado específico, cria um filtro no campo que quer visualizar (nome, provavelmente) e realiza a consulta escrevendo o nome em um setpoint ou combobox para retornar a linha. Isto pode ser visto no Tutorial Desenvolvedores do E3.

KB sobre a sintaxe de filtro

Para retornar o valor, utilizar este método.

@Fernando Obrigado pela ajuda, porém a gravação de dados ao que parece está funcionando mais não da maneira que desejo, seria ± assim o usuário vai preencher algumas informações, porém no momento que ele estiver preenchendo estão sendo gravadas. o que necessito é que só seja gravada após pressionar o botão “gravar”. E posteriormente seja exibido em um histórico.

@edy_bahia, por nada.

Tenho quase certeza que está com o Hist gravando de X em X ms.

Não sei exatamente como está fazendo sua aplicação, mas caso esteja utilizando setpoints, pode associar os dados aos tags que serão gravados no Banco;

Colocar no scan do Hist 0 ms; e

No botão, pode criar um script WriteRecord().

Ou seja, os dados serão passados do setpoint para o tag e ficará pronto para ser gravado. Ao clicar no botão, salva.

Abraço.

@Fernando, estou associando as TAG´S… para cada campo coloquei uma TAG, vou checar a questão do HIST, acredito que esteja mesmo, gravando de tempos em tempos rsrsrs…

@edy_bahia

Você está utilizando o ActiveX de qual fabricante?
Uma sugestão seria salvar o nome do foto com o ID do usuário cadastrado.
Com relação ao armazenamento, pode ser um campo string do BD com o caminho completo da foto, incluindo o ID. Tem opção de gravar a imagem diretamente no BD em formato específico, mas aí teria que ser avaliada a performance do BD. A solução mais pratica é gravar o caminho mesmo.
É muito importante que esse caminho seja compartilhado para todos os clientes remotos da aplicação.

Galera, estarei reestruturando a aplicação… Pois estava com problemas no histórico salvo, montarei outro DB, para verificar se esta tudo ok.
Estarei mesmo gravando o caminho pois será mais tranquilo, porém pensei em colocar tipo um botão para buscar a imagem, porém só salve o caminho dela… seria coisa semelhante ao Word quando vamos abrir um arquivo, porém não anexava o arquivo, apenas o caminho dele, seria possível realizar isso no ELIPSE e3… algum norte ?

@edy_bahia, não entendi o que quer fazer…

Poderia dar mais detalhes?

Caro @edy_bahia, não sei se entendi bem a sua necessidade.
Para abrir uma janela de busca de arquivo e guardar o caminho após isto, utilize o exemplo abaixo.

Application.ShowFilePicker True, aplicativo
msgbox aplicativo

Seria isto?

@edy_bahia
Não é interessante deixar o usuário escolher a imagem do cadastro.
Sugiro fazer o seguinte:
1 - Abrir o ActiveX ou aplicativo externo da webcam e salvar a foto em algum diretório com nome padrão (temp.bmp, por exemplo);
2 - Copiar o arquivo salvo e renomeá-lo com a referência do código do usuário (ID100.bmp, por exemplo) utilizando a função CopyFile do objeto FileSystemObject.
3 - Carregar o novo arquivo no campo Image do E3 utilizando a função LoadPicture.
4 - Salvar o caminho completo no banco de dados.
5 - Compartilhar o diretório de fotos com os usuários da aplicação, no caso de viewer remoto.

@dgautomacao , obrigado pelos esclarecimentos, estou voltando a construir a aplicação.

Seguindo a orientação srsrsrsrs, mudei a tela de cadastro para ser feita pelo ADMIN, no caso eu mesmo rsrs. onde irei disponibilizar na aplicação um tela só para isso (cadastro) Porém o que ainda não conseguir resolver satisfatoriamente é pegar o caminho da imagem de forma automática, pois já imagino o trabalhão em copiar e colar o caminho + o nome da imagem.

Exemplo. No LoadPicture, quando coloco o caminho (manualmente) ele carrega a figura, até ai ótimo, porém não estar automático, o que falta é pegar é o nome do arquivo e não o ‘arquivo’ em si.

@edy_bahia, qual ActiveX você está utilizando para captura da câmera?

@dgautomacao, Então companheiro acabei desistindo do activex por enquanto, estou tirando a FT e colocando em uma pasta.