Clipper On Line • Ver Tópico - Ajuda com BLOB no Firebird

Ajuda com BLOB no Firebird

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Ajuda com BLOB no Firebird

Mensagempor Gigio_Jau » 24 Ago 2013 21:03

Olá amigos,

Estou tentando migrar um sistema para o Firebird utilizando o ODBC e o adodb.ch

Tudo funciona 100%, exceto a gravação de imagem em um campo BLOB. Eu consigo ler o campo BLOB e mostrar a imagem recuperada do banco, mas não estou conseguindo gravar uma nova imagem.

Se algum colega puder me ajudar, agradeço imensamente.

Até breve.

Giovani
Gigio_Jau
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 01 Out 2005 12:03
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Ajuda com BLOB no Firebird

Mensagempor alxsts » 24 Ago 2013 23:07

Olá!

Caro Gigio, é grande a satisfação em revê-lo neste fórum, após tantos anos. Seja sempre bem-vindo!

Não ficou claro mas, como a mensagem está na Seção Harbour, creio que você esteja convertendo um sistema, talvez de Clipper, para Harbour + Firebird.

Realmente nunca trilhei este caminho mas, em pesquisa no Google, encontrei o post abaixo, publicado em outro fórum. Espero que ajude.

Continue postando, e forneça mais detalhes.
Anexos
Firebird.JPG
Ajuda com BLOB no Firebird
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Ajuda com BLOB no Firebird

Mensagempor Gigio_Jau » 25 Ago 2013 10:54

Olá, saudações.

É muito bom estar de volta e poder contar com a colaboração de todos os colegas aqui do fórum.

O problema é +ou- esse mesmo; tenho um sistema já feito em Harbour / Minigui que usa os nossos velhos amigos .DBF e .DBT para armazenar os dados. Nele tenho um arquivo chamado scans.dbf / dbt que armazena os dados das assinaturas com a estrutura:

SNOMECART_ Character 6
SNOMEARQU_ Character 100
SIMAGARQU_ Memo

Converto a imagem para binário, salvo, extraio, e funciona tudo 100% com os DBF's e DBT's... Mas, como nós já sabemos, quando atingimos um número de quase 200.000 registros os dbf's ficam muito lentos e a coisa fica complicada para o cliente, daí resolvi migrar para o Firebird que é muito rápido, mas me enrosquei justamente nos campos BLOB para salvar a imagem.

Vou testar a sua dica e conseguindo uma solução posto ela aqui no Fórum.

Obrigado pela ajuda e até breve.

Giovani
Gigio_Jau
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 01 Out 2005 12:03
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Ajuda com BLOB no Firebird

Mensagempor alxsts » 25 Ago 2013 15:57

Olá!

Outra solução, muito usada em e-commerce (grande quantidade de imagens de produtos), seria armazenar as imagens em uma pasta no file ystem e no banco de dados armazenar apenas o nome ou nomes de cada arquivo de imagem relacionado ao registro.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Ajuda com BLOB no Firebird

Mensagempor Gigio_Jau » 26 Ago 2013 10:47

Olá Alexandre,

Valeu pela dica, em outros sistemas armazeno somente o caminho da imagem, mas neste em especial preciso das imagens anexadas ao banco.

Aproveitando a deixa, não funcionou com o exemplo anterior. Fiquei o fds inteiro com isso, já tentei quase de tudo, só falta o que dá certo. rsrsr

Já fiz o insert com o campo da imagem NULL e depois tentei fazer um upgrade, já tentei usar o stream para atualizar o campo, enfim, já fiz tanta coisa que nem sei mais por onde reiniciar...

Mas estamos aí, encontrando uma solução posto aqui no fórum.

Obrigado e até breve.

Giovani
Gigio_Jau
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 01 Out 2005 12:03
Curtiu: 0 vez
Mens.Curtidas: 0 vez

[RESOLVIDO] Ajuda com BLOB no Firebird

Mensagempor Gigio_Jau » 26 Ago 2013 15:26

Saudações,

Depois de horas e mais horas buscando uma solução, encontrei um exemplo que consegui adaptar e fazer funcionar.

