Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Modificar Registro (https://www.clubdelphi.com/foros/showthread.php?t=68609)

agustin173 24-06-2010 01:41:07

Modificar Registro
 
Hola como estan todos

Necesito Modificar un registro de mi base de dato, estoy utilizando SQL Server 2008, delphi 7 y esoy usando el componente adoquery.

Lo primero que hago es buscar el registro que necesito y me lo trae sin dificultad, pero cuando presiono el boton de modificar me da un error.

En el Edit(editebibuscar) a si se llama el edit, pongo el numero a modificar y me da un error.

voy a poner parte del codigo.

// Modifica los Datos en la Base de Datos
AdoItebiBuscar.SQL.Clear;
AdoItebiBuscar.Sql.Text:='Update into Itebis (Itebis) values(:Itebis)';
AdoItebiBuscar.Parameters.ParamByName('Itebis').Value:= strtoint(EDItebiBuscar.text);
AdoItebiBuscar.ExecSQL;
ShowMessage('Registro Modificado');

no se que es lo que estoy haciendo mal, por favor si alguien puede ayudarme se lo agradeceria mucho.

Casimiro Notevi 24-06-2010 02:19:04

Ahora mismo no encuentro mi bola de cristal para adivinar el error que te sale ;) aunque trataré de adivinar echando las cartas o leyendo los posos del café :)

Bromas aparte, no conozco la variante de lenguaje sql del mssql, pero un update "normal" no se escribe así:

Código:

AdoItebiBuscar.Sql.Text:='Update into Itebis (Itebis) values(:Itebis)';
Sino así:
Código:

update tutabla set campo= valor
.

Por ejemplo, si quieres modificar el sueldo del trabajador con código 25, sería algo así como:

Código:

update tbTrabajadores set sueldo=2000 where codigotrabajador=25
Parece que has copiado el sql de un "insert" y lo has modificado, te aconsejo que leas algún manual de sql.

AzidRain 24-06-2010 02:19:51

es correcto en parte lo que quieres hacer, pero en el update debes de decirle al motor que campos vas a modificar la sintaxis a mi juicio correcta es:

Código SQL [-]
update Itebis set campo1=:campo1, campo2=:campo2....etc where Itebis=:clave

donde tienes que cambiar los parámetros correspondientes,

agustin173 24-06-2010 02:52:22

Modificar registro
 
Aziraid como estas hermanos espero que estes bien

Casimiro tiene razon lo que copie fue un insert pensando que solo debia cambiarlo por un update.

voy hacer los cambios como lo dijeron les contare luego haber si me funciona.

agustin173 24-06-2010 03:12:19

modificar registro
 
Muchachos todavia no me funciona puse el codigo de la siguiente forma.

// Modifica los Datos en la Base de Datos
AdoItebiBuscar.SQL.Clear;
AdoItebiBuscar.Sql.Text:='Update Itebis set Itebis:= :Itebis where Itebis:= :clave ';
AdoItebiBuscar.Parameters.ParamByName('Itebis').Value:= strtoint(EDItebiBuscar.text);
AdoItebiBuscar.ExecSQL;
ShowMessage('Registro Modificado');

AzidRain no se que me quisiste decir con la palabra ':clave' que usaste en el query.

la tabla se llama itebis y el campos de la base de dato se llama itebis

cuando introdusco el valor en el edit(editebibuscar) ejemplo: pongo un 30 y le doy a boton modificar me arroja el siguiente error.

project synapse.exe raised exception class econvert error with message "30"
'is not a valid integer value'. process stopped. Use step or run to continue.

miren el codigo a ver si esta bien porque creo que ahi es mi error, yo no tengo mucho tiempo programando ayudende por favor.

Casimiro Notevi 24-06-2010 14:46:44

Se supone que tienes una tabla con varios campos, ¿puedes poner aquí la estructura de la misma?

agustin173 24-06-2010 17:26:32

modificar registro
 
ok entendi

Lo que necesito es madificar un registro de una tabla puse el codigo para ver que estoy haciendo mal ese es todo el codigo que tengo en el boton modificar, si puedes hacer un ejemplo te lo agradeceria

la tabla se llama "itebis"

el campo a modificar de la tabla se llama "itebis"

y estoy usando un adoquery


excusame lo que pasa es que soy nuevo programando en delphi y tambien en este foro no conozco mucho las reglas.

ayudame por favor.

AzidRain 24-06-2010 18:08:12

Falta indicar que registro es el que se debe modificar, supongamos que es el que tiene el campo itebis=9 y lo vas a cambiar por un valor que captures en un edit, entonces Debe ser así:
Código Delphi [-]
// Modifica los Datos en la Base de Datos
AdoItebiBuscar.SQL.Clear;
AdoItebiBuscar.Sql.Text:='Update Itebis set Itebis:= :Itebis where Itebis:= :clave ';
AdoItebiBuscar.Parameters.ParamByName('Itebis').AsString:= EDItebiBuscar.text;
AdoItebiBuscar.Parameters.ParamByName('clave').AsInteger := 9;  //Aqui indicamos que vamos a cambiar el que tiene el valor 9
AdoItebiBuscar.ExecSQL;
ShowMessage('Registro Modificado');

