Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ado <> Bde (https://www.clubdelphi.com/foros/showthread.php?t=46597)

Caral 05-08-2007 17:15:07

Hola
Déjate de cuentos amigo, eres un perfeccionista :D
Saludos

eduarcol 05-08-2007 17:32:00

jajajaja, nooo vale, 13 años tratando de explicar mis sistemas he ideado cosas para hacer la vida de mis sistemas mas facil

Elite237 06-08-2007 03:18:14

Modificar registro
 
Hola caral, asi como me sugeriste que deje el codigo, asi es como lo tengo, pero no me hace lo que yo le pido, por ejemplo, tengo un modulo de modificaciones de departamento, tengo 3 botones, uno que es para buscar el registro (que me mandara a otra pantalla donde esta mi dbgrid y que me visualizara todos los registros que haya mandado a llamar), luego tengo un boton de guardar(que al hacer las modificaciones correspondientes me debe volver a guardar los cambios que le hize en ese registro) y el otro boton es cancelar..

Ahora, ya que tengo toda la informacion en los edit, lo que sigue es modificar el registro, y lo que quiero modificar por ejemplo es el nombre del departamento, y borro por asi decirlo el departamento informatica y escribo sistemas. Entonces al momento de dar en el boton de guardar los cambios(en el cual esta el codigo que te mostre), lo que me hace es que me duplica el registro, por ejemplo ahora me quedaron 2 registros, uno con el departamento informatica y otro con el departamento de sistemas, y eso no esta bien, por que me debe de modificar solo el registro actual, sin duplicarlo..Espero y me haya explicado bien...espero tu respuesta, gracias por tu tiempo

GustavoCruz 06-08-2007 23:42:43

Ado <> Bde
 
Hola amigo Elite237, a tu código le hace falta una pequeña instrucción...
Cuando uno trabaja con tabla y desea realizar una modificación a acutalización a un registro, lo primero es ubicar el cursor en el registro y luego a modificar...

con las tablas es sencillo añade atu codigo esto:

Código Delphi [-]
If tutabla.Locate('el campo', 'el valor',[]) then
  Begin
    edit;
    ...
    post;
  end;

si son varios campo así.

Código Delphi [-]
If tutabla.Locate('campo1;campo2;campo2;...', VarArrayOf(['valor1', 'valor2', 'valor3',...]), [loPartialKey])then
  Begin
    edit;
    ...
    post;
  end;

con esto se debe solicionar el inconveniente...:D

Elite237 07-08-2007 04:10:32

Modificar registro
 
Hola Gustavo Cruz, ya introduje el codigo que me sugeriste pero me manda un error que dice

Código:

Project1.exe raised exception class EOLeException with message 'Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros'.
este es el codigo que introduci:

Código:

procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf(['Edit1.Text','Edit2.Text2']),[loPartialKey]) then
  begin
  Edit1.Clear;
  Edit2.Clear;
  Tmaru.Post;
end;
end;

una pregunta cuando me dices Tutabla, te refieres a mi ADOTable, no es asi?

Caral 07-08-2007 04:23:02

Hola
La verdad no entiendo por que te esta pasando lo que dices, no tiene sentido.
Podrias hacer una prueba, simple, cambia los edit por dbedit, es dificil que en modo edit te duplique nada.
Saludos

egostar 07-08-2007 04:28:52

Vaya, pues tienes un pequeño error al pasar el dato de los objetos Edit

tu estas pasando así

Código Delphi [-]
['Edit1.Text','Edit2.Text2'] //aquí estas pasando el valor 'Edit1.Text' y no el valor que tiene el Edit.

Debería ser así

Código Delphi [-]
[Edit1.Text,Edit2.Text]

Salud OS.

Elite237 07-08-2007 05:00:22

Modificar registro
 
Hola, gracias por el comentario, ya lo modifique, solo que ahora no hace nada cuando presiono el boton, solo se quedan los valores que tengo y no guarda nada...te mando mi codigo.

Código:

procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf([Edit1.Text,Edit2.Text]),[loPartialKey]) then
  begin
  Edit1.Clear;
  Edit2.Clear;
  Tmaru.Post;
  mensaje:=Application.MessageBox('Los datos fueron guardados con éxito','Mensaje de confirmación');
end;
end;


egostar 07-08-2007 05:02:50

Cita:

Empezado por Elite237 (Mensaje 221010)
Hola, gracias por el comentario, ya lo modifique, solo que ahora no hace nada cuando presiono el boton, solo se quedan los valores que tengo y no guarda nada...te mando mi codigo.

Código:

procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf([Edit1.Text,Edit2.Text]),[loPartialKey]) then
  begin
  Edit1.Clear;
  Edit2.Clear;
  Tmaru.Post;
  mensaje:=Application.MessageBox('Los datos fueron guardados con éxito','Mensaje de confirmación');