Este exemplo usa a classe TADO.PRG criada pelo ivanil Marcelino. Foi uma das centenas de downloads que fiz, por isso não tenho certeza se foi do HMG Forum ou do Minigui Brasil que baixei o exemplo, mas está com o nome "Agenda_ClasseADO.rar". De qq forma, obrigado Ivanil Marcelino por ter disponibilizado o exemplo.

Segue o código:

****************
//Objeto ADO
Cn := TAdoConnection():New()

//String de conexao, cada banco tem uma caracteristica diferente...
Cn:ConnectString := "DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=.\Sacar.fdb"+";CLIENTE=fbEmbed.dll"

// Abre a conexao
Cn:Open()

//Objeto REcordSet
Rs:=TRecordSet():New()

//Setando a conexao Recordset para Adoconnection
Rs:Connection := cn:Connection

//Ativar leitura/gravacao, o default é apenas leitura
Rs:CursorType:=2
Rs:LockType:=3

//String de Conexao
Rs:SQL := "SELECT * FROM SCANS WHERE SNUMECART_ ='"+cNumeCart+"' AND SNOMEIMAG_ = '"+cArquivo+"'"

//Abrindo o objeto
Rs:Open()

//Criando o objeto STream
oStream:= TOLEAUTO():New("ADODB.Stream")

//1 = Binario
oStream:Type := 1

//abrindo o objeto stream
oStream:Open()

//carregar o arquivo fisico para a memoria
oStream:LoadFromFile( cArquImag )

//addnew cria uma nova posicao no recordset
Rs:AddNew()

// Atribuimos os valores no campos
Rs:Fields["SNUMECART_"]:value := cNumeCart
Rs:Fields["SNOMEIMAG_"]:value := cArquivo
Rs:Fields["SIMAGCART_"]:value := oStream:Read()

// fecha o objeto stream
oStream:Close()

//MoveNext vai para o proximo registro, por padrao salva qualquer alteracao , update apresentou alguns problemas...
Rs:MoveNext()

// Fecha a conexÆo ADO
cn:Close()
*****************

Obrigado a todos e sucesso

Gigio_Jau
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 01 Out 2005 12:03
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Ajuda com BLOB no Firebird

Mensagempor alxsts » 26 Ago 2013 17:21

Olá!

Parabéns e obrigado por compartilhar. ADO é muito bacana, gosto de trabalhar com ele desde os tempos do Visual Basic.

Você pode melhorar a legibilidade do código em vários pontos usando constantes manifestas. Veja o conteúdo do arquivo ADO.ch:
*--------------------------------------------------------------------
* Microsoft ADO
*
* Copyright (c) 2005-2006 CiberTec
*
*
*
* Archivo de cabecera para usar ADO con xHarbour
*
*--------------------------------------------------------------------

*---- CursorTypeEnum Values ----
#DEFINE adOpenForwardOnly 0
#DEFINE adOpenKeyset   1
#DEFINE adOpenDynamic  2
#DEFINE adOpenStatic   3

*---- CursorOptionEnum Values ----
#DEFINE adHoldRecords  0x00000100
#DEFINE adMovePrevious 0x00000200
#DEFINE adAddNew    0x01000400
#DEFINE adDelete    0x01000800
#DEFINE adUpdate    0x01008000
#DEFINE adBookmark   0x00002000
#DEFINE adApproxPosition 0x00004000
#DEFINE adUpdateBatch  0x00010000
#DEFINE adResync    0x00020000
#DEFINE adNotify    0x00040000
#DEFINE adFind     0x00080000
#DEFINE adSeek     0x00400000
#DEFINE adIndex     0x00800000

*---- LockTypeEnum Values ----
#DEFINE adLockReadOnly    1
#DEFINE adLockPessimistic  2
#DEFINE adLockOptimistic   3
#DEFINE adLockBatchOptimistic 4

*---- ExecuteOptionEnum Values ----
#DEFINE adAsyncExecute     0x00000010
#DEFINE adAsyncFetch      0x00000020
#DEFINE adAsyncFetchNonBlocking 0x00000040
#DEFINE adExecuteNoRecords   0x00000080
#DEFINE adExecuteStream    0x00000400

*---- ConnectOptionEnum Values ----
#DEFINE adAsyncConnect 0x00000010

