Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Editar mayúsculas a solo primera en mayúscula por todos los registros

Hola: Tengo una aplicación hecha en Firebird y luego de verificar los datos que se estan cargando he comprobado que la mayor parte de los nombres y direcciones de una de las tablas esta todo en mayusculas.
He desarrollado una pequeña funcion que me acomoda un texto al formato que quiero y es la siguiente:


Código Delphi [-]
Function AcomodarTexto(Original: String): String;
var Resultante,PLetra:string;
    i:integer;
    May : Boolean;
Begin
     PLetra := UpperCase(Copy(Original[1],1));
     i := 2;
     while I <= Length (Original) do
     Begin
     If Original[i] = ' ' then
        May := True else
        May := False;
     If May then
       Begin
       Resultante := Resultante+' ';
       Resultante := Resultante+ UpperCase(Original[I+1]);
       Inc(I);
       End
        else
       Resultante := Resultante+ LowerCase(Original[i]);
       Inc(I);
     End;
      Result := PLetra+Resultante;
end;

En una parte se verifica si existe un espacio y asigna en mayuscula al caracter que sigue ya que en general los nombres son del formato JOSE ANDRES (espacio entre jose y andres) y debe convertirlo a Jose Andres. Hasta aquí parece que funciona (igual acepto sugerencias).
El tema es como aplico esta función u otra a todos los registros de la tabla agentes para que acomode el campo nombres de acuerdo al formato que necesito? "Update Agentes Set nombres = ......


Saludos.-
Responder Con Cita
  #2  
Antiguo 07-02-2012
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 Martín.

Con referencia a la función probá si de este modo te resulta más eficiente:
Código Delphi [-]
function FirstUpper(Cad: string): string;
var
  i: Integer;
begin
  for i:= 1 to Length(Cad) do
    if (Cad[i] in ['A'..'Z','Á','É','Í','Ó','Ú','Ñ']) and (i <> 1) and (Cad[i-1] <> ' ') then
      Cad[i]:= Chr(Ord(Cad[i])+32);
  Result:= Cad;
end;
Cita:
El tema es como aplico esta función u otra a todos los registros de la tabla agentes para que acomode el campo nombres de acuerdo al formato que necesito?
En cuanto a aplicar la función, si está realizada en Delphi como las anteriores, vas a tener que recorrer la tabla con el componente que utilices e ir modificando los campos.

A modo de ejemplo:
Código Delphi [-]
...
  with IBDataSet1 do
  begin
    First;
    while not Eof do
    begin
      Edit;
      FieldByName('NOMBRE').AsString:= FirstUpper(FieldByName('NOMBRE').AsString);
      Next;
    end;
  end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 08-02-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Impecable como siempre!!!. A eso me refería. Ahora bien para el dataset no veo el post antes del next. Lo olvidaste o va así? y en su caso las sentencias modificar del dataset con cual se ejecutan? Post, UpdateRecord ?

Disculpa que pregunte todo en el mismo hilo pero vi la oportunidad dado el requerimiento en general....

Gracias y saludos
Responder Con Cita
  #4  
Antiguo 08-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Un Post se ejecuta automáticamente cuando se cambia el registro activo, cosa que sucede con el Next. Por ello no es necesario ponerlo explícitamente.

// Saludos
Responder Con Cita
  #5  
Antiguo 08-02-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Enterado!!! gracias....

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir un cadena donde cada Palabra Primera con mayuscula shoulder Varios 28 05-02-2013 22:01:22
Al editar un grid se pone en mayusculas jafera Conexión con bases de datos 1 19-09-2011 09:53:14
Convertir la primera letra mayusculas y las demas minusculas amerika111 Firebird e Interbase 3 30-03-2011 20:33:39
convertir mayusculas y minusculas. Solo la primera letra en Mayusculas Delphius MS SQL Server 2 21-07-2007 02:20:22
DBEdit solo en Mayúsculas Niko Varios 6 09-09-2005 23:00:39


La franja horaria es GMT +2. Ahora son las 17:10:04.


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