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 11-02-2012
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
Question actualizar 1 campo quitando un guion

hola amigos solocito su consejo en lo siguiente:

tengo una tabla deseo hacer un cambio por ejemplo:

hay un campo llamado cve_art

digamos que son las siguientes claves :

001
001-1
020
020-1
060
060-1
090
090-1
1000
1000-1
900000
900000-1

etc ....




los guiones que tienen estas claves representan un obsequio
pero si deseo contabilizar el total mi idea es quitarle los guiones para sumarlos todos

en pocas palabras trabajere siempre con un respaldo y deseo quitar guiones de la tabla

aqui se necesito hacer un recorrido de la tabla de principio a fin y checando que claves
tienen guion para removerselo

si se puede hacer esto con el dataset???
esto es lo que estoy haciendo y no me queda:
dm1: datamodule
fibdset: dataset fibplus

uso firebird 2.5, delphi 2007

Código Delphi [-]

    dm1.FIBDset1.Close;
    dm1.FIBDset1.Database := dm1.FIBData1;
    dm1.FIBDset1.Transaction := dm1.FIBTran1;
    dm1.AbreBd;   // aqui abro mi base de datos 
    dm1.FIBDset1.SQLs.SelectSQL.Text:='Select * from '+nomtable;
    dm1.FIBDset1.Open;  // abro el dataset 
    dm1.FIBDset1.SQLs.UpdateSQL.Text:='Update '+nomtable+
    ' set '+
    ' cve_art = :cve_art';



    g2.Visible :=true;
    g2.MinValue :=0;
    g2.MaxValue := dm1.FIBDset1.RecordCount;
     label1.Caption := inttostr(dm1.FIBDset1.RecordCount);
    dm1.FIBDset1.First;
    while not dm1.FIBDset1.Eof do
      begin
        for K := 1 to dm1.FIBDset1.Fields.Count - 1 do
          begin
            xcve_art :=dm1.FIBDset1.FieldByName('cve_art').AsString;
            if StrScan (Pansichar(xcve_art),'-') <> nil then
              begin

                pos := ansipos('-',xcve_art);  //checa en donde esta el guion ebn numero de posicion de la cadena
                xcve_art := copy(xcve_art,1, pos-1);          // aqui lo corto
                dm1.FIBDset1.QUpdate.Params[0].Value := xcve_art;
            end;
          end; {end for }
              dm1.FIBDset1.QUpdate.ExecQuery;
              DM1.FIBDset1.Next;
              g2.Progress :=dm1.FIBDset1.RecNo;
      end;     {end while}
      dm1.FIBTran1.Commit;
      g2.Visible := false;

y no me arranca que estoy haciendo mal
gracias
Responder Con Cita
  #2  
Antiguo 11-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No me parece necesario borrar el contenido de la tabla para quitar los guiones.
Yo lo que haria seria usar la funcion StringReplace.
Este es un ejemplo:
Código Delphi [-]
var
 res : string;
 begin
   res  := StringReplace(Edit1.Text, '-1', '  ',[rfReplaceAll, rfIgnoreCase]);
   Edit2.Text:= res;

Simplemente haz un recorrido de la tabla y ve quitandole el guion, eso si, solo para sumar el dato, no borrarlo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 11-02-2012
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
gracias caral

pero eso no es mi problema

mi problema es que no actualiza los campo
no recorre la tabla

y no se si mi codigo es correcto


ese es mi problema

grcias
Responder Con Cita
  #4  
Antiguo 12-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno:
Si no actualiza la tabla y no la recorre, tu codigo no es correcto.
Obviamente.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 12-02-2012
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
que tal hacer esto? si necesidad de alterar la tabla

Código SQL [-]
select 
sum(cast(
case  position('-',cve_art) 
   when 0 then cve_art
   else substring(cve_art from 1 for position('-',cve_art)-1) 
end as double precision))
from nombreTabla
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #6  
Antiguo 13-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
Si deseas quitar el caracter '-' del campo CVE_ART, podrías hacer:
Código SQL [-]
UPDATE TABLA
  SET CVE_ART = IIF( POSITION('-',CVE_ART) > 0,
      SUBSTRING( CVE_ART FROM 1 FOR POSITION('-',CVE_ART)-1 ) ||
      SUBSTRING( CVE_ART FROM POSITION('-',CVE_ART) + 1 FOR CHAR_LENGTH(CVE_ART) ),
      CVE_ART )

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-05-2012
iceboxpro iceboxpro is offline
Registrado
 
Registrado: oct 2006
Posts: 1
Poder: 0
iceboxpro Va por buen camino
Post

umm, no se a que te refieres con reemplazar en la tabla, pero tienes que leer el registro habilitarlo para edicion y luego guardarlo con un POST.

Ejemplo.

Código Delphi [-]
<div style="margin:20px; margin-top:5px">
  <div class="smallfont" style="margin-bottom:2px">Código:div>
  
class="alt2" dir="ltr" style="
    margin: 0px;
    padding: 6px;
    border: 1px inset;
    width: 90%;
    height: 178px;
    text-align: left;
    overflow: auto">Table1.First;
while not Table1.EOF do
with Table1 do
  begin
      Edit;
      NomCampo := ReplaceStr(NomCampo,Lo que quiero cambiar,por lo que lo quiero cambiar,[rfReplaceAll]);
      post;
      next;
  end;
end;
div>

Ojo, esto reemplaza y guarda todo cambio realizado a los campos, recomiendo que haga unas pruebas con dos o tres recorridos y veas si es lo que necesitas.

Estamos para ayudarte.

Saludos desde Mexico
Responder Con Cita
  #8  
Antiguo 14-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

El código de ecfisa hace exactamente eso, quita los guiones.
El código de ronpablo hace el cálculo que requiere el usuario manteniendo los guiones.
Responder Con Cita
  #9  
Antiguo 16-05-2012
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

El código de ecfisa hace exactamente eso, quita los guiones.
El código de ronpablo hace el cálculo que requiere el usuario manteniendo los guiones.
gracias mi estimado casimiro
los ejemplos que ustedes me han dado me han servido de mucho
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
Actualizar campo con dblookupcombobox MLROJO Conexión con bases de datos 4 18-06-2011 10:37:00
actualizar campo codigo voldemmor Varios 6 14-03-2009 01:54:31
Actualizar un campo de un registro alcides Varios 6 23-05-2007 10:20:31
actualizar un campo juangabriel1786 API de Windows 1 19-10-2006 19:30:55
Actualizar un campo micayael Firebird e Interbase 2 28-10-2005 21:42:14


La franja horaria es GMT +2. Ahora son las 15:44:10.


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