*---- ObjectStateEnum Values ----
#DEFINE adStateClosed  0x00000000
#DEFINE adStateOpen   0x00000001
#DEFINE adStateConnecting 0x00000002
#DEFINE adStateExecuting 0x00000004
#DEFINE adStateFetching 0x00000008

*---- CursorLocationEnum Values ----
#DEFINE adUseServer 2
#DEFINE adUseClient 3

*---- DataTypeEnum Values ----
#DEFINE adEmpty      0
#DEFINE adTinyInt     16
#DEFINE adSmallInt    2
#DEFINE adInteger     3
#DEFINE adBigInt     20
#DEFINE adUnsignedTinyInt 17
#DEFINE adUnsignedSmallInt 18
#DEFINE adUnsignedInt   19
#DEFINE adUnsignedBigInt 21
#DEFINE adSingle     4
#DEFINE adDouble     5
#DEFINE adCurrency    6
#DEFINE adDecimal     14
#DEFINE adNumeric     131
#DEFINE adBoolean     11
#DEFINE adError      10
#DEFINE adUserDefined   132
#DEFINE adVariant     12
#DEFINE adIDispatch    9
#DEFINE adIUnknown    13
#DEFINE adGUID      72
#DEFINE adDate      7
#DEFINE adDBDate     133
#DEFINE adDBTime     134
#DEFINE adDBTimeStamp   135
#DEFINE adBSTR      8
#DEFINE adChar      129
#DEFINE adVarChar     200
#DEFINE adLongVarChar   201
#DEFINE adWChar      130
#DEFINE adVarWChar    202
#DEFINE adLongVarWChar  203
#DEFINE adBinary     128
#DEFINE adVarBinary    204
#DEFINE adLongVarBinary  205
#DEFINE adChapter     136
#DEFINE adFileTime    64
#DEFINE adPropVariant   138
#DEFINE adVarNumeric   139
#DEFINE adArray      0x2000

*---- FieldAttributeEnum Values ----
#DEFINE adFldMayDefer 0x00000002
#DEFINE adFldUpdatable 0x00000004
#DEFINE adFldUnknownUpdatable 0x00000008
#DEFINE adFldFixed 0x00000010
#DEFINE adFldIsNullable 0x00000020
#DEFINE adFldMayBeNull 0x00000040
#DEFINE adFldLong 0x00000080
#DEFINE adFldRowID 0x00000100
#DEFINE adFldRowVersion 0x00000200
#DEFINE adFldCacheDeferred 0x00001000
#DEFINE adFldIsChapter 0x00002000
#DEFINE adFldNegativeScale 0x00004000
#DEFINE adFldKeyColumn 0x00008000
#DEFINE adFldIsRowURL 0x00010000
#DEFINE adFldIsDefaultStream 0x00020000
#DEFINE adFldIsCollection 0x00040000

*---- EditModeEnum Values ----
#DEFINE adEditNone 0x0000
#DEFINE adEditInProgress 0x0001
#DEFINE adEditAdd 0x0002
#DEFINE adEditDelete 0x0004

*---- RecordStatusEnum Values ----
#DEFINE adRecOK 0x0000000
#DEFINE adRecNew 0x0000001
#DEFINE adRecModified 0x0000002
#DEFINE adRecDeleted 0x0000004
#DEFINE adRecUnmodified 0x0000008
#DEFINE adRecInvalid       0x0000010
#DEFINE adRecMultipleChanges   0x0000040
#DEFINE adRecPendingChanges   0x0000080
#DEFINE adRecCanceled      0x0000100
#DEFINE adRecCantRelease     0x0000400
#DEFINE adRecConcurrencyViolation 0x0000800
#DEFINE adRecIntegrityViolation 0x0001000
#DEFINE adRecMaxChangesExceeded 0x0002000
#DEFINE adRecObjectOpen     0x0004000
#DEFINE adRecOutOfMemory     0x0008000
#DEFINE adRecPermissionDenied  0x0010000
#DEFINE adRecSchemaViolation   0x0020000
#DEFINE adRecDBDeleted      0x0040000

*---- GetRowsOptionEnum Values ----
#DEFINE adGetRowsRest -1