agustin173 26-06-2010 00:26:21

modificar registro
 
AzidRain te voy a poner todo a ver si puedes dar con mi problema

Estoy usando sql server 2008, delphi 7 y componente adoquery

La estructura de la base de dato es la siguiente:

La base de dato se llama "Synapse" y la tabla "Itebis"

Estructura de la Tabla Itebis

Column Name Data Type Allow Nulls
------------------------------------------------------------------------
Codigo Int
Fecha Date
Itebis char(3)

Lo que deseo es modificar los datos solamente del campo itebis los demas se quedan igual.

Tengo un boton llamado modificar que es donde tengo el problema, puse el codigo siguiente pero no me funciono.

// Modifica los Datos en la Base de Datos
AdoItebiBuscar.SQL.Clear;
AdoItebiBuscar.Sql.Text:='Update Itebis set Itebis:= :Itebis where Itebis:= :itebis';
AdoItebiBuscar.Parameters.ParamByName('Itebis').Asstring:= EDItebiBuscar.text;
AdoItebiBuscar.ExecSQL;
ShowMessage('Registro Modificado');

el .Asstring no me lo reconoce no se porque

cuando intento modificarlo me da el siguiente error:

project synapse.exe raised exception class econvert error with message 'objeto parameters mal definido. Se proporciono informacion incorrecta o incoherente. Process stopped. Use step or run to continue.

haber ahora si puedes ayudarme mejor con el codigo.

Casimiro Notevi 26-06-2010 00:43:25

Cita:

Empezado por agustin173 (Mensaje 368396)
// Modifica los Datos en la Base de Datos
AdoItebiBuscar.SQL.Clear;
AdoItebiBuscar.Sql.Text:='Update Itebis set Itebis:= :Itebis where Itebis:= :itebis';
AdoItebiBuscar.Parameters.ParamByName('Itebis').Asstring:= EDItebiBuscar.text;
AdoItebiBuscar.ExecSQL;
ShowMessage('Registro Modificado');


'Update Itebis set Itebis:= :Itebis where Itebis:= :itebis';

Esa sentencia tiene DOS parámetros y sólo estás pasándolo Un parámetro.

Piensa en esto:
update tablaTrabajadores set sueldo=2000 where codigotrabajador=25

Como ves, hay DOS parámetros también.

Entonces, si tú quieres cambiar el valor del campo itebis a todos los que cumplan una condición tienes que pasarle los DOS parámetros, por ejemplo:

update TABLAitebis set CAMPOitebis=VALORQUEQUIERAS where CAMPOitebis='XXX'

Si quieres cambiar todos los registros que tengan el valor 'AAA' en el campo itebis, y quieres ponerle el valor 'GGG', entonce sería:
Código Delphi [-]
update itebis set itebis='GGG' where itebis='AAA'
AdoItebiBuscar.Parameters.Params[0].Asstring:=  EDItebiBuscar.text;  <---  VALOR QUE QUIERES PONER
AdoItebiBuscar.Parameters.Params[1].Asstring:=  EDItebiAQuien.text;  <--- A QUÉ REGISTROS SE LOS QUIERES PONER

He puesto Params[0] y Params[1] porque los dos son el mismo campo y puede resultar confuso.

Te aconsejo encarecidamente un tutorial de SQL y además la lectura de un estupendo libro como La cara oculta de delphi.

agustin173 26-06-2010 01:21:40

modificar registro
 
casimiro dejame ver si entendi

update itebis set itebis = editebisbuscar where itebis = editebisbuscar

casimiro hermano no entiendo puedes hacer el codigo para verificar mejor excusame es que no se mucho de programacion

Casimiro Notevi 26-06-2010 01:30:23

Cita:

Empezado por agustin173 (Mensaje 368418)
casimiro dejame ver si entendi

update itebis set itebis = editebisbuscar where itebis = editebisbuscar

¿Yo he puesto eso?

Cita:

Empezado por agustin173 (Mensaje 368418)
casimiro hermano no entiendo puedes hacer el codigo para verificar mejor excusame es que no se mucho de programacion

Te aconsejo encarecidamente un tutorial de SQL y además la lectura de un estupendo libro como La cara oculta de delphi.


Creo que primero de todo debes aclarar PERFECTAMENTE una cosa: ¿Tú qué quieres hacer?

agustin173 26-06-2010 01:44:45

modificar registro
 
por medio a un edit modificar un registro eso es lo que deseo

tengo un edit llamado editebibuscar y deseo modificar el campo itebis de una tabla

y no se como hacerlo

si puedes leer mas arriba veras la estructura de la tabla solo necesito el codigo para modificar ese registro

estoy usando adoquery.

por favor

Casimiro Notevi 26-06-2010 10:45:41

Cita:

Empezado por agustin173 (Mensaje 368425)
por medio a un edit modificar un registro eso es lo que deseo tengo un edit llamado editebibuscar y deseo modificar el campo itebis de una tabla y no se como hacerlo si puedes leer mas arriba veras la estructura de la tabla solo necesito el codigo para modificar ese registro
estoy usando adoquery. por favor

Amigo agustin173, la forma de hacerlo y el código te lo hemos puesto ya varias veces, unos y otros.

Si tú quieres modificar el valor de un campo de un registro, entonces necesitas dos cosas: el valor que quieres darle al campo y el registro que quieres modificar. Son DOS parámetros. Tal y como te lo he explicado antes, para que lo veas con un ejemplo claro, te lo repito:

update tablaTrabajadores set sueldo=2000 where CodigoTrabajador=15
En ese código que he puesto se va a modificar el campo 'sueldo' del registro que corresponde al trabajador que tiene el codigo 15, ¿ok?, son DOS parámetros que necesito pasarle, hay muchas formas de hacerlo, por ejemplo, según tu código sería algo así:
Código Delphi [-]
AdoItebiBuscar.Sql.Text:='Update tablaTrabajadores set Sueldo:= :sueldo where codigo := :codigo';
AdoItebiBuscar.Parameters.ParamByName('sueldo').Asstring:= EditConElNuevoSueldo.text;
AdoItebiBuscar.Parameters.ParamByName('codigo').AsString:=  EditConElCodigoDelTrabajador.text;
AdoItebiBuscar.ExecSQL;
Pues sólo has de adaptarlo a tu código, ya sabes, necesitas el edit con el valor que quieras darle a tu campo y el edit con el valor del registro que quieres modificar, porque si no lo pones entonces modificaría todos los resgistros de la tabla.

Y no es por hacerme pesado, pero te aconsejo encarecidamente un tutorial de SQL y además la lectura de un estupendo libro como La cara oculta de delphi.

agustin173 28-06-2010 13:03:06

Modificar Registro
 
Casimiro muchas gracias ya si funciono

Lo que sucede es que no se programar mucho gracias por tu paciencia y tambien a Azirain por su ayuda.

Casimiro baje el manual de sql y el de delphi que me enviaste lo voy a comenzar a estudiar


muchas gracias a todos.

Casimiro Notevi 28-06-2010 16:33:53

Estupendo, ya nos contarás los progresos que vas haciendo :)

maxzama 07-01-2015 20:16:03

Modificar datos.
 
Hola a todos. Aqui va, un poco de ayuda.

Uso del delphi XE2, y firebir 2.5...

Se utilisa: IBquery...

Campo a modificar: Dias_Trabajados, Monto...

Utilizo un edit donde a sido cargado el dato que se va a modificar. Y tengo un boton de modificar...

Este es el codigo:

if application.MessageBox('DESEA GUARDAR?','guardar un Registro',
MB_ICONQUESTION OR MB_YESNO) = ID_YES then
begin
if Edit3.Text='' then
begin
Showmessage('Debe Incluir el codigo');
end
else
begin
Dmodulo.Asistencia_Madre.SQL.Clear ;
Dmodulo.Asistencia_Madre.SQL.Add('select * from Asistencia_Madre where CEDULA=:A');
Dmodulo.Asistencia_Madre.ParamByName('A').Value:=EDIT3.Text;
Dmodulo.Asistencia_Madre.Open;

if Dmodulo.Asistencia_Madre.FieldByName('CEDULA').AsString<>'' then
begin
Dmodulo.Asistencia_Madre.SQL.Clear ;
Dmodulo.Asistencia_Madre.SQL.Add(' update Asistencia_Madre set Tipo_documento=:Tipo_documento, DIAS_TRABAJADO=:DIAS_TRABAJADO, Monto=:Monto where CEDULA=:CEDULA ');

Dmodulo.Asistencia_Madre.ParamByName('CEDULA').Value:=Edit3.Text;
Dmodulo.Asistencia_Madre.ParamByName('Tipo_documento').Value:=Dmodulo.Asistencia_Madre.FieldByName(' Tipo_documento').AsString;
Dmodulo.Asistencia_Madre.ParamByName('DIAS_TRABAJADO').Value:=Edit4.Text;
Dmodulo.Asistencia_Madre.ParamByName('Monto').Value:=Edit20.Text;


Dmodulo.Asistencia_Madre.ExecSQL;
Dmodulo.ibt.Commit;
Dmodulo.Asistencia_Madre.SQL.Clear ;
Dmodulo.Asistencia_Madre.SQL.Add('select * from Asistencia_Madre ');
Dmodulo.Asistencia_Madre.Open;
SHOWMESSAGE('A sido Modificado');
end;
end;
end;
_______________________

Espero que le sirva.Dlb...

Casimiro Notevi 07-01-2015 20:51:57

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

maxzama 07-01-2015 21:05:20

Agradecer
 
Gracias, por el dato...

Código Delphi [-]
// Esta noche estare montando, Sierta información. Para que me ayuden. Pr Fvr y Grcs...


La franja horaria es GMT +2. Ahora son las 08:17:17.

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