Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2007
Leto_Atreides Leto_Atreides is offline
Miembro
 
Registrado: jun 2006
Posts: 19
Poder: 0
Leto_Atreides Va por buen camino
Urgente Comparar dos blobs

Hola amigos pacientes y sufridores del Delphi y de firebird
Tengo un problema. Necesito comparar el contenido de dos campos de tipo blob en un procedimiento de firebird. El problema es que si los comparo directamente con los operadores '= <>' no funciona. Creo que lo que hace es comparar directamente los campos pero no los contenidos.
¿Alguien sabe como hacerlo? (A ser posible en el mismo procedimiento de firebird)
Gracias
Responder Con Cita
  #2  
Antiguo 19-07-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Que yo sepa no se puede. Aun así puedes intentar un truco.

Consiste en añadir un campo a la tabla donde se almacena un identificador único del objeto 'blob' (Por ejemplo, el CRC, md5, GUI... ) y utilizarlo cuando necesites compararlo.

Evidentemente no podrás utilizar "mayor que" ni "menor qué", y es posible, aunque poco provable, que dos blob distintos acaben con el mismo identificador, pero en principio puede funcionar.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 19-07-2007
Leto_Atreides Leto_Atreides is offline
Miembro
 
Registrado: jun 2006
Posts: 19
Poder: 0
Leto_Atreides Va por buen camino
Gracias.

Ya me lo imaginaba, tendré que hacerlo desde el mismo Delphi. Voy a tener que cambiar todos los procedimientos del firebird pero que le vamos a hacer. Es lo que tienen los dichosos blobs. De todas formas gracias
Responder Con Cita
  #4  
Antiguo 19-07-2007
Leto_Atreides Leto_Atreides is offline
Miembro
 
Registrado: jun 2006
Posts: 19
Poder: 0
Leto_Atreides Va por buen camino
Bueno lo anterior ya está solucionado. Aunque no he podido hacerlo desde el mismo firebird.
Ahora tengo un problema con los dichosos blobs y es que cuando eliminas el texto que tenías anteriormente el blob no se queda a nil. Claro y esto es un problemón porque yo quiero compararlos y si uno de ellos está a null y otro en realidad también está vacío pero no está a null me dice que son distintos cuando en realidad son iguales.
He intentado hacer una conversión y meter el valor del blob en un richedit y comparar los textos pero no sale bien. Además como comparo muchos campos va demasiado lento. Lo cierto es que no sirve tratar el campo blob como un asstring porque en realidad no es = ''.
También he hecho una comparación con el valor del blob = '' then dentro del procedimiento pero claro está me da error tal y como pensaba que iba a pasar pero hay que probarlo todo, ¿no?
¿A alguien se le ocurre como hacerlo?
Gracias
Responder Con Cita
  #5  
Antiguo 19-07-2007
Avatar de ariefez
ariefez ariefez is offline
Miembro
 
Registrado: sep 2005
Ubicación: Perú - Lima
Posts: 63
Poder: 19
ariefez Va por buen camino
Esto no lo he probado, pero, puedes apoyarte en una UDF Free UDFLib la funcion en cuestion es F_BLOBBINCMP, esta libreria se menciona en el libro de firebird o tambien implementar la tuya, ya q he escuchado q delphi implementa este tipo de comparacion en sus componentes con los streams, si alguien sabe mas de este tema seria cuestion de usarlo para armar la UDF...

PD: al descargarte el Zip los archivos q interesan son FreeUDFLib.dll y ext_funcs.sql esta ultima para compilar la UDF.

Edito : Existe dos Free UDFLib, la q tiene dicha funcion es Free UDFLib for InterBase V6 for Windows (valido para firebird como lo dice en su descripcion). Si no te baja el archivo dale a: guardar enlace como...

Última edición por ariefez fecha: 19-07-2007 a las 18:53:57.
Responder Con Cita
  #6  
Antiguo 20-07-2007
Leto_Atreides Leto_Atreides is offline
Miembro
 
Registrado: jun 2006
Posts: 19
Poder: 0
Leto_Atreides Va por buen camino
La verdad es que tengo un problema con las udf. El servidor donde se encuentra la bd tiene linux y trabajo sobre windows, así que no puedo utilizar udfs.
Estaría bien que pudiera saber el código fuente de la función F_BLOBBINCMP que mencionas.
Gracias.
Responder Con Cita
  #7  
Antiguo 20-07-2007
Avatar de ariefez
ariefez ariefez is offline
Miembro
 
Registrado: sep 2005
Ubicación: Perú - Lima
Posts: 63
Poder: 19
ariefez Va por buen camino
En el enlace q te proporcione se encontraba las fuentes de la Dll ( Free UDFLib for InterBase V6 for Windows si no te baja el archivo le das a: guardar enlace como) la unidad que contiene la funcion es BlobFncs.pas.

Otra cosa, no creo que tener un servidor linux sea el problema para no poder usar UDFs, tan solo seria crear la UDF para linux y declarar la funcion en la base de datos. Una vez echo esto el acceso a dicha funcion desde windows seria tan solo como una sentencia cualquiera. aca te dejo un enlace en el cual hacen esta labor UDF en Interbase aplicable para firebird
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problemas con blobs con formato lazar PHP 8 15-02-2007 10:19:25
Importando BLOBs con IBEASY+ kurroman Firebird e Interbase 0 22-01-2007 15:38:27
Blobs trabuc SQL 1 06-09-2004 19:33:09
Campos Blobs y recors frankmch Conexión con bases de datos 0 05-09-2003 00:13:51


La franja horaria es GMT +2. Ahora son las 01:01:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi