PDA

Ver la Versión Completa : Cambiar el contenido de un campo de una tabla


mancurnino
18-03-2008, 21:15:56
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
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.

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

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