Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
problema con upDate

HOla, tengo una tabla TurnoCliente compuesta por: ID_turnoCliente, Id_turno, Id_cliente.


el Problema surge al intentar actualizar un campo de la tabla TurnoCliente.

Debo actualizar el campo "id_cliente" de la tabla TurnoCliente cuando "IdTurno" sea igual a la variable "turno".

este es el procedimiento que utilizo pero me salta error de sintaxis.

alguna ayuda por favor?! se agradece nuevamente!!

Código Delphi [-]
procedure Insertar_EnturnoCliente_IdTurno(queryturnoCliente:TADOQuery;turno,cliente:Integer);
begin
 with queryturnoCliente do
    begin
     Close;
     sql.clear;
     sql.Add('update TurnoCliente set Id_turno ='+turno' where (id_turno='+(turno)');
     Parameters.ParamByName('ID_cliente').Value:=cliente;
     ExecSQL;
    end;
end;
Responder Con Cita
  #2  
Antiguo 29-06-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola maxi915.

Segun lo que solicitas,
Cita:
Empezado por maxi915 Ver Mensaje
...
Debo actualizar el campo "id_cliente" de la tabla TurnoCliente cuando "IdTurno" sea igual a la variable "turno".
...
la consulta debería ser:
Código Delphi [-]
procedure UpdateCustomerTurn(Qry: TADOQuery; const TurnId, CustId: Integer);
begin
  with Qry do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE TURNOCLIENTE SET ID_CLIENTE = :CUSTID');
    SQL.Add('WHERE IDTURNO = :TURNID');
    Parameters.ParamByName('CUSTID').Value:= CustId;
    Parameters.ParamByName('TURNID').Value:= TurnId;
    ExecSQL;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La cara oculta de Delphi
Responder Con Cita
  #4  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
me tira el siguiente error:

no se han especificado valores para algunos de los parametros requeridos
Responder Con Cita
  #5  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
utilizando este tipo de consulta tambien deberia actualizarse el campo, el problema es que no conozco la sintaxis correcta.

Código Delphi [-]
with queryturnoCliente do
    begin
     Close;
     sql.clear;
     sql.Add('update TurnoCliente set Id_turno ='+turno' where (id_turno='+(turno)'); //problema de comillas o puntos en la sintaxis
     Parameters.ParamByName('ID_cliente').Value:=cliente;
     ExecSQL;
    end;
Responder Con Cita
  #6  
Antiguo 29-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya te lo ha explicado ecfisa, muy acertadamente, por cierto.
Responder Con Cita
  #7  
Antiguo 29-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por maxi915 Ver Mensaje
el problema es que no conozco la sintaxis correcta.
Cita:
Empezado por Casimiro Notevi Ver Mensaje



.
Responder Con Cita
  #8  
Antiguo 29-06-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola maxi915.
Cita:
Empezado por maxi915 Ver Mensaje
me tira el siguiente error:

no se han especificado valores para algunos de los parametros requeridos
Con seguridad sucede lo que te dijeron aquí (y lee lo que te sugiere Casimiro )

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 30-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
Solucionado!

Código Delphi [-]
procedure actualizardisponibilidad(QueryTurnos:TADOQuery; turno:Integer; lugares:Integer);
Begin
   with QueryTurnos do
    begin
     Close;
     sql.clear;
     sql.Add('update turnos set disponibilidad ='+inttostr(lugares)+' where id_turno='+IntToStr(turno));//sintaxis correcta
     ExecSQL;
    end;
end;
Responder Con Cita
  #10  
Antiguo 30-06-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola maxi915.

Primero que nada me alegra solucionaras tu problema .

Pero considero apropiado hacer nuevamente esta observación:

Siendo QueryTurnos de tipo TADOQuery y las variables Lugares y Turno de tipo integer, los siguientes códigos:
1)
Código Delphi [-]
  with QueryTurnos do
  begin
    Close;
    sql.clear;
    sql.Add('update turnos set disponibilidad ='+inttostr(lugares)+' where id_turno='+IntToStr(turno));//sintaxis correcta
    ExecSQL;
  end;
2)
Código Delphi [-]
  with QueryTurnos do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE TURNOS SET DISPONIBILIDAD = :DISP');
    SQL.Add('WHERE ID_TURNO = :TURNO'); // sintáxis correcta (y aconsejada)
    Parameters.ParamByName('DISP').Value:= Lugares; 
    Parameters.ParamByName('TURNO').Value:= Turno;
    ExecSQL;
  end;