*---- PositionEnum Values ----
#DEFINE adPosUnknown -1
#DEFINE adPosBOF -2
#DEFINE adPosEOF -3

*---- BookmarkEnum Values ----
#DEFINE adBookmarkCurrent 0
#DEFINE adBookmarkFirst 1
#DEFINE adBookmarkLast 2

*---- MarshalOptionsEnum Values ----
#DEFINE adMarshalAll 0
#DEFINE adMarshalModifiedOnly 1

*---- AffectEnum Values ----
#DEFINE adAffectCurrent 1
#DEFINE adAffectGroup 2
#DEFINE adAffectAllChapters 4

*---- ResyncEnum Values ----
#DEFINE adResyncUnderlyingValues 1
#DEFINE adResyncAllValues 2

*---- CompareEnum Values ----
#DEFINE adCompareLessThan 0
#DEFINE adCompareEqual 1
#DEFINE adCompareGreaterThan 2
#DEFINE adCompareNotEqual 3
#DEFINE adCompareNotComparable 4

*---- FilterGroupEnum Values ----
#DEFINE adFilterNone 0
#DEFINE adFilterPendingRecords 1
#DEFINE adFilterAffectedRecords 2
#DEFINE adFilterFetchedRecords 3
#DEFINE adFilterConflictingRecords 5

*---- SearchDirectionEnum Values ----
#DEFINE adSearchForward 1
#DEFINE adSearchBackward -1

*---- PersistFormatEnum Values ----
#DEFINE adPersistADTG 0
#DEFINE adPersistXML 1

*---- StringFormatEnum Values ----
#DEFINE adClipString 2

*---- ConnectPromptEnum Values ----
#DEFINE adPromptAlways 1
#DEFINE adPromptComplete 2
#DEFINE adPromptCompleteRequired 3
#DEFINE adPromptNever 4

*---- ConnectModeEnum Values ----
#DEFINE adModeUnknown 0
#DEFINE adModeRead 1
#DEFINE adModeWrite 2
#DEFINE adModeReadWrite 3
#DEFINE adModeShareDenyRead 4
#DEFINE adModeShareDenyWrite 8
#DEFINE adModeShareExclusive 0xc
#DEFINE adModeShareDenyNone 0x10
#DEFINE adModeRecursive 0x400000

*---- RecordCreateOptionsEnum Values ----
#DEFINE adCreateCollection 0x00002000
#DEFINE adCreateStructDoc 0x80000000
#DEFINE adCreateNonCollection 0x00000000
#DEFINE adOpenIfExists 0x02000000
#DEFINE adCreateOverwrite 0x04000000
#DEFINE adFailIfNotExists -1

*---- RecordOpenOptionsEnum Values ----
#DEFINE adOpenRecordUnspecified -1
#DEFINE adOpenOutput 0x00800000
#DEFINE adOpenAsync 0x00001000
#DEFINE adDelayFetchStream 0x00004000
#DEFINE adDelayFetchFields 0x00008000
#DEFINE adOpenExecuteCommand 0x00010000

*---- IsolationLevelEnum Values ----
#DEFINE adXactUnspecified 0xffffffff
#DEFINE adXactChaos 0x00000010
#DEFINE adXactReadUncommitted 0x00000100
#DEFINE adXactBrowse 0x00000100
#DEFINE adXactCursorStability 0x00001000
#DEFINE adXactReadCommitted 0x00001000
#DEFINE adXactRepeatableRead 0x00010000
#DEFINE adXactSerializable 0x00100000
#DEFINE adXactIsolated 0x00100000

*---- XactAttributeEnum Values ----
#DEFINE adXactCommitRetaining 0x00020000
#DEFINE adXactAbortRetaining 0x00040000

*---- PropertyAttributesEnum Values ----
#DEFINE adPropNotSupported 0x0000
#DEFINE adPropRequired 0x0001
#DEFINE adPropOptional 0x0002
#DEFINE adPropRead 0x0200
#DEFINE adPropWrite 0x0400

