INSERT FOTO
como ficaria a sintaxe para salvar o caminho de uma imagem no banco de dados usando:
dim cod as long
dim foto as ???
insert into tb(cod,foto)values(" & cod & "," bom e a foto??")
Se levarmos em conta que o caminho nada mais é que uma String é só definir String mesmo.
Pode-se utilizar o "s" como prefixo indicando que é String:
Dim lCod as Long, sFoto as StringAssim, você saberá que lCod é Long, pelo "l" e que sFoto é String, pelo "s".
[s92]
dim sfoto as string
[txt-color=#ff0000]sfoto = será?(app.path & "/img/ ...) ? ?? assim naum esta funcionando[/txt-color]
insert into tb(foto)values(' "& sfoto & " ')
obs estou usando o picture
então;
Dim Cod as Long
Dim foto as string
CommonDialog1.filter = "Foto| *.bmp"
CommonDialog1.Showopen
if CommonDialog1.filename <> "" then
foto = CommonDialog1.filename
insert into tb(cod,foto)values(" & cod & "," foto")
end if

...
foto1 = cd.filename
...
bd.Execute ("insert into membro(cod,nome,end,tel,cel,cidade,foto) values (" & cod1 & ",'" & nome1 & "','" & ende1 & "'," & tel11 & "," & cel1 & ",'" & city1 & "','" & foto1 & "')")
Citação:
SavePicture TxCliFoto,"c:\Arquivos de programas\sistema\fotos\" + CliCod + ".jpg"
onde txclifoto é uma image box e clicod é o codigo do cliente (por exemplo)
para ler do disco
Citação:
afff = ContarArquivos(c:\Arquivos de programas\sistema\fotos\" + CliCod + ".jpg")
If afff = 1 Then
TxCliFoto.Picture = LoadPicture(c:\Arquivos de programas\sistema\fotos\" + CliCod + ".jpg")
Else
TxCliFoto.Picture = LoadPicture(c:\Arquivos de programas\sistema\fotos\sem_foto.jpg)
End If
espero ter ajudado...
onde
sem_foto.jpg é um arquivo jpg pequeno de uma frase tipo(SEM FOTO"
afff -e uma função para checar se o arquivo existe
esta é a função:
Citação:
Private Const INVALID_HANDLE_VALUE = -1
Private Const MAX_PATH = 260
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
'Para usar a API acima use a seguinte função
Public Function ContarArquivos(Caminho As String, Tipo As String) As Long
10 On Error GoTo ContarArquivos_Error
20 Dim WFD As WIN32_FIND_DATA
30 Dim SA As SECURITY_ATTRIBUTES
40 Dim r As Long
50 Dim hFile As Long
60 Dim bNext As Long
70 Dim fCount As Long
80 Dim currFile As String
90 hFile = FindFirstFile(Caminho & Tipo, WFD)
100 If (hFile = INVALID_HANDLE_VALUE) Then
110 ContarArquivos = 0
120 Exit Function
130 End If
140 If hFile Then
150 Do
160 fCount = fCount + 1
170 bNext = FindNextFile(hFile, WFD)
180 Loop Until bNext = 0
190 End If
200 r = FindClose(hFile)
210 ContarArquivos = fCount
220 On Error GoTo 0
230 Exit Function
ContarArquivos_Error:
240 MsgBox "Ocorreu um Erro de número " & Err.Number & " (" & Err.Description & ") na linha " & Erl & " do(a) Function ContarArquivos inserido no(a) Módulo ContarArquivos_ em Controle_Comercial," & Time & "," & Date & "," & NomeUsuario & ",Máquina " & MaquinaEstacao & ",Empresa " & Vnomefantasia & ",Drive " & DriveTrabalho
End Function
uma dica, ao abrir o form para inserir o registro, já iguale o conteudo da image box com o arquivo jpg SEM_FOTO...
outra dica: coloque um controle (command) abaixo da image box, para que ao clicar nele, a image box pegue o conteudo da area de tranferencia, assim facilita a carga da imagem... pq vc pode pegar de dentro da camera, do scaner, do hd, do eter, de onde quiser!!! dá um control-C e depois vai para sua aplicação, clica no botão e a image box captura o conteudo da area de trannferencia...
os comandos para o botão de inserir imagem é:
Citação:
TxCliFoto.Picture = Clipboard.GetData()
para apagar o image box
Citação:
TxCliFoto.Picture = LoadPicture(c:\Arquivos de programas\sistema\fotos\sem_foto.jpg)
afff = ContarArquivos(c:\Arquivos de programas\sistema\fotos\"+ txclicod + ".jpg")
If afff = 1 Then Kill (c:\Arquivos de programas\sistema\fotos\"+ txclicod + ".jpg")
bd.Execute "insert into membro values ('" & cod1 & "','" & nome1 & "','" & ende1 & "','" & tel11 & "','" & cel1 & "','" & city1 & "','" & foto1 & "')
OBS.
totos os campos da tabela tem que ser preenchido ou informado "NULL" no campo que vai ficar em branco.
E que voce deve colocar uma aspas semples e uma dupla em cada vaiavel.
[S25]
bd.Execute "insert into membro values ('" & cod1 & "','" & nome1 & "','" & ende1 & "','" & tel11 & "','" & cel1 & "','" & city1 & "','" & foto1 & "')
OBS.
totos os campos da tabela tem que ser preenchido ou informado "NULL" no campo que vai ficar em branco.
E que voce deve colocar uma aspas semples e uma dupla em cada vaiavel.
[S25]