Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 mRoman.

En este caso el problema no lo ocasiona Firebird sino el componente, que cuando aplica el update lo hace sobre todo el registro. De ese modo incluye aquellos campos sobre los que el usuario no posee el privilegio de la acción y de allí que se eleva la excepción.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 13-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 de nuevo.

Para demostrar con un ejemplo lo que te menciono arriba, supongamos una hipotética tabla:
Código SQL [-]
CREATE TABLE VENTAS (
    ID         INTEGER,
    PRODUCTO   VARCHAR(30),
    CANTIDAD   INTEGER,
    PRECIO     NUMERIC(18, 6),
    FECHA      DATE,
    FECHAHORA  TIMESTAMP
);
y que el excelente y nunca bién ponderado empleado "PEREZ", ha iniciado sesión con estos privilegios:
Código SQL [-]
GRANT SELECT, INSERT, UPDATE(CANTIDAD) ON VENTAS TO PEREZ;

Si ejecuta esta consulta:
Código Delphi [-]
...
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE VENTAS SET CANTIDAD = :PCANT');
    SQL.Add('WHERE ID = 1');  // una condición de ejemplo
    IBQuery1.ParamByName('PCANT').AsInteger := StrToInt(Edit1.text);
    ExecSQL;
  end;
end;
No va a tener ningun problema.

pero si intenta hacer:
Código Delphi [-]
...
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE VENTAS SET PRECIO = :PPREC');
    SQL.Add('WHERE ID = 1'); // una condición de ejemplo
    IBQuery1.ParamByName('PPREC').AsCurrency:= StrToFloat(Edit1.text);
    ExecSQL;
  end;
end;
va a obtener un bonito mensaje: "No permission for update/write access to column VENTAS.PRECIO"

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 18-12-2013
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 646
Poder: 23
mRoman Va por buen camino
Sql

Gracias ecfisa por tus respuestas y una disculpa por no haber contestado antes tus post.

Me queda claro con tus ejemplos lo que esta pasando. Entonces quiere decir que si a tu primer query (el cual lo reescribo nuevamente), le agrego el campo de PRECIO....que pasaria?

Si ejecuta esta consulta:
Código Delphi [-]
...
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE VENTAS SET CANTIDAD = :PCANT, PRECIO = :PPREC');
    SQL.Add('WHERE ID = 1');  // una condición de ejemplo
    IBQuery1.ParamByName('PCANT').AsInteger := StrToInt(Edit1.text);
    IBQuery1.ParamByName('PPREC').AsInteger:=StrToInt(Edit2.text);
    ExecSQL;
  end;
end;


AHORA SI HABRÁ PROBLEMA!?...QUE OTRA SOLUCION PUDIERA EXISTIR....un componente IBQuery por cada campo?....ups....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 18-12-2013 a las 05:57:25.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
trigger a nivel de campo carlomagno Firebird e Interbase 19 23-06-2011 17:39:49
¿En que nivel estoy? - ¿En que nivel estas? movorack Varios 46 20-06-2008 21:19:26
jedi cvs: manejar versiones a nivel módulo y a nivel proyecto pvizcay Varios 3 17-04-2007 16:17:59
grant / revoke en oracle a nivel columna avmm2004 Oracle 5 14-10-2006 17:55:33
Validación a nivel de campo Luis Conexión con bases de datos 3 25-07-2004 13:48:53


La franja horaria es GMT +2. Ahora son las 13:33:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi