Jump to content
Fivewin Brasil

PROBLEMAS COM CAMPO FOTO


marcioe

Recommended Posts

Pessoal,

Criei um campo GET com BITMAP e ACTION mas o botão da imagem esconde os centavos do campo.

Assim: ( 0,[]), onde [] é o lugar em que fica o botão do BITMAP.

Qual é a configuração para isso não acontecer?

Obrigado,

Oscar Ribeiroid=size4>

OASyS Informáticaid=blue>id=size4>

Fwh+xHb1.0.0+BCC55+WorkShopid=size1>

Link to comment
Share on other sites

Pessoal,

Criei um campo GET com BITMAP e ACTION mas o botão da imagem esconde os centavos do campo.

Assim: ( 0,[]), onde [] é o lugar em que fica o botão do BITMAP.

Qual é a configuração para isso não acontecer?

Obrigado,

Oscar Ribeiroid=size4>

OASyS Informáticaid=blue>id=size4>

Fwh+xHb1.0.0+BCC55+WorkShopid=size1>

Link to comment
Share on other sites

  • 5 months later...

AMIGOS NO MEU SISTEMA TEM UMA OPÇAO DE GRAVAR FOTO DO CLIENTE. FUNCIONAVA BLZ

porem o cliente comprou uma WEB CAM melhor. dai funciona

porem algumas fotos ele não aceita grava. da erro

como a tabela de fotos foi dedinida

mysqlb.jpg

erro ao tentar gravar

errofoto.jpg

informaisvrb@gmail.com

MSN mastermarvrb@msn.com

SKYPE informaisvrb

.: 32-9104-0562 :.

Link to comment
Share on other sites

AMIGOS NO MEU SISTEMA TEM UMA OPÇAO DE GRAVAR FOTO DO CLIENTE. FUNCIONAVA BLZ

porem o cliente comprou uma WEB CAM melhor. dai funciona

porem algumas fotos ele não aceita grava. da erro

como a tabela de fotos foi dedinida

mysqlb.jpg

erro ao tentar gravar

errofoto.jpg

informaisvrb@gmail.com

MSN mastermarvrb@msn.com

SKYPE informaisvrb

.: 32-9104-0562 :.

Link to comment
Share on other sites

O campo foto tá como blob ?

Voce ta convertendo a imagem usando o memowrit ?

note que a conversão é de max 64K

Mas o que dá pra ver como erro é perda de conexão,

aumente o timeout do mysql.

AtnSoft(Antenor Rabello) - xHarbour 0.99.71 / FwH 7.05 / Verce

C. Procópio - PR

Link to comment
Share on other sites

citação:

O campo foto tá como blob ?

R-> LONGBLOB

Voce ta convertendo a imagem usando o memowrit ?

R-> SIM

note que a conversão é de max 64K

Mas o que dá pra ver como erro é perda de conexão,

aumente o timeout do mysql.

OBS: ALGUMAS FOTOS GRAVA, OUTRAS ELE NÃO GRAVA.

AtnSoft(Antenor Rabello) - xHarbour 0.99.71 / FwH 7.05 / Verce

C. Procópio - PR


id=quote>id=quote>

informaisvrb@gmail.com

MSN mastermarvrb@msn.com

SKYPE informaisvrb

.: 32-9104-0562 :.

Link to comment
Share on other sites

Será que dava para mostrar a parte do código-fonte onde você lê e grava a foto? Talvez alguém possa achar o caminho do erro por aí.

marciano.jpg

Marciano Queiroz

Teixeira de Freitas-Ba

FW 10.12 + xHb 1.2.1 | BCC 5.82 | SQLLIB | PAF-ECF | TEF | NF-e | SPED Fiscal | PBM´s | Biometria | Ret.XML NF-e

Link to comment
Share on other sites

Marcio,

Está parecendo erro ocasionado por limitação do próprio MySQL. Que tipo de tabela é: MYISAM ou INNODB? Veja os limites no MY.INI, dependendo do tipo de tabela, que resolve o problema

Foto.jpg

Kleyber Derick

xHarbour 1.1.0 + FWH 8.02 + xDevStudio + SQLLIB

(98) 8162-1301

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites


*-------------------------------------------------------------------------------

* carregar a foto do cliente

*-------------------------------------------------------------------------------

FUNCTION CARREGA_FOTO_CLIENTE_SQL()

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

cQuery:='select * from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ' ORDER BY ID_FOTO DESC'

use sql cQuery alias "foto_cliente" new via 'MYSQL'

foto_cliente->( DbGoTop())

IF LEN(ALLTRIM(foto_cliente->FOTO)) != 0

cFile := foto_cliente->FOTO

nH := fCreate("TMP_IMG.JPG")

fWrite(nH,cFile)

fClose(nH)

cFile := DRIVE_TR+"\"+CURDIR() + "\TMP_IMG.JPG"

T_FOTOGRAFIA := cFile

oT_FOTOGRAFIA :LoadBmp(cFile)

ELSE

T_FOTOGRAFIA := SPACE(200)

