Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
Actualizar registro.. ayuda

Código Delphi [-]
  icodex := strtoint(txtcodigo.Text);

        with dmDatos.qryventarea do begin
         Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM ventasareas');
        open;
        if(not Eof)then begin
        if icodex <> FieldByName('codigo').value then
        begin
     // dmDatos.cdsventarea.Active := false;
        Close;
        SQL.Clear;
        SQL.Add('INSERT INTO ventasareas (areaventa, orden, articulo, codigo, descrip, cantidad, precio, cliente, categoria, fecha)');
        SQL.Add('VALUES(:areaventa, rden, :articulo, :codigo, :descrip, :cantidad, recio, :cliente, :categoria, :fecha)');
            params.ParamByName('areaventa').Value := sAreaVenta;
             if(iCliente < 1) then
               params.ParamByName('orden').Value := NULL
            else
               params.ParamByName('orden').Value := iorden;

            params.ParamByName('articulo').Value := txtclave.Text;
            params.ParamByName('codigo').Value := txtcodigo.Text;
            params.ParamByName('descrip').Value := txtdescripc.Text;
            params.ParamByName('cantidad').Value := txtcantidad.Text;
            params.ParamByName('precio').Value := txtprecio.Text;

            if(iCliente < 1) then
               params.ParamByName('cliente').Value := NULL
            else
               params.ParamByName('cliente').Value := IntToStr(iCliente);

            if(Length(txtcategoria.Text) > 0) then
               params.ParamByName('categoria').Value := txtcategoria.Text
            else
               params.ParamByName('categoria').Value := NULL;


            params.ParamByName('fecha').Value := FormatDateTime('dd/mm/yyyy',Date);
            ExecSQL;
            Close;
        end;
        end
        else begin
          Close;
            SQL.Clear;
            SQL.Add('UPDATE ventasareas SET areaventa = :areaventa,orden = rden,');
            SQL.Add('articulo = :articulo,codigo = :codigo,descripcion = :descripcion,');
            SQL.Add('cantidad = :cantidad,precio = recio,cliente = :cliente,');
            SQL.Add('categoria = :categoria,fecha = :fecha WHERE codigo = :codigo');

            params.ParamByName('areaventa').Value := sAreaventa;
            params.ParamByName('orden').Value := iorden;
            params.ParamByName('articulo').Value := txtclave.Text;
            params.ParamByName('codigo').Value := txtcodigo.Text;
            params.ParamByName('descripcion').Value := txtdescripc.Text;
           params.ParamByName('cantidad').Value := txtcantidad.Text;
            params.ParamByName('precio').Value := txtprecio.Text;
            params.ParamByName('cliente').Value :=IntToStr(iCliente);
            params.ParamByName('categoria').Value := txtcategoria.Text;
            params.ParamByName('fecha').Value := FormatDateTime('dd/mm/yyyy',Date);
        end;
        end;

buenas estaba haciendo este codigo para insertar articulos con un boton agregar desde una lista, lo que quiero es que si escribes en un edit el codigo y este sea igual al ya ingresado anteriormente en un grid lo actualize en ves de ponerlo en la sgte linea y si no es el mismo codigo agregarlo en la siguiente linea..

bueno el codigo no hace nada cuando apreto el boton agregar..
que estoy haciendo mal, alguna sugerencia ?
Responder Con Cita
  #2  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
me parece que estas equivocandote en el

NOT EOF

si no es vacio Inserta y si esta vacion Actualiza???

no deberia ser al reves?

al menos es lo que he podido interpretar del pedazo de codigo que has puesto
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 24-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
se supone que not eof es mientras no llega al final ? en que parte dice si es vacio INSERTA 8-)
Responder Con Cita
  #4  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ah mientras not eof

y el while? donde lo pones?

quiza ahi esta el error, solo esta pasando 1 vez por ese proceso
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 24-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
no eso tambien ya probe y no funciona con while tampoco
Responder Con Cita
  #6  
Antiguo 24-05-2011
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Poder: 18
elarys Va por buen camino
No se entiende muy bien lo que haces con el codigo pero proba cambiar
if (not Eof) then begin

Código Delphi [-]
if Query.RecordCount = 0 then
  //insterta
else
  //actualiza

como sabes a que campo esta apuntando el query
deberias agregarle un order by codigo
entiendo que codigo es la clave y va en orden ascendete
luego query.last para ir al ultimo y ver cual es el ultimo codigo agregado
va por lo menos eso es lo que entiendo... si no deberias explicarte detalladamente

Última edición por elarys fecha: 24-05-2011 a las 20:18:23.
Responder Con Cita
  #7  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Thumbs up

parece que no me has entendido....
tu dices que el NOT EOF es mientras no termine el archivo.. verdad?

pero no veo el
Código Delphi [-]
 
While NOT query.eof do

si haces una revision del codigo que has puesto (salvo que no este completo)

dices
Código Delphi [-]
  SQL.Add('SELECT * FROM ventasareas');
  open;
  if(not Eof)then begin
     if icodex <> FieldByName('codigo').value then
     begin

YO interpreto que si HAY datos en ventasareas (el not eof significa que no es fin de archivo), pero como no hay un while, se podria interpretar como ventasareas tiene al menos 1 registro

entonces si HAY datos insertar y si no hay datos Actualizas.... (no se puede actualizar un dato que no existe previamente)

