Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 21
Colgueit Va por buen camino
Paradox.

A ver si al final se consigue resolver...
Responder Con Cita
  #2  
Antiguo 16-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 21
waltergomez Va por buen camino
Tengo una solucion pero no funciona si usas la barra de scroll. Tampoco me puse a ver muy profundo. Peor es nada

Código Delphi [-]
  TMalditaGrilla = class(TDBGrid)
  public
    FPos : integer;
    procedure Scroll(Distance: Integer); override; // Este metodo es  Progido !!! 
 end;

  TForm1 = class(TForm)
    Database1: TDatabase;
    Table1: TTable;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    FMalditaGrilla : TMalditaGrilla;
    FCTR : integer;
  end;



var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  Table1.Filtered := false;
  Table1.Filter := 'empno > 20';
  Table1.Filtered := true;
  Table1.First;
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  Check(DbiGetExactRecordCount(Table1.Handle, FCTR));
  showmessage(inttostr(FMalditaGrilla.FPos + 1)+' / '+inttostr(FCTR));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMalditaGrilla := TMalditaGrilla.Create(self);
  FMalditaGrilla.DataSource := DataSource1;
  FMalditaGrilla.FPos := 0;
end;

procedure TMalditaGrilla.Scroll(Distance: Integer);
begin
  inherited Scroll(Distance);
  FPos := FPos + Distance;
end;

Lo que hace uno por un brindis. jajajaj
Responder Con Cita
  #3  
Antiguo 16-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 21
Colgueit Va por buen camino
Unhappy Y tampoco

Lo he probado minuciosamente, y pasa igual que con todos, en el caso de estar la tabla filtrada no funciona, me da el numero de la fila en la tabla no filtrada. Ya me estoy desesperando bastante jeje.

De todas formas, waltergomez, muchisimas gracias por tu interes y tu ayuda!!!!!!!!!!!!!!!! no se como agredacertelo que creo q con solo darte las gracias me quedo muy corto .

Bueno pues seguire intentandolo, el que la sigue la consigue

Un Saludo!!
Responder Con Cita
  #4  
Antiguo 16-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una pregunta: ¿para qué quieres este número de registro? Como ya habrás notado, aun con un mismo filtrado, tal número cambiará conforme se agreguen, modifiquen o eliminen registros.

// Saludos
Responder Con Cita
  #5  
Antiguo 16-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 21
Colgueit Va por buen camino
Lo conseguire?

Pues simplemente lo quiero porque quiero mostrar debajo de los DBgrids un campo de texto que ponga "Registro 20 de 100" y cada vez que mueva (calculandolo de nuevo en la propiedad OnDrawColumnCell del grid) que calcule de nuevo el valor, es decir si muevo a la siguiente fila que aparezca "Registro 21 de 100", solo es cuestión de estética, pero me gustaria hacerlo.

En el ejemplo que he puesto el 20 será el registro numero 20 dentro del Grid (pero no solo de los visibles, por eso "TStringGrid(DBGridPedidos).Row no me sirve")

El Numero maximo lo hayo bien, y el numero de registro funciona bien aunque borre, modifique o agregue registros, solo falla en el caso de filtrar la tabla. Ya que lo que quiero en realidad es la posicion del registro en el grid entero (incluidas las filas no visibles).

Pero bueno, ya para dejarlo mas claro, adjunto imagen de lo que estoy haciendo. En la imagen debajo del grid entre las flechas del navegador aparece el contador del que hablo.

Gracias otra vez por vuestro interes.
Archivos Adjuntos
Tipo de Archivo: zip Grid.zip (13,7 KB, 41 visitas)

Última edición por Colgueit fecha: 16-05-2006 a las 03:14:18.
Responder Con Cita
  #6  
Antiguo 16-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 21
Colgueit Va por buen camino
Unhappy

¿Nadie sabe hacerlo?

Un saludo!
Responder Con Cita
  #7  
Antiguo 16-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Es que no creo que sea algo fácil. No me atrevo a decir que sea imposible pero velo desde esta perspectiva:

Hacer algo como lo que quieres requiere conocer de una u otra forma la posición exacta de un registro dentro del conjunto de resultados. Cuando conectas el dbgrid a una tabla paradox, la barra de desplazamiento refleja esta posición actual en la tabla. Sin embargo, apenas pones un filtro en la tabla, la barra sólo toma tres posibles posiciones: al principio, en medio y al final. Esto es, los mismos diseñadores de la vcl no encontraron una manera precisa de reflejar la posición dentro de una tabla filtrada.

Así pues, lo único que a mi se me ocurre es insertar un ClientDataSet entre el dbgrid y el table que uses:

Table->DataSetProvider->ClientDataSet->DataSource->DbGrid

aunque esto puede implicar uno que otro cambio en la forma en que actualizas la información en la base pues requieres hacer uso de ClientDataSet.ApplyUpdates además del Post usual.

// Saludos
Responder Con Cita
  #8  
Antiguo 17-05-2006
Avatar de waltergomez
waltergomez waltergomez is offline
Miembro
 
Registrado: may 2006
Posts: 202
Poder: 21
waltergomez Va por buen camino
Hola Colgueit,

Me sorprende que lo ultimo que te pase no funcione dado que a mi si me funciona perfectamente, y lo unico que no ofunciona es cuando en la grilla te moves con las barras de scroll.
La funcion DbiGetExactRecordCount devuelve en forma exacta la cantidad de registros filtrados y al publicar el metodo protegido Scroll podes llevar la cuenta en el ejemplo al hacer doble click en la grilla me muestra de registro de la forma x/XXX.
Y use paradox por las dudas.
salu2,
Responder Con Cita
  #9  
Antiguo 17-05-2006
mariofur mariofur is offline
No confirmado
 
Registrado: ene 2003
Posts: 31
Poder: 0
mariofur Va por buen camino
Si trabajas con la tabla paradox, que tal si añades uun campo incremental a la tabla y luego utilizas el valor de dicho campo con FieldValues por ejemplo?

Yo lo hago habitualmente.

Espero haberte ayudado.
Responder Con Cita
  #10  
Antiguo 17-05-2006
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 25
José Luis Garcí Va camino a la fama
Colgueit, una pregunta es solo para hacer consultas?
Si la respuesta es correcta y la memoria no me falla, podras crear una tabla temporal, copiada de la original, añadiendo un campo, supongamos que lo llamamos "posiscion", leemos registro por registro y en cada registro añadimos un numero que iremos cogiendo de un contador incremental. Si tabla esta filtrada hacemos lo mismo una vez la original este filtrada. ahora deberia funcionarte.

EJjemplo teorico

tabla original 100 registros/ tabla temporal 100 registros
Resultado del filtro 10 de 100 registros / tabla temporal de los filtrados 10 de 10 registros (sólo) los filtrados

Comentarte que recuerdo haber hecho algo parecido, pero hace tiempo que no trabajo programando y estoy volviendo a casí empezar. Ten encuenta que si la tabla es muy grande puede tardar un rato en mostrar el resultado.

Espero te sirva y un saludo desde Canarias

Última edición por José Luis Garcí fecha: 17-05-2006 a las 16:04:21.
Responder Con Cita
  #11  
Antiguo 16-03-2007
PINO72 PINO72 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Málaga - España
Posts: 40
Poder: 0
PINO72 Va por buen camino
Smile Posible solución

Hola,
Después de lo que habeis dicho anteriormente, creo tener la solución...
Tuve el mismo problema utilizando un DBGrid para controlar el detalle de las facturas en la aplicación que estoy desarrollando, aunque lo mio fué problema de controlar la actualización del nº de linea de cada una de las partidas en caso de que se suprimieran, añadieran o actualizaran.

Terminé por utilizar un ClientDataSet y un DataSetProvider asociado a la tabla de lineas. Controlé la actualización de los números de linea mediante la indexación del clientdataset por este campo y todo empezó a ir bien.

Todo este rollo es para comentaros que la actualización fué bien porque en todo momento el valor del campo Recno tomaba el de la linea real dentro del cuerpo de la factura, esto es, cuando se insertaba una linea en la fila dos del DBGrid(Asociado al DataSet del ClientDataSet) la fila actual pasaba a ser la tres y así sucesivamente. En cuando a la supresión, ocurría de manera correcta.

Por tanto, en teoría deberías poder conseguir el nº de registros actual del DBGrid, consultando despues de un Last a la tabla ClientDataSet el valor Recno que te devuelva. No sé si me entiendes... ya que este valor se actualiza automáticamente cada vez que añades o suprimes registros en la tabla.

Espero haber entendido tu problema ...


Saludos.
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
Mostrar numero de fila DBGrid danielcordovahe Varios 2 20-09-2005 01:00:21
Fila del DbGrid Rabata Varios 3 08-11-2004 22:18:13
Número de Fila en Report Manager KayserSoze Impresión 1 20-02-2004 20:57:11
numero de fila en dbgrid manu Varios 5 18-12-2003 21:06:14
Numero de fila en TSQLDataSet andre Conexión con bases de datos 2 26-06-2003 16:52:42


La franja horaria es GMT +2. Ahora son las 12:28:23.


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