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 08-02-2012
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
modificar variios registros con dataset

hola amigos tengo el siguiente codigo con el cual deseo actualizar
una tabla de una base de datos de firebird, solo actualizare 1 campo llamado tip_doc

dm1 = es una datamodule
FIBDset1 = es una dataset de FIBplus
FIBTran1 = es la transaction FIBplus


Código Delphi [-]
//por aqui declaro la relacion entre dataset base de datos y transaction

dm1.FIBDset1.SQLs.UpdateSQL.Text:='Update pedidos' +
   ' set '+
   ' tip_doc = :tip_doc';
  
//
dm1.FIBDset1.SQLs.SelectSQL.Text:='Select tip_doc from pedidos';
   dm1.FIBDset1.Open;
   dm1.FIBDset1.Active := true;

xtip_doc := 'P';


while not dm1.FIBDset1.Eof do
    begin
       for I := 1 to dm1.FIBDset1.Fields.Count - 1 do
          begin
            dm1.FIBDset1.QUpdate.Params[0].Value := xtip_doc;
         
          end;{end For}
             dm1.FIBDset1.QUpdate.ExecQuery;
          DM1.FIBDset1.Next;
    end;{end while}

    dm1.FIBTran1.Commit;

esto lo habia hecho con un IBtable de IBX y me funciono pero aqui no me funciona no me actualiza el campo
me podrian dar una manita
saludos !!!! gracias por pasar por aca
Responder Con Cita
  #2  
Antiguo 09-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
Para empezar me parece que deberia ser al reves, pero:

Código Delphi [-]
// Veo la Tabla, no se para que ?
dm1.FIBDset1.SQLs.SelectSQL.Text:='Select tip_doc from pedidos';
   dm1.FIBDset1.Open;
   dm1.FIBDset1.Active := true;

//Hago un update mostrando un parametro
dm1.FIBDset1.SQLs.UpdateSQL.Text:='Update pedidos' +
   ' set '+
   ' tip_doc = :tip_doc';

xtip_doc := 'P';   // doy valor al parametro

while not dm1.FIBDset1.Eof do
    begin
       for I := 1 to dm1.FIBDset1.Fields.Count - 1 do
          begin
            dm1.FIBDset1.QUpdate.Params[0].Value := xtip_doc;  //aplico el parametro.
         
          end;{end For}
             dm1.FIBDset1.QUpdate.ExecQuery;
          DM1.FIBDset1.Next;
    end;{end while}

    dm1.FIBTran1.Commit;
Yo no lo haria asi.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 09-02-2012
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
hice exactamente lo que me suguieres pero no, sigue igual
recorre toda la tabla pero no actualiza }}


que error he cometido que no puedo verlo}}

gracias amigo ...
Responder Con Cita
  #4  
Antiguo 09-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 pmtzg.

Opino igual que mi amigo, veo innecesario mostrar previamente la tabla. Por otro lado no entiendo por que recorrer la tabla para ir aplicando el valor del parámetro ¿ Que sentido tiene utilizar la sentencia SQL entonces ? en ese caso bastaría con hacer:
Código Delphi [-]
  while not dm1.FIBDset1.Eof do
  begin
    dm1.FIBDset1.Edit;
    dm1.FIBDset1.FieldByName('tip_doc').AsString:= 'P'; // supongo que tiene la función FieldByName
    dm1.FIBDset1.Next;
  end;
Pero debo reconocer que no conozco los componentes FIBplus y tal vez difieran radicalmente de los que utilizo.

Por si te puediera orientar, usando un TIBDataSet yo haría:
Código Delphi [-]
...
  with IBDataSet1 do
  begin
    Close;
    SelectSQL.Text:= 'UPDATE PEDIDOS SET TIP_DOC = :TDOC';
    ParamByName('TDOC').AsString:= 'P';
    Open;
  end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-02-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
Cita:
Empezado por ecfisa Ver Mensaje

Por si te puediera orientar, usando un TIBDataSet yo haría:
Código Delphi [-]
with IBDataSet1 do   
begin     
  Close;     
  SelectSQL.Text:= 'UPDATE PEDIDOS SET TIP_DOC = :TDOC';     
  ParamByName('TDOC').AsString:= 'P';     
  Open;   
end;

Saludos.

Los FIBplus son similares a los IBX.
Responder Con Cita
  #6  
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

gracias muchachos a ustedes y como siempre tan incondicionales
y por supuesto, siempre todos muy atinados en sus comentarios

esto me pasa a mi por ser aficionado y no un buen programador como ustedes

solo no entendi una cosa y me gustaria que me volvieran a iluminar
el comentario de:

Opino igual que mi amigo, veo innecesario mostrar previamente la tabla

no la capto o es alguna instruccion que yo meti y no se que sirve para esto ???

ojala que de paso me puedan recomendar algun manual o en su defecto como interpretar la
ayuda que brinda Delphi ,,,

para poder asi progresar en lo que me gusta pero me falta mucho por aprender
y entender

desde aqui un gran saludo y mi agradecimiento a todos ustedes los que me brindaron sus comentarios
Responder Con Cita
  #7  
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 pregunta

me funciiono de maravilla muchahos como ya habia comentado

solo una pregunta

si esta misma tabla deseo hacer un cambio por ejemplo:

hay un campo llamado clave_inven

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???

gracias por sus comentarios una vez mas
Responder Con Cita
  #8  
Antiguo 11-02-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
Recuerda nuestra guía de estilo, preguntas distintas en hilos distintos. Si mezclamos las cosas luego es imposible encontrar nada.
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
Contar registros de un dataset martinlillo Conexión con bases de datos 6 29-09-2011 15:35:55
Editar Registros con Dataset mantraxer21 Varios 1 27-09-2010 03:56:56
modificar registros yossi SQL 6 11-06-2010 03:43:58
modificar registros query Buelos Firebird e Interbase 8 02-03-2008 00:52:00
Al intentar modificar un campo me dice "Cannot modify a read-only dataset" raulahol SQL 1 22-01-2007 05:16:53


La franja horaria es GMT +2. Ahora son las 01:18:49.


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