GRAV IMG NO DB SQL SERV COM ADO
Alguem sabe como obigado!!!
NOSSA....
Essa, agora eu já não vou poder te ajudar........ ESSA VC ME PEGOU!!!!
Essa, agora eu já não vou poder te ajudar........ ESSA VC ME PEGOU!!!!
Bom, segundo pesquisas minhas:
- Gravando uma imagem diretamento no BD, ocupará um espaço considerável. Imagine após 1.000 imagens de 1mb???
- A lentidão para carregar as imagens, no caso de usar uma filtragem ou busca por homonimos
.Sugestão, grave a imagem em um diretório e atribua a esta imagem um código que fique armazenado no seu BD, e em seguida faça um LOADPICTURE em um campo IMAGE, para visualizar a imagem. Evitando assim, as considerações iniciais.
- Gravando uma imagem diretamento no BD, ocupará um espaço considerável. Imagine após 1.000 imagens de 1mb???
- A lentidão para carregar as imagens, no caso de usar uma filtragem ou busca por homonimos
.Sugestão, grave a imagem em um diretório e atribua a esta imagem um código que fique armazenado no seu BD, e em seguida faça um LOADPICTURE em um campo IMAGE, para visualizar a imagem. Evitando assim, as considerações iniciais.
O que VC pode fazer é fazer uma função para verificar se o caminho existe, se não existir, VC tira as \\ do começo da expressão e verifica novamente se o caminho existe.
Ou, uma outra solução mais "besta", seria criar 2 campos de "caminho", um VC grava o local com as \\ e o outro sem as \\. E na hora de abrir a imagem, VC verifica se o caminho do campo1 existe, se não existir, verifica o campo2.
é uma saÃda!!!
Ou, uma outra solução mais "besta", seria criar 2 campos de "caminho", um VC grava o local com as \\ e o outro sem as \\. E na hora de abrir a imagem, VC verifica se o caminho do campo1 existe, se não existir, verifica o campo2.
é uma saÃda!!!
Mas, continuando com as minhas pesquias por aÃ, peguei este código com um amigo meu, não sei se funciona e NEM como funciona, mas como eu sei que VC manja bastante de VB e de SQLSERVER, VC pode muito mais do que eu, testar e tirar possÃveis erros:
O campo tem que ser to tipo "image"
Utilize esta função abaixo.
Public Sub GravarImagemBanco(ByVal strCaminhoImagemGravar As String)
Dim i As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer
Dim ADORecImagem As ADODB.Recordset
On Error GoTo ErroGravarImagem
Screen.MousePointer = 11
Set ADORecImagem = New ADODB.Recordset
ADORecImagem.ActiveConnection = G_ADOConexao
ADORecImagem.CursorLocation = adUseClient
ADORecImagem.CursorType = adOpenStatic
ADORecImagem.LockType = adLockOptimistic
ADORecImagem.Open "SELECT * FROM TABELADAIMAGEM WHERE ...."
If ADORecImagem.EOF = True Then 'Não tem firma nesta data
G_ADOConexao.Execute "INSERT INTO TABELADAIMAGEM ..."
Set ADORecImagem = New ADODB.Recordset
ADORecImagem.ActiveConnection = G_ADOConexao
ADORecImagem.CursorLocation = adUseClient
ADORecImagem.CursorType = adOpenStatic
ADORecImagem.LockType = adLockOptimistic
ADORecImagem.Open "SELECT * FROM TABELADAIMAGEM WHERE ...."
End If
Screen.MousePointer = 11
F_intDataFile = FreeFile
Open strCaminhoImagemGravar For Binary Access Read As F_intDataFile
Fl = LOF(F_intDataFile)
If Fl = 0 Then Close F_intDataFile: Exit Sub
Chunks = Fl \ FC_conChunkSize
Fragment = Fl Mod FC_conChunkSize
ReDim F_bytChunk(Fragment)
Screen.MousePointer = 11
Get F_intDataFile, , F_bytChunk()
ADORecImagem.Fields("IMF_IMAGEM").AppendChunk F_bytChunk()
ReDim F_bytChunk(FC_conChunkSize)
For i = 1 To Chunks
Screen.MousePointer = 11
Get F_intDataFile, , F_bytChunk()
ADORecImagem.Fields("IMF_IMAGEM").AppendChunk (F_bytChunk())
Next i
Close F_intDataFile
Screen.MousePointer = 11
ADORecImagem.Update
ADORecImagem.Close
Set ADORecImagem = Nothing
Screen.MousePointer = 0
Exit Sub
ErroGravarImagem:
MsgBox "Ocorreu um erro: " & Err.Number & " - " & Err.Description
On Local Error Resume Next
Close F_intDataFile
If Len(Dir$(strCaminhoImagemGravar)) Then
Kill strCaminhoImagemGravar
End If
Err.Clear
Screen.MousePointer = 0
End Sub
O campo tem que ser to tipo "image"
Utilize esta função abaixo.
Public Sub GravarImagemBanco(ByVal strCaminhoImagemGravar As String)
Dim i As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer
Dim ADORecImagem As ADODB.Recordset
On Error GoTo ErroGravarImagem
Screen.MousePointer = 11
Set ADORecImagem = New ADODB.Recordset
ADORecImagem.ActiveConnection = G_ADOConexao
ADORecImagem.CursorLocation = adUseClient
ADORecImagem.CursorType = adOpenStatic
ADORecImagem.LockType = adLockOptimistic
ADORecImagem.Open "SELECT * FROM TABELADAIMAGEM WHERE ...."
If ADORecImagem.EOF = True Then 'Não tem firma nesta data
G_ADOConexao.Execute "INSERT INTO TABELADAIMAGEM ..."
Set ADORecImagem = New ADODB.Recordset
ADORecImagem.ActiveConnection = G_ADOConexao
ADORecImagem.CursorLocation = adUseClient
ADORecImagem.CursorType = adOpenStatic
ADORecImagem.LockType = adLockOptimistic
ADORecImagem.Open "SELECT * FROM TABELADAIMAGEM WHERE ...."
End If
Screen.MousePointer = 11
F_intDataFile = FreeFile
Open strCaminhoImagemGravar For Binary Access Read As F_intDataFile
Fl = LOF(F_intDataFile)
If Fl = 0 Then Close F_intDataFile: Exit Sub
Chunks = Fl \ FC_conChunkSize
Fragment = Fl Mod FC_conChunkSize
ReDim F_bytChunk(Fragment)
Screen.MousePointer = 11
Get F_intDataFile, , F_bytChunk()
ADORecImagem.Fields("IMF_IMAGEM").AppendChunk F_bytChunk()
ReDim F_bytChunk(FC_conChunkSize)
For i = 1 To Chunks
Screen.MousePointer = 11
Get F_intDataFile, , F_bytChunk()
ADORecImagem.Fields("IMF_IMAGEM").AppendChunk (F_bytChunk())
Next i
Close F_intDataFile
Screen.MousePointer = 11
ADORecImagem.Update
ADORecImagem.Close
Set ADORecImagem = Nothing
Screen.MousePointer = 0
Exit Sub
ErroGravarImagem:
MsgBox "Ocorreu um erro: " & Err.Number & " - " & Err.Description
On Local Error Resume Next
Close F_intDataFile
If Len(Dir$(strCaminhoImagemGravar)) Then
Kill strCaminhoImagemGravar
End If
Err.Clear
Screen.MousePointer = 0
End Sub
Tópico encerrado , respostas não são mais permitidas