Página 1 de 1
Ajuda com BLOB no Firebird
Enviado:
24 Ago 2013 21:03
por Gigio_Jau
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
Ajuda com BLOB no Firebird
Enviado:
24 Ago 2013 23:07
por alxsts
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.
Ajuda com BLOB no Firebird
Enviado:
25 Ago 2013 10:54
por Gigio_Jau
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
Ajuda com BLOB no Firebird
Enviado:
25 Ago 2013 15:57
por alxsts
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.
Ajuda com BLOB no Firebird
Enviado:
26 Ago 2013 10:47
por Gigio_Jau
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
[RESOLVIDO] Ajuda com BLOB no Firebird
Enviado:
26 Ago 2013 15:26
por Gigio_Jau
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
Ajuda com BLOB no Firebird
Enviado:
26 Ago 2013 17:21
por alxsts
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
Ajuda com BLOB no Firebird
Enviado:
28 Ago 2013 16:57
por Gigio_Jau
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