provocan el mismo resultado final. (Ambos modifican el valor de la columna DISPONIBILIDAD de acuerdo a una condición)

Pero las implicancias que trae aparejado usar un método o el otro son muy diferentes...

El primero deja la puerta abierta a los ataques de Inyección SQL. Siempre que sea posible es aconsejable usar el segundo modo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 30-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
es aconsejable usar el segundo modo.
Responder Con Cita
  #12  
Antiguo 04-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
gracias por el consejo!!!
Responder Con Cita
  #13  
Antiguo 04-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
tengo una duda mas con el update y tipo fecha, necesito actualizar esto:
cambiar fechaInscripcion, por la variable fecha.

Código Delphi [-]
procedure actualizarFechaPago(Queryclientes:TADOQuery; id_cliente:integer; fecha:string);
Begin
   with Queryclientes do
    begin
     Close;
     sql.clear;
     sql.Add('update Clientes set FechaInscripcion ='+(fecha)+' where id_cliente='+IntToStr(id_cliente));
     ExecSQL;
    end;
end;

Responder Con Cita
  #14  
Antiguo 04-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Haciéndolo como se te ha aconsejado, con parámetros, no tendrías ningún problema con eso
Responder Con Cita
  #15  
Antiguo 04-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
perfecto lo voy a probar..ahora que seria la variable "DISP", y el simbolo "=:"...gracias

Código Delphi [-]
  with QueryTurnos do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE TURNOS SET DISPONIBILIDAD = ISP');
    SQL.Add('WHERE ID_TURNO = :TURNO'); // sintáxis correcta (y aconsejada)
    Parameters.ParamByName('DISP').Value:= Lugares; 
    Parameters.ParamByName('TURNO').Value:= Turno;
    ExecSQL;
  end;
Responder Con Cita
  #16  
Antiguo 04-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
Este es mi codigo y me tira error parametro fechaInscripcion not found....

Código Delphi [-]
procedure actualizarFechaPago(Queryclientes:TADOQuery; id_cliente:integer; fecha:string);
Begin
   with Queryclientes do
    begin
     Close;
     sql.clear;
     SQL.Add('UPDATE Clientes SET fechaInscripcion = :fecha');
    SQL.Add('WHERE ID_Cliente = :id_cliente');
    Parameters.ParamByName('fechainscripcion').Value:= fecha;
    ExecSQL;
     ExecSQL;
    end;
end;
Responder Con Cita
  #17  
Antiguo 05-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por maxi915 Ver Mensaje
Este es mi codigo y me tira error parametro fechaInscripcion not found....
El error es claro y correcto (parámetro 'fechaInscripcion' no encontrado).

Fijate que en tu código SQL declaras como nombre de parámetro a fecha (*). Sin embargo en ParamByName, intentas hacer referencia a él como fechainscripcion siendo este último el nombre de la columna que deseas modificar...

Lo sintácticamente correcto sería:
Código Delphi [-]
  with Queryclientes do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE Clientes SET fechaInscripcion = :fecha');
    SQL.Add('WHERE ID_Cliente = :id_cliente');
    Parameters.ParamByName('fecha').Value:= fecha;
    Parameters.ParamByName('id_cliente').Value:= una_variable_o_valor;
    ExecSQL;
  end;

Saludos

(*) Dentro del código SQL los parámetros se distinguen por estar precedidos por dos puntos ':'.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #18  
Antiguo 05-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
Un millon de gracias, era justamente ese el problema!!!
errores basicos que se comenten...al no entender bien la sintaxis sql y delphi
Responder Con Cita
  #19  
Antiguo 05-07-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
seria muy util una guia donde detalle todo los tipos de consultas con sus variaciones, y demas, por ejemplo seleccionar todos los registros que cumplan ciertas condiciones...etc...pero bueno sera cuestion de buscar y encontrar algo lo que se necesita porque dudo que exista algo tan detallado
Responder Con Cita
  #20  
Antiguo 05-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
http://terawiki.clubdelphi.com/Delph...phi_4_pdf_.zip
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Update NISOTO Firebird e Interbase 7 01-03-2014 21:02:47
Problema con el UPDATE XcamX Conexión con bases de datos 12 21-12-2010 00:32:48
Problema con update agustin173 Varios 3 26-10-2010 00:22:11
Problema con sql Update juanpe Firebird e Interbase 3 04-09-2008 12:31:00
Problema con un update en un SP RONPABLO Firebird e Interbase 3 09-03-2005 19:58:43


La franja horaria es GMT +2. Ahora son las 22:15:58.


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
Copyright 1996-2007 Club Delphi