end;
end;



Pues efectivamente, hace lo que tiene que hacer, no guarda nada porque no estas almacenando nada.

Tu haces esto, localizas el dato, limpias los valores de los edit, pero jamás pasas los valores que quieres a la base de datos, solo estás realizando un Tmaru.post a nada.

Salud OS.

Elite237 07-08-2007 05:40:31

Modificar registro
 
Egostar, cheque lo que me decias, y tienes razon, lo que hize fue introducir esto:

Código:

procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf([Edit1.Text,Edit2.Text]),[loPartialKey]) then
  begin
  Tmaru.Edit;
  Tmaru.FieldValues['nive_sall']:=Edit1.Text;
  Tmaru.FieldValues['salario_sal']:=Edit2.Text;
  Tmaru.Post;
  Edit1.Clear;
  Edit2.Clear;
  mensaje:=Application.MessageBox('Los datos fueron guardados con éxito','Mensaje de confirmación');
end;
end;

pense que con esto se solucionaria mi problema, pero tampoco, presiono el boton para guardar y no hace nada...disculpa si no entendi bien lo que me decias, pero que tengo mal???

egostar 07-08-2007 05:50:15

Cita:

Empezado por Elite237 (Mensaje 221017)
Egostar, cheque lo que me decias, y tienes razon, lo que hize fue introducir esto:

Código:

procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf([Edit1.Text,Edit2.Text]),[loPartialKey]) then
  begin
  Tmaru.Edit;
  Tmaru.FieldValues['nive_sall']:=Edit1.Text;
  Tmaru.FieldValues['salario_sal']:=Edit2.Text;
  Tmaru.Post;
  Edit1.Clear;
  Edit2.Clear;
  mensaje:=Application.MessageBox('Los datos fueron guardados con éxito','Mensaje de confirmación');
end;
end;

pense que con esto se solucionaria mi problema, pero tampoco, presiono el boton para guardar y no hace nada...disculpa si no entendi bien lo que me decias, pero que tengo mal???

Si no te hace nada, y no te muestra el mensaje que pones quiere decir que no está encontrando el registro que buscas.

Salud OS.

Elite237 07-08-2007 06:01:41

Modificar registro
 
Los registros si estan, de hecho, lo primero que hago es buscar ese registro, y de ahi que lo encuentra los mando a llamar, ya que me aparecen los registros en los edit, lo que hago son modificarlos y es alli donde despues de haberlos modificado le doy guardar y en ese momento es que falla, osea no hace nada, el boton aparece como si no estuviera programado, osea que por mas que le presione, no hace nada, y me tengo que salir de la aplicacion

egostar 07-08-2007 06:08:34

Porque mejor no usas el GotoKey...:rolleyes:

Código Delphi [-]
with Tmaru do begin
  EditKey;
  FieldByName('Nive_Sall').AsString := Edit1.text;
  FieldByName('Salario_Sal').AsString := Edit2.Text;
  if GotoKey = true then begin
     Edit;
     FieldValues['nive_sall']:=Edit1.Text;
     FieldValues['salario_sal']:=Edit2.Text;
     Post;
  end;
end;

Salud OS.

Elite237 07-08-2007 07:36:19

Modificar registro
 
Una pregunta, como declaro lo que sugeriste, es que me dice que no esta declarado....por eso te pregunto, lo que pasa es que todavia no se bien, estoy empezando...

Como declaro esto:
Código Delphi [-]
EditKey;
GotoKey;

GustavoCruz 07-08-2007 17:09:58

Ado <> Bde
 
Hola amigo Elite237 prueba esto sin el loPartialKey:

Código Delphi [-]
procedure TForm30.BitBtn2Click(Sender: TObject);
begin
if Tmaru.Locate('nive_sall;salario_sal',VarArrayOf([Edit1.Text,Edit2.Text]),[]) then
  begin
   Tmaru.Edit;
   Tmaru.Fieldbyname('nive_sall').asvalue:=Edit1.Text;
   Tmaru.Fieldbyname('salario_sal').asvalue:=Edit2.Text;
   Tmaru.Post;
   Edit1.Clear;
   Edit2.Clear;
   Application.MessageBox('Los datos fueron guardados con éxito','Mensaje de confirmación',mb_ok+mb_iconiformation);
end;
end;

si uno hace una actualización utilizando el TADOQuery o el TQuery, la sentencia normalmente, es asi
Código SQL [-]
"update Tmaru set campo1=nuevovalor1, campo2=nuevovalor2 where .... grupo de condiciones...."

qué sucede en tu código, que estás buscando por dos campos y luego estos mismos campos los estás reemplazando...:)


La franja horaria es GMT +2. Ahora son las 16:36:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi