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)
-   -   Modificar campos internamente (https://www.clubdelphi.com/foros/showthread.php?t=37113)

Max_E. 03-11-2006 05:01:08

Modificar campos internamente
 
hola a todos :):):

quisiera saber como puedo cambiar cada uno de los campos de toda una fila en mi archivo de datos sin la necesidad de mostrarlos primero a un dbgrid que es lo que solo sabia hacer

(1º mostraba en un dbgrid, luego digitaba y aceptaba el cambio con un dbnavigator),

lo que quiero hacer es modificar los campos de una fila especifica ''internamente'' ya conociendo los datos a modificar o reeemplazar

algo mas o menos asi

archivo DB ''alumnado''
campo ''nombre'' que tenga luis
modificar campo ''edad'' y ''peso''

de alumnado buscar en nombre:= luis entonces edad:= variable1 and peso := variable2


Que bueno que exista esta pagina donde pueda consultar y exponer mis dudas y preguntas, gracias a quien pueda ayudarme esta ves :D

marcoszorrilla 03-11-2006 06:59:43

Si está indexado por nombre, que debiera estarlo.

Código Delphi [-]
if MiTabla.FindKey(['luis']) then
begin
MiTabla.Edit;
MiTablaEdad.Value:=Variable1;
MiTablaPeso.Valu:=Variable2;
MiTabla.Post;
end
else
ShowMessage('No se encontró Luis');

Un Saludo.

Nota:Caso de no estar indexado deberás utilizar Locate.
Otra opción sería hacer lo mismo utilizando SQL.

Lepe 03-11-2006 09:58:42

Por sql, verás que es muy similar:
de alumnado buscar en nombre:= luis entonces edad:= variable1 and peso := variable2

Código Delphi [-]
query1.sql.text := Format('update alumnado set edad = %s, peso = %s where nombre = %s',[Inttostr(variable1), inttostr(variable2), QuotedStr('luis');
query1.Execsql;

Saludos

Max_E. 05-11-2006 20:25:17

aun no funciona
 
hola a todos:

la ayuda que me dio lape es la que me da resultados
pero el problema es que le cambia los valores a todos
los mienbros del campo nombre y no especificamente a luis

ha y ademas le faltaba poner ' ]) ' al final de los codigos

Código SQL [-]
query1.sql.text := Format('update alumnado set edad = %s, peso = %s where nombre = %s',[Inttostr(variable1), inttostr(variable2), QuotedStr('luis')]);
query1.Execsql;

alguien podria ver y decirme cual es el motivo de esta accion?

gracias por su ayuda..

Lepe 06-11-2006 10:11:21

Pues no debería, es más, el único filtro que se usa es " nombre= 'luis' ", por tanto si no hay ninguno, no modifica nada.

Quizás haya problemas con las mayúsculas y minúsculas:
Código Delphi [-]
query1.sql.text := Format('update alumnado set edad = %s, peso = %s where lower(nombre) = %s',[Inttostr(variable1), inttostr(variable2), QuotedStr(lowercase('luis'))]);
query1.Execsql;

Espero que tengas más suerte.

Saludos

mlara 06-11-2006 14:44:57

...o quizás todos se llaman 'luis' :D

Creo que es mejor tener un campo clave que no sea el nombre en tu tabla de alumnos, digamos el número de identificación o un campo tipo autoincremental... eso te garantiza que el registro es único. Así la sentencia podría ser:

Código Delphi [-]
query1.sql.text := Format('update alumnado set edad = %s, peso = %s where id = %d',[Inttostr(variable1), inttostr(variable2), id]);
query1.Execsql;

, obviamente deberás haber obtenido el id antes.

Ken_Masters 06-11-2006 20:33:23

Si eso de tener carácteres como llave primaria luego se vuelve un dolor de cabeza, mejor usa números y todo se vuelve mucho mas fácil XD

Max_E. 07-11-2006 05:12:10

ok gracias a todos ya funciono

el problema era tan raro que decidi dejarlo para el dia siguiente y lo que paso es que al reiniciar la maquina y delphi al dia siguiente supongo que volvio todo a acomodarse y los codigo funcionaron a la perfeccion tal ves fue que hice tantos cambios a los codigos y abia generado tantos mensajes de error que altere algo en el sistema (en otras palabras no tengo ni la mas minima idea de lo que paso )

posdata:
si generaste muchos mensajes de error, modicaste mucho los codigos y estas seguro de no encontrar error y aun asi no funciona tu aplicacion reinicia la maquina o al menos delphi


La franja horaria es GMT +2. Ahora son las 10:58:01.

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