Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Filtros para un TTable

Saludos, tengo la siguiente inquietud:

actualmente estoy conectado a una base de datos Oracle y cuando inserto un registro en una tabla... por medio del DBGrid (correspondiente a la tabla) aparecen los registros ya almacenados anteriormente.

Lo que necesito hacer esque cuando se quiera insertar un registro no aparezcan todos los registros que contiene la tabla en el dbgrid, solamente que aparezca el dbgrid limpio, simulando que fuera una tabla vacia.

e intentado con unos filtros pero no se como usarlos adecuadamente para lo q necesito.

les agradeceria una pronta respuesta
Responder Con Cita
  #2  
Antiguo 07-03-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Lo que deseas realizar en un principio no es posible pues la rejilla al estar conectada a una fuente de datos, te mostrara todo los datos de esa fuente, quizás si le colocas un filtro "imposible", puedas lograr lo que deseas, es decir poner a la fuente de datos un filtro que de antemano sepas no se puede cumplir, en este caso no aparecerá nada y podras dar un alta con ese efecto que persigues.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
como hacer un filtro

mira.

la idea general es la siguiente:

en el form tengo un DBGrid, un Booton para Insertar, uno para Cancelar. al clic en el boton insertar se debe activar el filtro que me muestre el dbgrid limpio, simulando que fuera una tabla vacia.

intente añadir un filtro al origen de datos del dbgrid (TTable), asegurándo de que nunca lo pueda cumplir ningún registro.

Lo intente apliacando en el evento BeforeInsert del TTable y lo quitas en el evento AfterPost del TTable. Es una forma rápida de simular lo que nos indicas.

poniendo la inquietud en otros terminos mi pregunta es:

como se hace un filtro a un table y el resultado me lo muestre en una DBGrid.

saludos

les agradeceria una pronta respuesta
Responder Con Cita
  #4  
Antiguo 07-03-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Usando un Ttable quedaría así:

Código Delphi [-]
Table1.Filter:='Codigo = 430999';
Table1.Filtered:=True;

(Se supone que ese código no existe)

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
primero gracias por responder rapidamente

entonces..
lo que hice fue lo siguiente.
Puse la propiedad Active de TTable a True con esto me muestra lo que hay en la tabla en el DBGrid. ahora en el Booton1 inserte el siguiente codigo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Table1.Filter:= 'CONSECUTIVO_CONFIGURACION = 430999';
  Table1.Filtered:= True;
  Table1.Refresh;
  table1.Insert;
end;

y en el booton2 inserte:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  table1.Filtered := false;
  table1.refresh
end;

con eso entonces lo que sucese es q al ejecutar el projecto me muestra el DBGrid con los registros que hay en la tabla.

al dar clic en el booton1 primero me lanza un error diciendo "Operation not applicable" le doy "Ok" y me muestra el DBGrid tal como lo quiero.

puedo digitar los campos, pero al dar en insertar del DBNavigator lansa el mismo error "Operation not applicable" pero si me lo guarda en la base de datos.

y no me permite ingresar otro ni mucho menos me muestra una nueva fila en el dbgrid.

otra cuestion despues de activar el filtro y antes de digitar los registros tengo la oportunida de anular el filtro dando clic en el 2 boton.


asi q mi inquientud radica en como puedo anular ese mensaje de error y como hago par q el DBGrid me muestre una nueva fila.

que pena por tanta molestia pero les agradeceria una pronta respuesta.

o no se si conocen otra forma de ingresar nuevos registros a una Base de Datos por medio de un DBGrid pero sin mostrar los datos existentes en la tabla.
Responder Con Cita
  #6  
Antiguo 07-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
utiliza una tabla de memoria, y en el afterpost vacias el ultimo registro ingresado.
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
como vacio el ultimo registro

saludos
Responder Con Cita
  #8  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
lo q pasa es lo siguiente quiero q el usuario tenga la opcion de ir ingresando mas datos por eso al guardar el ultimo dato y dar tecla tabuladora o con el DBNavigator me muestre una nueva fila para seguir digitando.

repito si alguien sabe o conoce otra posibilidad de realizar esto se le agradeceria.

saludos
agradeceria una pronta respuesta
Responder Con Cita
  #9  
Antiguo 07-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Repito, deberias trabajar con tablas en memoria, yo utilizo las KbMemTable, y para lograr vaciarlos puedes trabajar con SavetoDataSet
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #10  
Antiguo 07-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La opcion de Eduarcol es correcta, crear una tabla en memoria o tambien crear una tabla temporal (para mi la mejor opcion) ya que cuando se este seguro de que lo que se coloco es lo correcto se podria hacer el post a la tabla original.
Ahora pregunto:
Por que usar un dbgrid y no, o los dbedit, o edit sencillos?
La opción de marcoszorrilla es por supuesto correcta, genera un filtro de un producto inexistente, osea el dbgrid quedara vació, pero la tabla, no se, si se podrá seguir editando.
Me parece que hacer un filtro es innecesario (en este caso) ademas de que hace lento el programa cuando hay muchos registros.
Yo me iría por la opción de los edits.
Saludos
Responder Con Cita
  #11  
Antiguo 07-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
hola y gracias por la respuesta.

mi idea original era usar edit para captuarar los datos ya que necesito hacer otro tipo de validaciones y formulas que no tengo la menor idea como hacerlas en un DBGrid.

el caso es q la idea ya fue planeada y en ese caso tengo q seguir trabajando en este hasta q no aprueven el cambio de conceptos.

por otro lado me gustaria saber como crear una tabla temporal que me permita suguir ingresando mas registros.

saludos
Responder Con Cita
  #12  
Antiguo 07-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Idea adicional y mas sencilla.
Coloca un PageControl y genera dos paginas.
En la primera coloca los edits que necesites para llenar los datos (tambien podrias colocar un dbgrid, tal vez, no lo he probado).
En cuanto tengas el dato lo pasas a la segunda pagina en donde con un dbgrid podras ver los registros que incluyas, con una sentencia sql a la tabla.
Es muy parecido al tutorial de facturacion que hay en el wiki.
Saludos
Responder Con Cita
  #13  
Antiguo 08-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
ok gracias.

el aplicativo se trabaja dentro de un PageControl y la idea es adicionar datos a la BD por ahora con DBGrid o con EDit y luego eso u otros datos de la base de datos puedan ser consultados y mostrados en un DBGrid para luego ser modificados.

gracias a todos culaquir inquietud les estare consultanto
saludos
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
Filtros sobre Filtros en Paradox Fabricio Tablas planas 9 03-04-2007 18:40:36
componente para buscar datos en una TTable o TQuery component gmontes OOP 4 30-10-2006 22:31:16
un TTable para cada proceso ? elcigarra Conexión con bases de datos 3 12-01-2006 23:33:53
Componente para la creacion de filtros jfk76 OOP 0 10-12-2004 00:27:24
qreport para varias TTable seken Impresión 1 16-09-2003 19:58:12


La franja horaria es GMT +2. Ahora son las 13:05:14.


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