Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
Campo no Entry

Hola de nuevo, tengo otra duda, alguien sabe como se puede hacer en firebird que un campo de una tabla sea no entry? es decir que el usuario pueda ver el valor que tiene el campo pero no poderlo modificar (no vale una view ya que los demas campos de las tablas si se podra operar con ellos).

Por ejemplo, supongamos que tenemos una factura y esta tiene un estado, el importe de la factura etc etc sera ingresado por el usuario pero quisiera que el estado se cambiara de forma automatica de tal forma que al grabar la factura el estado sea "grabado" por ejemplo y que cuando se contabilice la factura el estado pase a "contabilizado" pero que en ningun momento el usuario pueda tocar ese valor.

Si alguien tiene alguna idea de nuevo gracias
Responder Con Cita
  #2  
Antiguo 19-08-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Cita:
Empezado por berfer
Hola de nuevo, tengo otra duda, alguien sabe como se puede hacer en firebird que un campo de una tabla sea no entry? es decir que el usuario pueda ver el valor que tiene el campo pero no poderlo modificar (no vale una view ya que los demas campos de las tablas si se podra operar con ellos).

Por ejemplo, supongamos que tenemos una factura y esta tiene un estado, el importe de la factura etc etc sera ingresado por el usuario pero quisiera que el estado se cambiara de forma automatica de tal forma que al grabar la factura el estado sea "grabado" por ejemplo y que cuando se contabilice la factura el estado pase a "contabilizado" pero que en ningun momento el usuario pueda tocar ese valor.

Si alguien tiene alguna idea de nuevo gracias
Si no quieres que modifiquen algún campo dentro del dbGrid, dale doble clic sobre dicho dbgrid y te saldrá una ventana donde tienes agregados los campos a visualizar, selecciona el IMPORTE y en las propiedades de este mismo tiene una que se llama ReadOnly cambiasela a TRUE y LISTO....

Lo que no entiendo es a que te refieres a cambio de estados de Grabado a Contabilizado????
Responder Con Cita
  #3  
Antiguo 20-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
Perdona pero no acabo de entender la respuesta que me diste, tal vez me falto decir que trabajo con ibexpert por lo que no veo esa opcion que dices donde supuestamente salen los campos que muestro por pantalla.

En cuanto a lo de pasar de grabado a contabilizado no era mas que un ejemplo.


Gracias.
Responder Con Cita
  #4  
Antiguo 20-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El que no acaba de entender el problema soy yo.

Si tú defines un campo, pero se lo muestras al usuario en un label, ¿como puede el usuario modificar el valor?

Si lo tienes en un Grid, como dice AGAG4 basta con poner ese campo a ReadOnly para que no pueda modificarlo.

Si el usuario sabe sql y le das la herramienta oportuna o le instalas el IBExpert, podrá cambiar el valor, pero con tu programa será imposible. Es más, siempre hay que dejar "una puerta abierta" para que en caso de fallos se pueda arreglar un deshaguisado.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 21-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
Perdona pero es que no esta en un grid o al menos que yo sepa, mas que nada porque no se que es eso de un grip. Si eres tan amable por favor explicame que es un grid que a lo mejor pasa por alli la solucion.
Responder Con Cita
  #6  
Antiguo 21-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Grid, grilla, rejilla de datos o su nombre técnico de la paleta de componentes (dbcontrols) que es TDBGRID.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 21-08-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto...

Para que te quede más claro, cuando le das un clic sobre la pestaña DATA en alguna TABLA del IBExpert, te aparecen los datos de las tablas en "CELDAS" a eso se le llama GRID.
Responder Con Cita
  #8  
Antiguo 21-08-2006
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 21
jacanche Va por buen camino
Hola si lo que quieres es que desde la base de datos esten las restricciones, puedes usar el grant.

Código SQL [-]
grant select,delete,insert on nombre_tabla to nom_usuario
grant update (campo1,campo2,...,campon) on nombre_tabla to nom_usuario

la primera le da derechos al usuario para agregar, borrar o visualizar los registros, la segunda permite que le des autorizacion al usuario para modificar solo algunas columnas.

el unico detalle que aqui veo es que si tu programa usa esa cuenta de usuario para hacer las operaciones tampoco va a poder modificar el campo.

Si no te funciona comenta un poco mas como tienes la estructura o que quieres hacer
__________________
Saludos

Alfredo
Responder Con Cita
  #9  
Antiguo 21-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
Hola jacanche:

Tengo esta estructura de tabla,
(codigo)
CREATE TABLE AARTICUL (
CODART CHAR(13) NOT NULL,
NOMART VARCHAR(80) NOT NULL,
FAMILI CHAR(5) NOT NULL,
SUBFAM CHAR(3) NOT NULL,
PRECIO NUMERIC(15,2) NOT NULL,
IVAVEN CHAR(3) NOT NULL,
RETVEN CHAR(3),
DTOVEN NUMERIC(6,2) NOT NULL,
IVACOM CHAR(3) NOT NULL,
RETCOM CHAR(3),
DTOCOM NUMERIC(6,2) NOT NULL,
USER_CREATED CHAR(20) NOT NULL,
DATE_CREATED DATE NOT NULL,
USER_UPDATED CHAR(20) NOT NULL,
DATE_UPDATED DATE NOT NULL
);


