Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Concadenar un Blob y un Varchar

ej;:

tipo varchar blob
select nombrepaciente||diagnostico from recetas

me sale error, no me muestra nada,
como se hace esto?

utilizo firebird 2.0 y delphi 7.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 12-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Desde IBExpert o desde delphi???
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 12-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
desde delphi,
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #4  
Antiguo 12-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Desde IBExpert o directo en Firebird:
Código SQL [-]
 recetas.nombrepaciente|| ' ' ||diagnostico AS Descr,

Desde Delphi:
Código Delphi [-]
 recetas.nombrepaciente|| '' '' ||diagnostico AS Descr,

Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 12-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
error me aparece, de esa forma en delphi no me aparece nada
y en firebird error.
debido a que hay incompatibiliad en los tipo Blob y un Varchar

el cast(nombrepaciente as blob)

o
el cast(diagnostico as varchar)
no me acepta tampoco.

que hago?
__________________
Enseñar es la virtud de un sabio.

Última edición por ingabraham fecha: 12-08-2010 a las 23:55:10.
Responder Con Cita
  #6  
Antiguo 13-08-2010
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ingabraham Ver Mensaje
error me aparece, de esa forma en delphi no me aparece nada
y en firebird error.
debido a que hay incompatibiliad en los tipo Blob y un Varchar

el cast(nombrepaciente as blob)

o
el cast(diagnostico as varchar)
no me acepta tampoco.

que hago?
Hola

Código SQL [-]
select coalesce(substring(nombrepaciente from 1 for 80), diagnostico) from recetas

Saludos
Responder Con Cita
  #7  
Antiguo 13-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ingabraham.

El código funciona perfectamente.

Cambié los nombres de campo y tabla para realizar la prueba, pero la consulta es la misma: Campo || CampoBlob

Prueba en Delphi/Firebird, con IBQuery y con IBDataSet:
Código Delphi [-]
procedure TForm1.BtnQueryClick(Sender: TObject);
begin
  DataSource1.DataSet:= IBQuery1; // para visualizar en dbgrid
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT  NOMBRE || OBSERVACION FROM PACIENTES';
    Open;
  end;
end;

procedure TForm1.BtnDataSetClick(Sender: TObject);
begin
  DataSource1.DataSet:= IBDataSet1; // para visualizar en dbgrid
  with IBDataSet1 do
  begin
    Close;
    SelectSQL.Text:= 'SELECT  NOMBRE || OBSERVACION FROM PACIENTES';
    Open;
  end;
end;


Saludos.

Última edición por ecfisa fecha: 13-08-2010 a las 00:31:58.
Responder Con Cita
  #8  
Antiguo 13-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En un reporte uso esta sentencia a la perfeccion, al estar en el string del reporte es igual que ponerla en el IBexpert:
Código SQL [-]
SELECT SerieMaterial.NumSerie, OrdenProdItem.CodOrden, OrdenProdItem.CodParte,
 Articulos.Descripcion|| ' ' ||Categoria|| ' ' ||SubCategoria AS Descr, SerieMaterial.CodMaterial,
Materiales.Descripcion, Materiales.Unidad, SerieMaterial.Cantidad, Materiales.Costo,
OrdenProdItem.FinProd, SerieMaterial.CostoALaFecha 
FROM Articulos RIGHT JOIN (OrdenProdItem INNER JOIN (Materiales RIGHT JOIN SerieMaterial
ON Materiales.CodMaterial = SerieMaterial.CodMaterial) ON OrdenProdItem.NumSerie = SerieMaterial.NumSerie)
ON Articulos.CodParte = OrdenProdItem.CodParte

Y en uno de los tantos codigos que tengo en delphi:
Código Delphi [-]
If FSelProdFact.CheckBox1.Checked = True then
      begin
         QTemp.Close;
         QTemp.SQL.Text := 'SELECT Descripcion|| '' '' ||Categoria|| '' '' ||SubCategoria AS Descr, Precio1 FROM Articulos '+
                           'WHERE CodParte = '+QuotedStr(FSelProdFact.Edit1.Text);
         QTemp.Open;
      end;

Por lo tanto:
Las dos sentencias que puse funcionan Perfectamente en Firebird, si no es asi, tengo un trato con el diablo jejejje.
Saludos

PD: LAS COMILLAS son por razones Obvias:
Se usan para que los datos que se presentan no estén pegados, estén separados por un espacio, muy útil lógicamente.
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 14-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
NO ME HAN ENTENDIDO TODAVIA EXCEPTO egotar

esto : || '' '' || no me sirve solamente.

hay un campo BLOB con un campo String

Los quiero concadenar, pero asi :|| '' '' || sencillamente no me los concadena, debido a que el tipo blob es incompatible con el string.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #10  
Antiguo 14-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ingabraham Ver Mensaje
NO ME HAN ENTENDIDO TODAVIA EXCEPTO egotar

esto : || '' '' || no me sirve solamente.

hay un campo BLOB con un campo String

Los quiero concadenar, pero asi :|| '' '' || sencillamente no me los concadena, debido a que el tipo blob es incompatible con el string.
No, realmente no te entiendo, lo que puse arriba funciona OK.

A ver si te puedo entender... vos intentás hacer algo como esto ?
Código Delphi [-]
   with IBDataSet do
        Resultado:= FieldByName('NOMBRE').AsString + FieldByName('OBSERVACION').AsString;