cFile := SPACE(200)

PalBmpFree( oT_FOTOGRAFIA:hBitmap, oT_FOTOGRAFIA:hPalette )

oT_FOTOGRAFIA :LoadBmp(cFile)

ENDIF

oT_FOTOGRAFIA :refresh()

RETURN .T.

*-------------------------------------------------------------------------------

* Gravar a foto do cliente

*-------------------------------------------------------------------------------

FUNCTION INSERE_APAGA_FOTO_CLIENTE(T_OPERACAO_CLIENTES)

T_ID_FOTO := 0

Cursor("SQL")

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

cQuery:='select * from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ' ORDER BY ID_FOTO DESC'

use sql cQuery alias "foto_cliente" new via 'MYSQL'

foto_cliente->( DbGoTop())

T_ID_FOTO := foto_cliente->ID_FOTO

IF LEN( T_FOTOGRAFIA) != 0

IF T_ID_FOTO == 0

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

BEGIN TRANSACTION

cQuery_Mtabela := "INSERT INTO foto_cliente ( "

cQuery_Mtabela := cQuery_Mtabela + " CODIGO_CLIENTE "

cQuery_Mtabela := cQuery_Mtabela + ",DATA_FOTO "

cQuery_Mtabela := cQuery_Mtabela + ",FOTO "

cQuery_Mtabela := cQuery_Mtabela + " ) VALUES ( "

cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ","

cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(DATE(),"D",08,0) + ","

cQuery_Mtabela := cQuery_Mtabela + ANY2SQL( MemoRead( ALLTRIM(T_FOTOGRAFIA) ) )

cQuery_Mtabela := cQuery_Mtabela + " )"

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

ELSE

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

BEGIN TRANSACTION

cQuery_Mtabela := "UPDATE foto_cliente SET "

cQuery_Mtabela := cQuery_Mtabela + "CODIGO_CLIENTE = " + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ","

cQuery_Mtabela := cQuery_Mtabela + "DATA_FOTO = " + TRANSFORMA_SQL(DATE(),"D",08,0) + ","

cQuery_Mtabela := cQuery_Mtabela + "FOTO = " + ANY2SQL( MemoRead( ALLTRIM(T_FOTOGRAFIA) ) )

cQuery_Mtabela := cQuery_Mtabela + " WHERE ID_FOTO = " + TRANSFORMA_SQL(T_ID_FOTO,"N",06,0)

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

ENDIF

ELSE

BEGIN TRANSACTION

cQuery_Mtabela := 'DELETE from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0)

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

ENDIF

RETURN .T.

id=code>id=code>

informaisvrb@gmail.com

MSN mastermarvrb@msn.com

SKYPE informaisvrb

.: 32-9104-0562 :.

Link to comment
Share on other sites

Marcio, eu não sei se vai resolver, mas você pode tentar gravar o arquivo de imagem, convertendo para hexadecimal, antes de colocar na query, ao invés de colocá-lo da forma que você está fazendo.

É só você utilizar a função Str2Hex() e Hex2Str().

Eu faço assim, e nunca tive problemas.

Crie o campo da imagem como LONGBLOB, e coloque como valor DEFAULT, um espaço em branco, porém, já em hexadecimal. Str2Hex(' ').

Dessa forma, toda vez que você ler esse campo, use Hex2Str(). Quando for gravar, use Str2Hex().

Isso evita que sejam gravados no banco de dados, caracteres especiais, pois o campo blob é gravado como texto, e não como imagem.

marciano.jpg

Marciano Queiroz

Teixeira de Freitas-Ba

FW 10.12 + xHb 1.2.1 | BCC 5.82 | SQLLIB | PAF-ECF | TEF | NF-e | SPED Fiscal | PBM´s | Biometria | Ret.XML NF-e

Link to comment
Share on other sites

SERIA ASIM AMIGO


*-------------------------------------------------------------------------------

* carregar a foto do cliente

*-------------------------------------------------------------------------------

FUNCTION CARREGA_FOTO_CLIENTE_SQL()

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

cQuery:='select * from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ' ORDER BY ID_FOTO DESC'

use sql cQuery alias "foto_cliente" new via 'MYSQL'

foto_cliente->( DbGoTop())

IF LEN(ALLTRIM(foto_cliente->FOTO)) != 0

cFile := Hex2Str(foto_cliente->FOTO)id=red>

nH := fCreate("TMP_IMG.JPG")

fWrite(nH,cFile)

fClose(nH)

cFile := DRIVE_TR+"\"+CURDIR() + "\TMP_IMG.JPG"

T_FOTOGRAFIA := cFile

oT_FOTOGRAFIA :LoadBmp(cFile)

ELSE

T_FOTOGRAFIA := SPACE(200)

cFile := SPACE(200)

PalBmpFree( oT_FOTOGRAFIA:hBitmap, oT_FOTOGRAFIA:hPalette )

oT_FOTOGRAFIA :LoadBmp(cFile)

ENDIF

oT_FOTOGRAFIA :refresh()

RETURN .T.

*-------------------------------------------------------------------------------

* Gravar a foto do cliente

*

*-------------------------------------------------------------------------------

FUNCTION INSERE_APAGA_FOTO_CLIENTE(T_OPERACAO_CLIENTES)

T_ID_FOTO := 0

Cursor("SQL")

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

cQuery:='select * from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ' ORDER BY ID_FOTO DESC'

use sql cQuery alias "foto_cliente" new via 'MYSQL'

foto_cliente->( DbGoTop())

T_ID_FOTO := foto_cliente->ID_FOTO

IF LEN( T_FOTOGRAFIA) != 0

IF T_ID_FOTO == 0

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

BEGIN TRANSACTION

cQuery_Mtabela := "INSERT INTO foto_cliente ( "

cQuery_Mtabela := cQuery_Mtabela + " CODIGO_CLIENTE "

cQuery_Mtabela := cQuery_Mtabela + ",DATA_FOTO "

cQuery_Mtabela := cQuery_Mtabela + ",FOTO "

cQuery_Mtabela := cQuery_Mtabela + " ) VALUES ( "

cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ","

cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(DATE(),"D",08,0) + ","

cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(Str2Hex(T_FOTOGRAFIA),'T',500,0) id=red>

cQuery_Mtabela := cQuery_Mtabela + " )"

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

ELSE

IF SELECT("foto_cliente") != 0

foto_cliente->(DbCloseArea())

ENDIF

BEGIN TRANSACTION

cQuery_Mtabela := "UPDATE foto_cliente SET "

cQuery_Mtabela := cQuery_Mtabela + "CODIGO_CLIENTE = " + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0) + ","

cQuery_Mtabela := cQuery_Mtabela + "DATA_FOTO = " + TRANSFORMA_SQL(DATE(),"D",08,0) + ","

cQuery_Mtabela := cQuery_Mtabela + "FOTO = " + TRANSFORMA_SQL(Str2Hex(T_FOTOGRAFIA),'T',500,0)

cQuery_Mtabela := cQuery_Mtabela + " WHERE ID_FOTO = " + TRANSFORMA_SQL(T_ID_FOTO,"N",06,0)

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

* cQuery_Mtabela := cQuery_Mtabela + "FOTO = " + ANY2SQL( MemoRead( ALLTRIM(T_FOTOGRAFIA) ) )

ENDIF

ELSE

BEGIN TRANSACTION

cQuery_Mtabela := 'DELETE from foto_cliente where CODIGO_CLIENTE = ' + TRANSFORMA_SQL(T_CODI_CLIENTE,"N",06,0)

COMITAR_DADOS_SQL(cQuery_Mtabela)

END TRANSACTION

ENDIF

RETURN .T.

id=code>id=code>

id=red>

informaisvrb@gmail.com

MSN mastermarvrb@msn.com

SKYPE informaisvrb

.: 32-9104-0562 :.

Link to comment
Share on other sites

É por aí mesmo, marcio.

Eu observei o 3º parâmetro (500)id=red> da função TRANSFORMA_SQL(Str2Hex(T_FOTOGRAFIA),'T',500,0).id=red>

Se esse parâmetro se tratar de tamanho do campo, eu não aconselho você usar assim.

marciano.jpg

Marciano Queiroz

Teixeira de Freitas-Ba

FW 10.12 + xHb 1.2.1 | BCC 5.82 | SQLLIB | PAF-ECF | TEF | NF-e | SPED Fiscal | PBM´s | Biometria | Ret.XML NF-e

Link to comment
Share on other sites

Tive problema parecido, resolvi assim:


//le arquivo

oImage:LoadBmp( cFile )

//redimenciona o tamanho da foto 140 x 155 pixel

oImage:hBitmap := ResizeBmp( oImage:hBitmap, 140, 155, .T. ) //redimensiona

//

cStrBmp := BmpToStr(oImage:hBitmap) //transf de img para string

//transf hex

cStrBmp := StrToHex(cSTRBMP)

//grava

cSQL := "INSERT INTO x1foto(idpes,imagem) "

cSQL += "VALUES("+cIDPES+",'"+cSTRBMP+"');"

id=code>id=code>

SILVA

Litoral Norte - SP

Link to comment
Share on other sites

  • 3 months later...

Amigo, verifique o tipo de dado que vc esta tentando salvar a foto, pq cada tipo tem uma limitação de tamnhanho. Consulte o manual do bando de dados. Por exemplo, no Firebird, conseguia gravar imagens de no máximo 2 mb. Mudei para MS-SQL-Server, dai achei um tipo de dados com um limite bem maior.

 

Att.

 

Silvano Bispo Faria

AWS Sistemas Empresariais

tel(15) 3202-4498

Link to comment
Share on other sites

existe uma forma para que eu possa compactar a imagem e gravar .

 

 

Pois hoje eu gravo no banco. quando o usuario quer ver eu leio do banco e gravo apenas a imagem em questão na pasta onde esta o programa  e exibo.!

 

ou seja sempre será uma imagem por vez.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...