Ver la Versión Completa : Nro de fila en TDBGrid
lucasarts_18
04-06-2005, 19:46:00
Hola a todos:
Cómo puedo saber en que número de fila estoy parado en un DBGrid y cuantas filas tiene el DBGrid sin recorrerla por completo ?
Es decir necesito algo que me devuelva el numero de fila seleccionada.
De antemano muchas gracias :) .
Atte Aarón García A.
vtdeleon
04-06-2005, 20:45:24
Saludos
Suponiendo que usas Tables.
Cómo puedo saber en que número de fila estoy parado en un DBGrid El dbgrid solo es un componetne que te visualiza el contenido de un DB o tabla. Para lograr lo que quieres, tienes que pedirle esto al Dataset el table1: Ej table1.Recno; //esto te devolvera el numero de la fila en la que el cursor se encuentra
y cuantas filas tiene el DBGrid sin recorrerla por completo ? Para esto usas: Table1.RecordCount;
Es decir necesito algo que me devuelva el numero de fila seleccionada. Lo que me viene a la mente para esto, es recorer todas las filas e ir evaluendo si esta seleccionada.
Suerte
Crandel
04-06-2005, 22:47:23
necesito algo que me devuelva el numero de fila seleccionada.
usa SelectedRows.Count
lucasarts_18
06-06-2005, 03:22:08
Hola:
Gracias por responder amigos, he solucionadop el asunto del total de filas, sólo me falta el de la fila actual del cursor, probé con table1.recno y me devuelve -1.
Espero otra manito.
Gracias.
vtdeleon
06-06-2005, 03:29:40
SaludosHola:
Gracias por responder amigos, he solucionadop el asunto del total de filas, sólo me falta el de la fila actual del cursor, probé con table1.recno y me devuelve -1.
Espero otra manito.
Gracias.:confused:
Probe con ShowMessage(inttostr(table1.RecNo)); y resulto de maravillas. Chequea bien tu tabla o codigo.
lucasarts_18
07-06-2005, 05:48:35
Hola :( :
Sigo igual que antes.
showmessage(inttostr(QryDetallePed.RecNo)); (Es un TQuery por sí acaso)
y no me resulta, sigue devolviendome -1
Según la ayuda de delphi:
Indicates the active record in the dataset.
property RecNo: Integer;
Description
As implemented in TDataSet, the value of RecNo is always -1 (Ojo aquí). Ordinarily an application does not access RecNo at the TDataSet level. Instead a re-implemented RecNo property in a descendant class such as TTable is accessed. RecNo provides a fallback property for derived datasets that do not support record numbers.
¿Qué diablos será :confused: ?
Nos vemos.
Saludos.
Crandel
07-06-2005, 07:12:50
Ordinarily an application does not access RecNo at the TDataSet level. Instead a re-implemented RecNo property in a descendant class such as TTable is accessed
En tu misma cita escribiste que RecNo se reimplementa en sus decendientes, como es el caso del TQuery. Asi que no deberia haber problema.
Asegurate de estar realmente preguntado al query correcto, que este abierto en el momento de la pregunta o algún error de esos siempre tontos que nos hacen perder semanas (a todos nos pasa).
Revisa bien en el código como si fuera la primera vez que lo lees, sin presuponer nada
Suerte.
vtdeleon
07-06-2005, 23:48:54
Saludos
Esto debe funcionar: procedure Cualquiera;
begin
query1.close;
query1.sql.clear;
query1.sql.add('Select * from tablaX');//cualquier tabla o Base de datos
query1.open;
ShowMessage(inttostr(query1.RecNo));
end;
Suerte
lucasarts_18
08-06-2005, 08:07:03
Hola:
éste es mi código:
with QryDetallePed do
begin
Close;
SQL.Clear;
SQL.Add ('Select * from Pedido_Detalle');
SQL.Add ('Where Nro_Pedido = ' + edtNumPed.text);
Open;
showmessage(inttostr(QryDetallePed.RecNo));
end;
-1 :confused:
Saludos.
Crandel
08-06-2005, 08:34:42
Te esta diciendo que la consulta no te devuelve ningún registro.
vtdeleon
08-06-2005, 16:59:12
Saludos.Hola:
éste es mi código:
with QryDetallePed do
begin
Close;
SQL.Clear;
SQL.Add ('Select * from Pedido_Detalle');
SQL.Add ('Where Nro_Pedido = ' + edtNumPed.text);
Open;
showmessage(inttostr(QryDetallePed.RecNo));
end;
Intenta si la Clausura where.
Nro_Pedido es Numerico o String? Trata de usar Param
with QryDetallePed do
begin
Close;
SQL.Clear;
SQL.Add ('Select * from Pedido_Detalle');
SQL.Add ('Where Nro_Pedido = :NroPedido');
ParamByName(NroPedido).AsString:=trim(edtNumPed.text);//Si es String;
//ParamByName(NroPedido).Asinteger:=StrToInt(edtNumPed.text);//Si es Numerico;
Open;
showmessage(inttostr(QryDetallePed.RecNo));
end;
Suerte
lucasarts_18
10-06-2005, 19:42:29
Hola:
Sacado de otro foro:
La propiedad *RecNo* no pertenece ni al componente TTable ni al
componente TQuery sino que es propia del gestor de Paradox. El BDE
devuelve -1 para cualquier otro gestor de base de datos.
Voy a buscar otra solución.
Gracias de todas maneras.
Saludos.
Aarón.
Crandel
10-06-2005, 23:14:01
Justamente hace muy poco lo utilice al RecNo en una aplicación con C++Builder 6 y Firebird.
vtdeleon
10-06-2005, 23:32:38
Saludos.
Yo lo he usado con SQL SERVER, Paradox, Firebird, Interbase,... Sin Problemas
Que base de datos usas?
lucasarts_18
10-06-2005, 23:56:36
Hola:
Estoy utilizando SQL Server 2000, en Oracle 9i sucede lo mismo.
Saludos :) .
Aarón
vtdeleon
11-06-2005, 03:32:57
Saludos
Intentaste lo citado http://www.clubdelphi.com/foros/showpost.php?p=91638&postcount=11 ???
Trata de usar AdoQuery a ver que sucede :-S
lucasarts_18
11-06-2005, 16:26:17
Hola a todos:
Gracias por sus constantes ayudas, bueno creo que estamos llegando al fin de éste dilema y he llegado a una conclusión, la propiedad Recno no funciona al parecer con los componentes BDE (TQuery) (TTable) ya qué estos fueron creados para base de datos de escritorio, de ahí es cierto lo que logré averiguar en otros foros, devuelve -1 para cualquier base de datos diferente a paradox o dbase, en mi caso SQL Server.
Gracias a VTDELEON qué me dijo que probará en ADOQuery para ver qué pasaba y me llevé una gran sorpresa, resulta que hacía lo que quería, debe ser que estos componentes están diseñados para trabajar con gestores de base de datos (SQL Server - Oracle - Interbase).
Al parecer debí de haber hecho caso cuando leí que los componentes BDE estaban obsoletos o no eran recomendados actualmente, jjjeje, ahora mismo me cambio a los componentes ADO.
Bueno, le doy gracias nuevamente a todos por su desinteresada ayuda :p.
Saludos.
Aarón.
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.