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 14-06-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Nº factura

En mi aplicación tengo un DBEdit asociado a un campo Alpha de mi tabla, en que guardo un número de factura de la forma 0000-00000000, lo que quiero es que si ingreso por ejemplo: 23-1234, en el DBEdit, al salir de éste me complete automáticamente con cero es decir: 0023-00001234, y lo puedo logar. uso tablas Paradox7 y Delphi 5.
Gracias.

Silvio.-
Responder Con Cita
  #2  
Antiguo 14-06-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Tienes una propiedad EditMask del TField, que cambiandola además de que se edite de forma especial, también cambia la forma de represantar el campo.

0000-00000000;1;_
Responder Con Cita
  #3  
Antiguo 14-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
No puedes poner una máscara y obligar al usuario a introducirlo bien??? o tb puedes programartelo tu .. quedaría algo asi... en el evento BeforePost de tu campo (Tfield) :


Código Delphi [-]
var cuatroprimeros,ochosegundos:string;
     i:integer;

i:=0;

while not (encontrado) do
begin
if cadena[i] = '-' then
 encontrado:=true
else
 Cuatroprimeros:= CuatroPrimeros + cadena[i];
i:=i+1;
end;

case length(Cuatroprimeros) of

0: Cuatroprimeros:= '0000' +  Cuatroprimeros;
1: Cuatroprimeros:= '000' +  Cuatroprimeros;
2: Cuatroprimeros:= '00' +  Cuatroprimeros;
3: Cuatroprimeros:= '0' +  Cuatroprimeros;
end;

while i<>length(cadena) do
begin
Ochosegundos:=OchoSegundos +cadena[i];
i:=i+1;
end;

case length(OchoSegundos) of

0: OchoSegundos:= '00000000' +  OchoSegundos;
1: OchoSegundos:= '0000000' +  OchoSegundos;
2: OchoSegundos:= '000000' +  OchoSegundos;
3: OchoSegundos:= '00000' +  OchoSegundos;
4: OchoSegundos:= '0000' +  OchoSegundos;
5: OchoSegundos:= '000' +  OchoSegundos;
6: OchoSegundos:= '00' +  OchoSegundos;
7: OchoSegundos:= '0' +  OchoSegundos;
end;

Tabla.fieldbyname('TuCampoCadena').asstring := CuatroPrimeros + '-' + OchoSegundos;



Saludos, Tony
Responder Con Cita
  #4  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Tony, a ver que te parece esto en lugar de esos case

Código Delphi [-]
Cuatroprimeros := FormatFloat('0000', StrToInt(Cuatroprimeros));
OchoSegundos:= FormatFloat('00000000', StrToInt(OchoSegundos));

EDIT: ah, y para separar los trocitos, nada mejor que las funciones Pos y Copy
Código Delphi [-]
if Pos('-', cadena) <> 0 then
begin
  Cuatroprimeros := Copy(cadena, 0, Pos('-', cadena));
  OchoSegundos := Copy(cadena, Pos('-', cadena), length(cadena));
end;
Lo he puesto de cabeza, seguramente se tendrán que retocar las posiciones de inicio o fin

Última edición por __cadetill fecha: 14-06-2004 a las 17:18:27.
Responder Con Cita
  #5  
Antiguo 14-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Yo es que soy un poco rudimentario la verdad es que no conocía la función pos ni la de formatfloat.... muy útiles si señor... aun asi mi código funcionaría no ??? ja ja ja
Responder Con Cita
  #6  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cita:
Empezado por tcp_ip_es
...aun asi mi código funcionaría no ??? ja ja ja
Claro claro, yo no he dicho que lo tuyo esté mal, sólo hacía mención a otra forma de solucionar los problemas

Se nota que yo soy más bago que tu escribiendo
Responder Con Cita
  #7  
Antiguo 14-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
más bien yo no díria que eres más bago sino que tu código es más eficiente
Responder Con Cita
  #8  
Antiguo 17-06-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Nº Factura

TCP IP ES: a 'Cadena' como la defino?, eso no lo entiendo...
Gracias.

Silvio.-
Responder Con Cita
  #9  
Antiguo 21-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
la cadena es un string, la puedes definir donde quieras:

Código Delphi [-]
var cadena:string;

Saludos, Tony
Responder Con Cita
  #10  
Antiguo 21-06-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por cadetill
Tony, a ver que te parece esto en lugar de esos case

Código Delphi [-]
Cuatroprimeros := FormatFloat('0000', StrToInt(Cuatroprimeros));
OchoSegundos:= FormatFloat('00000000', StrToInt(OchoSegundos));
Curioso lo del FormatFloat, no se me hubiera ocurrido nunca

Si teneis las rxlibs, viene una unidad llamada nkstrs.pas, con funciones como PadLeft y padRight, que añade cualquier caracter por la derecha o por la izquierda.

Y ya que usas paradox, echale una visual a la unidad bdeutils que trae las rxlibs, para hacer un pack de las tablas y muchas otras cositas interesantes

Saludos
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


La franja horaria es GMT +2. Ahora son las 02:58:44.


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