/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE AARTICUL ADD CONSTRAINT PK_AARTICUL PRIMARY KEY (CODART);

/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL FOREIGN KEY (FAMILI) REFERENCES AFAMILIA (CODIGO);
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL1 FOREIGN KEY (SUBFAM, FAMILI) REFERENCES ASUBFAMI (CODIGO, CODFAM);
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL2 FOREIGN KEY (IVAVEN) REFERENCES ATIPOIMP (CODIGO);
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL3 FOREIGN KEY (RETVEN) REFERENCES ATIPOIMP (CODIGO);
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL4 FOREIGN KEY (IVACOM) REFERENCES ATIPOIMP (CODIGO);
ALTER TABLE AARTICUL ADD CONSTRAINT FK_AARTICUL5 FOREIGN KEY (RETCOM) REFERENCES ATIPOIMP (CODIGO);

/******************************************************************************/
/**** Triggers ****/
/******************************************************************************/

SET TERM ^ ;


/* Trigger: AARTICUL_BI0 */
CREATE TRIGGER AARTICUL_BI0 FOR AARTICUL
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.user_created is null) then
new.user_created= user;
if (new.user_updated is null) then
new.user_updated = user;
if(new.date_created is null) then
new.date_created = 'NOW';
if(new.date_updated is null) then
new.date_updated = 'NOW';
end
^
/* Trigger: AARTICUL_BU */
CREATE TRIGGER AARTICUL_BU FOR AARTICUL
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
new.user_updated= user;
new.date_updated='NOW';
end
^

SET TERM ; ^

(/codigo)

Entonces como puedes ver tanto el usuario que crea el registro como la fecha de creacion y el usuario que modifica y la fecha en la cual es modificado lo controlo por un disparador, pero resulta que si meto los datos de forma manual en ibexper me deja tocar esos campos cuando yo no quiero que el usuario pueda hacer nada sobre ellos.

La solucion que me dabas del grant insert etc etc es buena pero tiene el problema que tu mismo has podido ver, que me daria un fallo al lanzar el disparador.

Si se te ocurre alguna otra cosa pues te agradeceria que me dijeras.

Espero que con la estructura de la tabla todos podamos entender un poco mejor cual es mi problema, gracias.
Responder Con Cita
  #10  
Antiguo 22-08-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto...

Y porque no les quitas el IBEXPERT a los Usuarios ????
Tu eres el desarrollador????
Hay más desarrolladores a quienes no puedes confiar????
Responder Con Cita
  #11  
Antiguo 22-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
La idea es esa, acabar quitando el ibexpert a los usuarios pero para ello deberia de crear una aplicacion que atacase a la base de datos y claro me lleva un determinado tiempo, por lo cual mi idea era que primero aunque fuese de una forma menos comoda el usuario trabajase directamente con ibexpert mientras yo desarrollo el entorno y asi no hacerles perder tiempo en la espera hasta que les desarrolle el producto final.
Responder Con Cita
  #12  
Antiguo 22-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Desde mi punto de vista.... Mala idea, muy mala idea. Si tienen prisa, que te hubieran contratado antes. El albañil no te pone su propia casa (o la de sus proveedores)a tu disposición mientras construyen la tuya.

Lo que pides no puede hacerse y es más, si le das el Ib Expert, despues te pedirán muchas de las características de Ib Expert en el programa que estas haciendo. Espero por tanto, que sepas crear un clon de Ib Expert.

No quiero parecer antipático con este mensaje, es que la realidad es así, lo que ven los usuarios, es lo que piden, y tú le estas dejando usar una herramienta para programadores.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 22-08-2006
berfer berfer is offline
Miembro
 
Registrado: ago 2006
Posts: 35
Poder: 0
berfer Va por buen camino
Hola Lepe, tienes razon en eso que me dices que luego me pediran cosas de ibexpert, pero bueno como todo tiene su parte buena y mala, por un lado de momento no me queda otra que dejarles que usen ibexpert, su parte buena es que si luego me piden cosas que esten fuera del proyecto como funcionalidades de ibexpert pues seran facturadas de forma independiente con lo cual tampoco me preocupa mucho que me pidan cosas, es mas cuanto mas me pidan mejor, asi podre ganarme unos dinerillos de mas
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
mysql no me permite agregar registros como duplicate entry.. Arturo MySQL 1 24-07-2006 19:15:39
Pasar un campo calculado a un campo del mismo DbGrid maravert Conexión con bases de datos 3 12-05-2006 00:31:30
Error (Duplicate Entry) romansiux Varios 4 31-05-2005 02:17:28
UPDATE de un campo dependiendo del valor de un campo de otra tabla Javi2 SQL 5 18-04-2005 16:35:05
Invalid key links entry?? nefy Firebird e Interbase 8 12-05-2004 17:06:21


La franja horaria es GMT +2. Ahora son las 15:50:27.


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