me entiendes ahora?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 25-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
como podria hacer entonces...
alguien me ayuda ?
Responder Con Cita
  #9  
Antiguo 25-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ayudaria mucho si es que mencionas si tengo o no razon.... porque no se si lo que te digo te ayuda o no

enfoca bien el problema
dinos mas o menos cual es el flujo del programa... ese codigo que has colocado donde lo tienes?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 25-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
en un boton agregar tengo ese codigo.. antes del boton agregar ya deben de estar llenos algunos edits..

bueno con el codigo de solo insertar

Código Delphi [-]
Close;
        SQL.Clear;
        SQL.Add('INSERT INTO ventasareas (areaventa, orden, articulo, codigo, descrip, cantidad, precio, cliente, categoria, fecha)');
        SQL.Add('VALUES(:areaventa, rden, :articulo, :codigo, :descrip, :cantidad, recio, :cliente, :categoria, :fecha)');
            params.ParamByName('areaventa').Value := sAreaVenta;
             if(iCliente < 1) then
               params.ParamByName('orden').Value := NULL
            else
               params.ParamByName('orden').Value := iorden;

            params.ParamByName('articulo').Value := txtclave.Text;
            params.ParamByName('codigo').Value := txtcodigo.Text;
            params.ParamByName('descrip').Value := txtdescripc.Text;
            params.ParamByName('cantidad').Value := txtcantidad.Text;
            params.ParamByName('precio').Value := txtprecio.Text;

            if(iCliente < 1) then
               params.ParamByName('cliente').Value := NULL
            else
               params.ParamByName('cliente').Value := IntToStr(iCliente);

            if(Length(txtcategoria.Text) > 0) then
               params.ParamByName('categoria').Value := txtcategoria.Text
            else
               params.ParamByName('categoria').Value := NULL;


            params.ParamByName('fecha').Value := FormatDateTime('dd/mm/yyyy',Date);
            ExecSQL;
            Close;

me ha funcionado bien, osea inserta en el grid todo lo que esta en los edits, pero si el articulo era repetido lo ponia en la siguiente fila del grid

asi que lo que queria hacer era comparar el codigo del articulo y si eran iguales lo actualizaba en ves de insertarlo en otra fila y si eran distintos insertaba el articulo en una nueva fila

me explico ?..

y asi que estaba haciendo mas o menos lo que te puse al inicio para poder hacer lo que te explico, pero no me sale...
Responder Con Cita
  #11  
Antiguo 25-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
los datos del grid lo tienes en una tabla verdad?
entonces mas o menos podrias hacer asi..
(te pongo el PseudoCodigo)

Código Delphi [-]
 
if tblDatos.Locate ('Codigo', edtCodigo.Text, []) Then
   Begin
       Update....
   end
Else
   Begin
      Append
   end
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 25-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
no funciona ya lo probe... agrego al grid de forma normal.. cada uno en una fila mas no actualiza el item si es repetido
Responder Con Cita
  #13  
Antiguo 25-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
OJO el dato no se agrega al Grid...
se agrega a una tabla la cual mediante el datasource muestra los datos en el grid
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #14  
Antiguo 25-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
lo se.. mi grid esta ligado a la tabla.. pero no funciona.. inserta como siempre repetidamente uno tras de otro y no actualiza el mismo registro
Responder Con Cita
  #15  
Antiguo 25-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
pues lo unico que me queda decirte es que depures el programa
que veas que es lo que hace cuando tienes un codigo que ya existe... que flujo continua
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #16  
Antiguo 26-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
nada no logro hacer funcionar el codigo....

alguna otra sugerencia señores ?

gracias
Responder Con Cita
  #17  
Antiguo 26-05-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
Cita:
Empezado por Rofocale Ver Mensaje
nada no logro hacer funcionar el codigo....
alguna otra sugerencia señores ?
gracias
¿Cómo que otra sugerencia? , ¿por qué no logras hacer funcionar el código?, ¿no sabes, da error, qué error, qué estás haciendo, qué código estás usando, etc.?
Responder Con Cita
  #18  
Antiguo 26-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
eso estoy tratando de hacer desde varios dias atras, hacerlo funcionar, por eso puse todo el codigo para ver si alguien mas podia ver el error y ayudarme simplemente.. de todas maneras gracias
Responder Con Cita
  #19  
Antiguo 26-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
sabes que te recomiendo
1. lapiz y papel para armar lo que quieres...
2.- en una primera instancia no actualices todos los campos (porque eso genera mas codigo y cuando lo expones aqui se ve muy extenso), actuailza solo los principales
3.- trata de colocar un campo numerico para que cuando actualices incrementes ese campo y ver si realmente funciona o no

respira profundo y replanteate con calma lo que estas haciendo
__________________
Dulce Regalo que Satanas manda para mi.....
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 registro.... BlueSteel MS SQL Server 2 03-10-2008 17:08:11
Actualizar registro georgejg Conexión con bases de datos 2 26-03-2008 23:35:00
Actualizar un campo de un registro alcides Varios 6 23-05-2007 10:20:31
actualizar registro de windows jmeng2 Varios 2 08-12-2004 16:44:02
Actualizar un único registro Muten Firebird e Interbase 2 16-03-2004 16:03:30


La franja horaria es GMT +2. Ahora son las 06:46:34.


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