Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda con dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=74135)

3DLord 01-06-2011 03:56:07

ayuda con dbgrid
 
Hola, tengo un dbgrid con con una columna llamada Localidad, con los nombres de las localidades....
como hago para saber la cantidad de nombres(filas), de la columna localidad????
gracias..

ecfisa 01-06-2011 04:18:21

Hola 3DLord.
Cita:

como hago para saber la cantidad de nombres(filas), de la columna localidad
Si no estoy entiendo mal tu pregunta, la cantidad de filas de la columna localidad es igual a la cantidad de registros del DataSet, por lo que una forma de obtenerla sería:
Código Delphi [-]
var
  NColLoc: Integer;
begin
  NColLoc:= DBGrid1.DataSource.DataSet.RecordCount;
  ...

Saludos.

3DLord 01-06-2011 04:24:46

entendiste bien mi pregunta... :) muchas gracias x la ayuda

ecfisa 01-06-2011 04:38:15

De nada 3DLord.

Una forma más eficiente de hacerlo es que agregues una consulta (en el ejemplo la llamo Query) y hagas:
Código Delphi [-]
var
  NColLoc: Integer;
begin
  Query.SQL.Clear;
  Query.SQL.Add('SELECT COUNT(LOCALIDAD) AS TOTAL FROM TU_TABLA');
  Query.Open;
  NColLoc:= Query.FieldByName('TOTAL').AsInteger;
  Query.Close;
  ...
Donde 'TU_TABLA' será el nombre que le hayas puesto a la tabla.

Un saludo.

Caral 01-06-2011 04:46:06

Hola
Amigo no le explicas el por que es mas eficiente:
Si se pierde el foco (se cierra el dataset) del DBgrid, la consulta permanecerá, con esto el dato de la cantidad de registros, con la consulta (independiente) del dataset.
Bueno: El asunto es que quería escribir algo.....:D:D
Saludos

ecfisa 01-06-2011 05:14:26

Cita:

El asunto es que quería escribir algo.....
Me alegro, te estaba extrañando :). ¿ Como estan tus cosas ?

3DLord 01-06-2011 05:55:34

y si en la columna de localidad tengo... localidad
buenos aires
mar del plata
la plata

ej: lo quiero hacer es guardar en una variable el nombre de la plata..
como tendria que hacer??

oscarac 01-06-2011 05:58:19

Suponiendo que esta selecionado podrias hacer algo asi

Código Delphi [-]
 
vLocalidad := qryLocalidadLocalidad.Asstring;

o

Código Delphi [-]
 
vLocalidad := qryLocalidad.FieldByName('Localidad').asstring;

3DLord 01-06-2011 06:14:32

lo probe sin el query (tabla..FieldByName('Localidad').asstring).asString y funciona cuando una de las localidades en el dbgrid recibe el foco...
necesito saber sin q las localidades reciban el foco...necesito obtener la ultima localidad...
gracias x darme una mano

oscarac 01-06-2011 06:28:32

Cita:

Empezado por 3DLord (Mensaje 402110)
necesito saber sin q las localidades reciban el foco...necesito obtener la ultima localidad...

no lo entiendo :confused:

ecfisa 01-06-2011 06:50:49

Hola.

Fijate si así te sirve, la función devuelve el nombre de la última localidad del TDataSet:
Código Delphi [-]
function GetLastLocName(ADataSet: TDataSet): string;
var
  BM: TBookMarkStr;
begin
  BM:= ADataSet.Bookmark;
  ADataSet.DisableControls;
  ADataSet.Last;
  Result:= ADataSet.FieldByName('Localidad').AsString;
  ADataSet.EnableControls;
  ADataSet.Bookmark:= BM;
end;

Ejemplo de llamada:
Código Delphi [-]
   ShowMessage(GetLastLocName(DBGrid1.DataSource.DataSet));

Saludos.

3DLord 01-06-2011 07:04:06

Hay un propiedad en el dbgrid llamada option si entras en options, habilitas donde dice dgIndicator, y te aparece una flecha a lado de las filas(nombre de las localidades en este caso)....
Ejecutas el la aplicacion..
Cuando le das click sobre una localidad, ese flecha marca a q localidad se le hizo click.
Entoncs si hago, showmessage(tabla.fieldbyname('Localidad').asString);
devuelve el nombre de la localidad q fue clickeada con anterioridad,si no clickeo ninguna,por defecto señala a la primer localidad.En la aplicacion q tngo q hacer el dgIndicator esta deshabilitado..

lo q necesito, es obtener el nombre de la ultima localidad, ya q se le pueden ir agragando localidades..

si alguien tiene la solucion utilizando un TADOQuery y sin utilizar el TADOQuery..me serviria de mucha ayuda

desde ya muchisimas gracias!!! :)

ecfisa 01-06-2011 07:06:52

Cita:

lo q necesito, es obtener el nombre de la ultima localidad, ya q se le pueden ir agragando localidades
¿ Probaste la función que te hice arriba ? Por que hace exáctamente eso: Devuelve la última localidad ingresada. ;):)

Si no es eso, no te estoy entendiendo.:(

Saludos.

3DLord 01-06-2011 07:25:24

la funcion q me pasaste me da error de tipos AnsiString and TBytes...

oscarac 01-06-2011 07:31:22

y en que linea te sale ese mensaje?

3DLord 01-06-2011 07:34:43

BM:= ADataSet.Bookmark;

y


ADataSet.Bookmark:= BM;

oscarac 01-06-2011 07:38:10

esas instrucciones se utilizan para identificar la posicion actual
eliminalas si es que solo quieres llegar al final

Código Delphi [-]
 
 
function GetLastLocName(ADataSet: TDataSet): string;
begin  
  ADataSet.DisableControls;
  ADataSet.Last;  
  Result:= ADataSet.FieldByName('Localidad').AsString;  
  ADataSet.EnableControls;
end;

3DLord 01-06-2011 07:41:58

muchisimas gracias!!!
me sirvio muchisimo la ayuda de todos.!!!!!!!!!!!!!!
un abrazo grande!!!!!!!!!
:) :)


La franja horaria es GMT +2. Ahora son las 03:30:49.

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