Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Cambiar el contenido de un campo de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=54436)

mancurnino 18-03-2008 21:15:56

Cambiar el contenido de un campo de una tabla
 
Hola, mi pregunta es esa; voy recorriendo una tabla, por ej:

Usuario (dni, nick, nombre, tfno)

Imaginaros, que llego a DNI, entoncs quiero cambiar el valor del nick de esa tupla por otro:

while not Modulodatos.T_Usuario.Eof do begin //Mientras no sea el fin de la tabla Usuario
if ModuloDatos.T_UsuarioDni.AsString = Edit_DNI.Text then begin
ShowMessage('El nick ya está registrado en el sistema. Por favor, introduzca un nick distinto.');
ModuloDatos.T_Usuario.Close;
Exit;
end;
Modulodatos.T_Usuario.Next; //Pasamos a la siguiente tupla de la tabla Usuario
end;

es decir, tngo Edit_DNI, y la tabla es T_Usuario, voy recorriendola hasta encontrar en T_Usuario el DNI que tengo en Edit_DNI, y luego en esa tupla quiero cambiar el valor del nick, por otro que tengo en un Edit (Edit_Nick)

Como lo hago? tengo que poner la tabla en modo edicion y eso, insertarlo y luego cerrar la tabla, lo que no quiero es que me lo inserte al final de la tabla, si no en esa tupla

eduarcol 18-03-2008 21:51:12

Código Delphi [-]
while not Modulodatos.T_Usuario.Eof do begin //Mientras no sea el fin de la tabla Usuario
if ModuloDatos.T_UsuarioDni.AsString = Edit_DNI.Text then begin
ShowMessage('El nick ya está registrado en el sistema. Por favor, introduzca un nick distinto.');
ModuloDatos.T_Usuario.Edit;
   ModuloDatos.T_Usuario.FieldbyName('DNI').AsString := Edit_DNI.Text;
ModuloDatos.T_Usuario.Post;
ModuloDatos.T_Usuario.Close;
Exit;
end;
Modulodatos.T_Usuario.Next; //Pasamos a la siguiente tupla de la tabla Usuario
end;

para la proxima encierra el codigo entre las etiquetas delphi, y no entendi mucho, pero creo que eso es lo que necesitas

Caral 18-03-2008 21:55:46

Hola
No se si entiendo, pero bueno.
Código Delphi [-]
while not Modulodatos.T_Usuario.Eof do begin //Mientras no sea el fin de la tabla Usuario
if ModuloDatos.T_UsuarioDni.AsString = Edit_DNI.Text then 
begin
ShowMessage('El nick ya está registrado en el sistema. Por favor, introduzca un nick distinto.');
end
else
ModuloDatos.T_Usuario.Edit;
ModuloDatos.T_UsuarioDni.Value:= Edit_DNI;
ModuloDatos.T_Usuario.Post;
end;
Modulodatos.T_Usuario.Next;
 //Pasamos a la siguiente tupla de la tabla Usuario
end;
Con query
Código Delphi [-]
ModuloDatos.Query1.sql.text:=' Select * from Usuario where Dni = : D';
ModuloDatos.Query1.Parameters[0].Value:= Edit_DNI.Text;
ModuloDatos.Query1.Open;
if Edit_DNI.Text = ModuloDatos.Query1Dni.Value then 
begin
ShowMessage('El nick ya está registrado en el sistema. Por favor, introduzca un nick distinto.');
end
else
ModuloDatos.T_Usuario.Edit;
ModuloDatos.Query1.Filebyname('Dni').Value:= Edit_DNI.Text;
ModuloDatos.T_Usuario.Post;
end;
Saludos

Neftali [Germán.Estévez] 19-03-2008 09:47:43

Cita:

Empezado por mancurnino (Mensaje 273976)
(1) Imaginaros, que llego a DNI, entoncs quiero cambiar el valor del nick de esa tupla por otro

(2) if ModuloDatos.T_UsuarioDni.AsString = Edit_DNI.Text then begin

(3) ShowMessage('El nick ya está registrado en el sistema. Por favor, introduzca un nick distinto.');

Más o menos te has explicado, pero hay algunas cosas que no "cuadran" y que creo que han confundido a quien te ha contestado.

En primer lugar (1)creo que quieres actualizar el NICK cuando el DNI coincide (o eso he entendido yo).
LA búsqueda parece que es correcta (2) por DNI hasta que encuentras el que coincide, pero cuando lo encuentras sacas un mensaje de error referente al NICK (3); ¿Cómo puedes decir que el NICK está repetido si estás buscando por DNI?

Tampoco me queda claro, si cuando encuentras el DNI repetido en el edit del NICK ya tienes el NICK correcto o tienes que esperar a que el usuario lo introduzca, en cuyo caso, no puedes hacerlo todo en el mismo bloque.

El código que te han puesto es el correcto, sólo que en los ejemplos anteriores actualizan el campo DNI, mientras que tú deseas actualizar el NICk.

Un saludo, confuso...:o:o:o


La franja horaria es GMT +2. Ahora son las 15:07:42.

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