Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Eliminar zeros

Buenas,
Existe alguna función que elimine los ceros a la izquierda en un string. 'Replace' no me vale.
Por ejemplo:
Registro 1: Referencia = '000134-580'
Registro 2: Referencia = '134-580'
Registro 3: Referencia = '00134-580'

Lo que quiero es que con el siguiente select (uso un TAdoQuery):
Select * from tabla where Referencia = '134-580
me devuelva los tres registros

Muchas gracias
Responder Con Cita
  #2  
Antiguo 12-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código SQL [-]
select * from tabla where Referencia like '%134-580%'
Responder Con Cita
  #3  
Antiguo 12-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Gracias pero no me sirve, por dos motivos:
- el programa es muy complejo y no me atrevo a cambiar la instrucción sql, por lo que no me sirve poner la condición en el where.
- porqué '%134-580%' no hace lo que yo quiero.
Por ejemplo:
Registro 1: Referencia = '000134-580'
Registro 2: Referencia = '134-580'
Registro 3: Referencia = '00134-580'
Registre 4: Referencia = '134-580 abc'

Me devolvería los 4 registros y el cuarto no cumple con la condición
Responder Con Cita
  #4  
Antiguo 12-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues cuéntanos todos los casos posibles que valen o no valen, no somos adivinos
Responder Con Cita
  #5  
Antiguo 12-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Casimiro, mi primer post pone exactamente que quiero, una función para eliminar los ceros de la izquierda en un string, es decir, quiero que:
'000134-58'
'0000000134-58'
'00134-58'
....

Tengo un query con 1000 registros, y quiero filtrar aquellos registros cuyo campo referencia sea '134-58'.

Los tres ejemplos anteriores entrarían dentro del filtro, este, por ejemplo no, '000134-58 abc'

Mejor no lo puedo explicar
Gracias
Responder Con Cita
  #6  
Antiguo 13-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y lo quieres hacer desde delphi o en sql?
Responder Con Cita
  #7  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Suponiendo que el campo Referencia fuese numérico, o que sólo admitiera números, la instrucción sería la siguiente:

Select Referencia From Table Where CDbl(Referencia) = '134-580'

Pero como el campo Referencia contiene carácteres alfanuméricos, no puedo usar la instrucción CDbl

Gracias.
Responder Con Cita
  #8  
Antiguo 13-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No te vale un procedimiento almacenado?, ¿qué base de datos usas?
Responder Con Cita
  #9  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Casimiro, no es que no me valga. Lo que sucede es que este programa está funcionando, es complejo, la persona que lo escribió se fue y no me atrevo a tocar tanto código. Por eso prefiero hacer un filtro y después lo elimino.
Te seré sincera, creo que esto que quiero no es posible
Responder Con Cita
  #10  
Antiguo 13-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No has dicho qué base de datos usas, tampoco si esa sentencia se lanza desde delphi o está en la propia base de datos.
Si nos informaras exactamente de todo lo que te he preguntado hasta ahora sería posible ayudarte, aunque sea complejo
Responder Con Cita
  #11  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Casimiro, en mi primer post digo:
Lo que quiero es que con el siguiente select (uso un TAdoQuery), o sea,
en Delphi, tengo un TAdoQuery con las siguientes propiedades:
TAdoQuery1.Sql -> "Select * from Tabla"
TAdoQuery1.Filter -> Funcion(Referencia) = '134-580'

donde funcion sería la que me gustaría saber si existe, una que elimine los ceros de la izquierda en un string.

La base de datos que uso es Access


Responder Con Cita
  #12  
Antiguo 13-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Aunque no exista una función que quite los ceros, puedes hacerlo tú, por ejemplo, algo simple como esto te puede valer:
Código Delphi [-]
function QuitarCerosIzquierda(cReferencia:string):string;
begin
  result := cReferencia;
  while result[1]='0' do
    result := copy(Result,2,length(Result));
end;


Y para usarlo:
Código Delphi [-]
TAdoQuery1.Sql -> "Select * from Tabla"[/i]
TAdoQuery1.Filter -> QuitarCerosIzquierda(Referencia) = '134-580'


No sé cómo funciona el filtro del adoquery, pero también puedes hacer algo así como:
Código:

TAdoQuery1.Sql -> "Select * from Tabla";
Referencia := QuitarCerosIzquierda(Referencia);
TAdoQuery1.Filter -> (Referencia) = '134-580'
Responder Con Cita
  #13  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Buenas de nuevo Casimiro, jamás he utilizado una función en un filtro, pero si lo mencionas será porqué es posible.
Lo he probado y de momento me da error. Por la tarde insistiré y informaré del resultado.
Gracias
Responder Con Cita
  #14  
Antiguo 13-03-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola kambiz.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código SQL [-]
select * from tabla where Referencia like '%134-580%'
Tomando la primera sugerencia de Casimiro (y suponiendo que no haya problema para lanzar una sentencia SQL desde Delphi), sólo hay que quitar el segúndo "%":
Código SQL [-]
Select * From Tabla Where Referencia Like '%134-580'
Dices que no te atreves a cambiar la instrucción SQL, pero es eso mismo lo que sugieres con tu primer mensaje, por lo que se genera algo de confusión.

Sobre la última sugerencia del propio Casimiro, dices que te aparece un error, pero no mencionas cuál ni en qué instrucción (algo que es elemental cuando se hacen consultas en un foro).

Donde estoy es por la mañana, donde está Casi es de tarde, alguien estará leyendo esto desde algún lugar de Asia donde ahora mismo es de noche, ¿tú dónde estás?

Toma en cuenta que no siempre es fácil interpretar lo que algún compañero pregunta, aunque para él esté muy claro. Y nunca está de más la cortesía de un "bueno, mira, quizá no me expliqué bien, te pongo un ejemplo..." (eso de "mi primer post pone exactamente que quiero" fue un poco grosero).

Aquí estamos todos para ayudarnos; ayúdanos a ayudarte.

Al González.
Responder Con Cita
  #15  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Tal como dices, Al González, en todos los post estoy dando las gracias, con lo que si algunas palabras mías te puedan resultar groseras, no deja de ser tu interpretación.
Además, si estoy preguntando y alguien me contesta desinteresadamente, sería absurdo por mi parte contestarle mal o con algún tipo de exigencia.
No entiendo porqué me echas la bronca
Responder Con Cita
  #16  
Antiguo 13-03-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Descuida, no hay bronca tal.
Responder Con Cita
  #17  
Antiguo 13-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pienso que el principal problema es de desconocimiento, que no conoce el programa y no se atreve a tocar nada, pero el problema es que así no es fácil ayudar.
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
Completar campo con zeros alcides Varios 8 20-02-2009 17:39:15
Eliminar Caracteres ZayDun Varios 3 28-03-2007 02:04:08
Eliminar el BDE roman Varios 9 05-09-2006 15:24:51
eliminar opcion de eliminar en un dbgrid morfeo21 Varios 3 14-07-2005 17:05:32
Eliminar formulario jose_2057111 Varios 1 10-12-2004 13:21:42


La franja horaria es GMT +2. Ahora son las 22:23:46.


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