Es decir, que intentas y que no logras ?
Podés poner el código ?

Saludos.

Última edición por ecfisa fecha: 14-08-2010 a las 18:28:53.
Responder Con Cita
  #11  
Antiguo 14-08-2010
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ingabraham Ver Mensaje
NO ME HAN ENTENDIDO TODAVIA EXCEPTO egotar

esto : || '' '' || no me sirve solamente.

hay un campo BLOB con un campo String

Los quiero concadenar, pero asi :|| '' '' || sencillamente no me los concadena, debido a que el tipo blob es incompatible con el string.
Y ahora que lo mencionas, me parece que mi cerebro conceptualizó los campos al reves

Me imagino que lo correcto es así.

Código SQL [-]
select coalesce(nombrepaciente, substring(diagnostico from 1 for 100) ) from recetas

saludos
Responder Con Cita
  #12  
Antiguo 14-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
esta bien como todos ustedes plantean sus respuestas,
es que no me daba los registros correctos por otro problema

hay registros del campo varchar que estan null y no concadena
ej:

nombre diagnostico

juan diarrea avanzada
marcos is null


no me condadena a marchos: respuesta obtenida

- juan diarrea avanzada
-
el registro de marcos no concadena. me aparece vacio.

|| esta bien
y substring tambien.
pero me falta corregir ese problema:, lo correcto seria

- juan diarrea avanzada
- marcos
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #13  
Antiguo 14-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Ahora sí...

La consulta podría ser:
Código SQL [-]
SELECT NOMBRE ||' '|| OBSERVACION FROM PACIENTES
WHERE (NOMBRE IS NOT NULL) AND (OBSERVACION IS NOT NULL)

Nota: Si el nombre es requerido, está sí o sí, la consulta puede quedar:
Código SQL [-]
SELECT NOMBRE ||' '|| OBSERVACION FROM PACIENTES
WHERE OBSERVACION IS NOT NULL

Saludos.

Última edición por ecfisa fecha: 14-08-2010 a las 23:10:41.
Responder Con Cita
  #14  
Antiguo 14-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código SQL [-]
SELECT NOMBRE ||' '|| IIf(OBSERVACION is NULL, ''SIN DATO'', OBSERVACION) AS OBSERVACION FROM PACIENTES

OTRO:
Código SQL [-]
SELECT NOMBRE ||' '|| if(OBSERVACION is null) then ''SIN DATO'' ELSE OBSERVACION AS OBSERVACION FROM PACIENTES

Incluso se puede hacer con case.

Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 15-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caral Ver Mensaje
Código SQL [-]
SELECT NOMBRE ||' '|| IIf(OBSERVACION is NULL, ''SIN DATO'', OBSERVACION) AS OBSERVACION FROM PACIENTES
Código SQL [-]
SELECT NOMBRE ||' '|| if(OBSERVACION is null) then ''SIN DATO'' ELSE OBSERVACION AS OBSERVACION FROM PACIENTES
Amigo caral, ese código no es de 'novato'...


Saludos.

Última edición por ecfisa fecha: 15-08-2010 a las 01:28:22.
Responder Con Cita
  #16  
Antiguo 15-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Seguro ??, quien sabe de donde lo copie
En eso soy especialista, Control+C, Control+V.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 15-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caral Ver Mensaje
Hola
Seguro ??, quien sabe de donde lo copie
En eso soy especialista, Control+C, Control+V.
Saludos
Seguro ??... Segurísimo !!!

Encima lo haces de memoria !!!...
No digas que no, por que sobra una comilla simple en ''SIN DATO''.
Probé el código para entenderlo , hay cosas como IIF que no conocía.

Lo demás, como era de esperarse de un 'novato' anda perfecto.

Saludos.
Responder Con Cita
  #18  
Antiguo 15-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Siempre me olvido, la doble comilla es cuando se usa en delphi.
Saludos
PD: Me alegro que conozcas algo nuevo, pero seguro que no soy el mas adecuado para enseñar nada amigo.
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 15-08-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola

Código SQL [-]
SELECT NOMBRE ||' '|| IIf(OBSERVACION is NULL, ''SIN DATO'', OBSERVACION) AS OBSERVACION FROM PACIENTES




OTRO:

Código SQL [-]
SELECT NOMBRE ||' '|| if(OBSERVACION is null) then ''SIN DATO'' ELSE OBSERVACION AS OBSERVACION FROM PACIENTES




Incluso se puede hacer con case.

Saludos

este codigo iff lo acepta firebird 2.0
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #20  
Antiguo 15-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Yo tengo firebird 2.1. y acepta a la perfección, cualquiera de los dos.
No creo que haya mucha diferencia.
Saludos
__________________
Siempre Novato
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
cambiar tipo de dato blob a varchar en firebird ingabraham Varios 4 13-08-2010 00:13:49
Asignar un varchar a un blob Minotaure Firebird e Interbase 2 30-06-2008 09:50:51
Que es Mejor un Varchar o Blob brandolin Firebird e Interbase 4 14-03-2005 02:23:15
UDF para convertir de un BLOB Type Text a un Varchar???? AGAG4 SQL 0 06-12-2004 19:59:47
cast de BLOB a VARCHAR o CHAR Angel Firebird e Interbase 1 03-10-2003 18:41:20


La franja horaria es GMT +2. Ahora son las 12:13:09.


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