*---- ErrorValueEnum Values ----
#DEFINE adErrProviderFailed 0xbb8
#DEFINE adErrInvalidArgument 0xbb9
#DEFINE adErrOpeningFile 0xbba
#DEFINE adErrReadFile 0xbbb
#DEFINE adErrWriteFile 0xbbc
#DEFINE adErrNoCurrentRecord 0xbcd
#DEFINE adErrIllegalOperation 0xc93
#DEFINE adErrCantChangeProvider 0xc94
#DEFINE adErrInTransaction 0xcae
#DEFINE adErrFeatureNotAvailable 0xcb3
#DEFINE adErrItemNotFound 0xcc1
#DEFINE adErrObjectInCollection 0xd27
#DEFINE adErrObjectNotSet 0xd5c
#DEFINE adErrDataConversion 0xd5d
#DEFINE adErrObjectClosed 0xe78
#DEFINE adErrObjectOpen 0xe79
#DEFINE adErrProviderNotFound 0xe7a
#DEFINE adErrBoundToCommand 0xe7b
#DEFINE adErrInvalidParamInfo 0xe7c
#DEFINE adErrInvalidConnection 0xe7d
#DEFINE adErrNotReentrant 0xe7e
#DEFINE adErrStillExecuting 0xe7f
#DEFINE adErrOperationCancelled 0xe80
#DEFINE adErrStillConnecting 0xe81
#DEFINE adErrInvalidTransaction 0xe82
#DEFINE adErrUnsafeOperation 0xe84
#DEFINE adwrnSecurityDialog 0xe85
#DEFINE adwrnSecurityDialogHeader 0xe86
#DEFINE adErrIntegrityViolation 0xe87
#DEFINE adErrPermissionDenied 0xe88
#DEFINE adErrDataOverflow 0xe89
#DEFINE adErrSchemaViolation 0xe8a
#DEFINE adErrSignMismatch 0xe8b
#DEFINE adErrCantConvertvalue 0xe8c
#DEFINE adErrCantCreate 0xe8d
#DEFINE adErrColumnNotOnThisRow 0xe8e
#DEFINE adErrURLIntegrViolSetColumns 0xe8f
#DEFINE adErrURLDoesNotExist 0xe8f
#DEFINE adErrTreePermissionDenied 0xe90
#DEFINE adErrInvalidURL 0xe91
#DEFINE adErrResourceLocked 0xe92
#DEFINE adErrResourceExists 0xe93
#DEFINE adErrCannotComplete 0xe94
#DEFINE adErrVolumeNotFound 0xe95
#DEFINE adErrOutOfSpace 0xe96
#DEFINE adErrResourceOutOfScope 0xe97
#DEFINE adErrUnavailable      0xe98
#DEFINE adErrURLNamedRowDoesNotExist 0xe99
#DEFINE adErrDelResOutOfScope    0xe9a
#DEFINE adErrPropInvalidColumn   0xe9b
#DEFINE adErrPropInvalidOption   0xe9c
#DEFINE adErrPropInvalidValue    0xe9d
#DEFINE adErrPropConflicting    0xe9e
#DEFINE adErrPropNotAllSettable   0xe9f
#DEFINE adErrPropNotSet       0xea0
#DEFINE adErrPropNotSettable    0xea1
#DEFINE adErrPropNotSupported    0xea2
#DEFINE adErrCatalogNotSet     0xea3
#DEFINE adErrCantChangeConnection  0xea4
#DEFINE adErrFieldsUpdateFailed   0xea5
#DEFINE adErrDenyNotSupported    0xea6
#DEFINE adErrDenyTypeNotSupported  0xea7
#DEFINE adErrProviderNotSpecified  0xea9
#DEFINE adErrConnectionStringTooLong 0xeaa

*---- ParameterAttributesEnum Values ----
#DEFINE adParamSigned 0x0010
#DEFINE adParamNullable 0x0040
#DEFINE adParamLong 0x0080

*---- ParameterDirectionEnum Values ----
#DEFINE adParamUnknown 0x0000
#DEFINE adParamInput 0x0001
#DEFINE adParamOutput 0x0002
#DEFINE adParamInputOutput 0x0003
#DEFINE adParamReturnValue 0x0004

*---- CommandTypeEnum Values ----
#DEFINE adCmdUnknown 0x0008
#DEFINE adCmdText 0x0001
#DEFINE adCmdTable 0x0002
#DEFINE adCmdStoredProc 0x0004
#DEFINE adCmdFile 0x0100
#DEFINE adCmdTableDirect 0x0200

*---- EventStatusEnum Values ----
#DEFINE adStatusOK 0x0000001
#DEFINE adStatusErrorsOccurred 0x0000002
#DEFINE adStatusCantDeny 0x0000003
#DEFINE adStatusCancel 0x0000004
#DEFINE adStatusUnwantedEvent 0x0000005

*---- EventReasonEnum Values ----
#DEFINE adRsnAddNew 1
#DEFINE adRsnDelete 2
#DEFINE adRsnUpdate 3
#DEFINE adRsnUndoUpdate 4
#DEFINE adRsnUndoAddNew 5
#DEFINE adRsnUndoDelete 6
#DEFINE adRsnRequery 7
#DEFINE adRsnResynch 8
#DEFINE adRsnClose 9
#DEFINE adRsnMove 10
#DEFINE adRsnFirstChange 11
#DEFINE adRsnMoveFirst 12
#DEFINE adRsnMoveNext 13
#DEFINE adRsnMovePrevious 14
#DEFINE adRsnMoveLast 15

*---- SchemaEnum Values ----
#DEFINE adSchemaProviderSpecific -1
#DEFINE adSchemaAsserts 0
#DEFINE adSchemaCatalogs 1
#DEFINE adSchemaCharacterSets 2
#DEFINE adSchemaCollations 3
#DEFINE adSchemaColumns 4
#DEFINE adSchemaCheck#DEFINEraints 5
#DEFINE adSchema#DEFINEraintColumnUsage 6
#DEFINE adSchema#DEFINEraintTableUsage 7
#DEFINE adSchemaKeyColumnUsage 8
#DEFINE adSchemaReferential#DEFINEraints 9
#DEFINE adSchemaTable#DEFINEraints 10
#DEFINE adSchemaColumnsDomainUsage 11
#DEFINE adSchemaIndexes 12
#DEFINE adSchemaColumnPrivileges 13
#DEFINE adSchemaTablePrivileges 14
#DEFINE adSchemaUsagePrivileges 15
#DEFINE adSchemaProcedures 16
#DEFINE adSchemaSchemata 17
#DEFINE adSchemaSQLLanguages 18
#DEFINE adSchemaStatistics 19
#DEFINE adSchemaTables 20
#DEFINE adSchemaTranslations 21
#DEFINE adSchemaProviderTypes 22
#DEFINE adSchemaViews 23
#DEFINE adSchemaViewColumnUsage 24
#DEFINE adSchemaViewTableUsage 25
#DEFINE adSchemaProcedureParameters 26
#DEFINE adSchemaForeignKeys 27
#DEFINE adSchemaPrimaryKeys 28
#DEFINE adSchemaProcedureColumns 29
#DEFINE adSchemaDBInfoKeywords 30
#DEFINE adSchemaDBInfoLiterals 31
#DEFINE adSchemaCubes 32
#DEFINE adSchemaDimensions 33
#DEFINE adSchemaHierarchies 34
#DEFINE adSchemaLevels 35
#DEFINE adSchemaMeasures 36
#DEFINE adSchemaProperties 37
#DEFINE adSchemaMembers 38
#DEFINE adSchemaTrustees 39
#DEFINE adSchemaFunctions 40
#DEFINE adSchemaActions 41
#DEFINE adSchemaCommands 42
#DEFINE adSchemaSets 43

*---- FieldStatusEnum Values ----
#DEFINE adFieldOK 0
#DEFINE adFieldCantConvertValue 2
#DEFINE adFieldIsNull 3
#DEFINE adFieldTruncated 4
#DEFINE adFieldSignMismatch 5
#DEFINE adFieldDataOverflow 6
#DEFINE adFieldCantCreate 7
#DEFINE adFieldUnavailable 8
#DEFINE adFieldPermissionDenied 9
#DEFINE adFieldIntegrityViolation 10
#DEFINE adFieldSchemaViolation 11
#DEFINE adFieldBadStatus 12
#DEFINE adFieldDefault 13
#DEFINE adFieldIgnore 15
#DEFINE adFieldDoesNotExist 16
#DEFINE adFieldInvalidURL 17
#DEFINE adFieldResourceLocked 18
#DEFINE adFieldResourceExists 19
#DEFINE adFieldCannotComplete 20
#DEFINE adFieldVolumeNotFound 21
#DEFINE adFieldOutOfSpace 22
#DEFINE adFieldCannotDeleteSource 23
#DEFINE adFieldReadOnly 24
#DEFINE adFieldResourceOutOfScope 25
#DEFINE adFieldAlreadyExists 26
#DEFINE adFieldPendingInsert 0x10000
#DEFINE adFieldPendingDelete 0x20000
#DEFINE adFieldPendingChange 0x40000
#DEFINE adFieldPendingUnknown 0x80000
#DEFINE adFieldPendingUnknownDelete 0x100000

*---- SeekEnum Values ----
#DEFINE adSeekFirstEQ 0x1
#DEFINE adSeekLastEQ 0x2
#DEFINE adSeekAfterEQ 0x4
#DEFINE adSeekAfter 0x8
#DEFINE adSeekBeforeEQ 0x10
#DEFINE adSeekBefore 0x20

*---- ADCPROP_UPDATECRITERIA_ENUM Values ----
#DEFINE adCriteriaKey 0
#DEFINE adCriteriaAllCols 1
#DEFINE adCriteriaUpdCols 2
#DEFINE adCriteriaTimeStamp 3

*---- ADCPROP_ASYNCTHREADPRIORITY_ENUM Values ----
#DEFINE adPriorityLowest 1
#DEFINE adPriorityBelowNormal 2
#DEFINE adPriorityNormal 3
#DEFINE adPriorityAboveNormal 4
#DEFINE adPriorityHighest 5

*---- ADCPROP_AUTORECALC_ENUM Values ----
#DEFINE adRecalcUpFront 0
#DEFINE adRecalcAlways  1

*---- ADCPROP_UPDATERESYNC_ENUM Values ----
#DEFINE adResyncNone     0
#DEFINE adResyncAutoIncrement 1
#DEFINE adResyncConflicts  2
#DEFINE adResyncUpdates   4
#DEFINE adResyncInserts   8
#DEFINE adResyncAll     15

*---- MoveRecordOptionsEnum Values ----
#DEFINE adMoveUnspecified  -1
#DEFINE adMoveOverWrite   1
#DEFINE adMoveDontUpdateLinks 2
#DEFINE adMoveAllowEmulation 4

*---- CopyRecordOptionsEnum Values ----
#DEFINE adCopyUnspecified -1
#DEFINE adCopyOverWrite   1
#DEFINE adCopyAllowEmulation 4
#DEFINE adCopyNonRecursive 2

*---- StreamTypeEnum Values ----
#DEFINE adTypeBinary 1
#DEFINE adTypeText 2

*---- LineSeparatorEnum Values ----
#DEFINE adLF 10
#DEFINE adCR 13
#DEFINE adCRLF -1

*---- StreamOpenOptionsEnum Values ----
#DEFINE adOpenStreamUnspecified -1
#DEFINE adOpenStreamAsync    1
#DEFINE adOpenStreamFromRecord 4

*---- StreamWriteEnum Values ----
#DEFINE adWriteChar 0
#DEFINE adWriteLine 1

*---- SaveOptionsEnum Values ----
#DEFINE adSaveCreateNotExist 1
#DEFINE adSaveCreateOverWrite 2

*---- FieldEnum Values ----
#DEFINE adDefaultStream -1
#DEFINE adRecordURL  -2

*---- StreamReadEnum Values ----
#DEFINE adReadAll -1
#DEFINE adReadLine -2

*---- RecordTypeEnum Values ----
#DEFINE adSimpleRecord  0
#DEFINE adCollectionRecord 1
#DEFINE adStructDoc    2

[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Ajuda com BLOB no Firebird

Mensagempor Gigio_Jau » 28 Ago 2013 16:57

Vlw Alexandre e obrigado pelas dicas.

Agora vou trabalhar pra aprimorar o código. Fico aqui a disposição do colegas para qualquer dúvida.

Um abraço e sucesso a todos

Giovani
Gigio_Jau
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 01 Out 2005 12:03
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro