Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2012
patxim patxim is offline
Registrado
 
Registrado: feb 2007
Posts: 8
Poder: 0
patxim Va por buen camino
Contenido de una celda de un DBGRid

Hola
Tengo un DBGrid conectado a un DataSource, ADOTable y al ADOCON,
¿Cómo puedo saber el contenido de una determinada celda del DBGrid sin
tener que seleccionarla?
Gracias, Patxi.
Responder Con Cita
  #2  
Antiguo 23-05-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Espero sea lo que necesitas

aAmi manera de ver no creo que tengas que tomar el valor del DBgrid ya que esté solo es un visualizador de datos, de la consulta hecha con el objeto TadoTable entonces lo que deberias hacer es referenciar a la columna que necesitas de tu tabla o consulta ¿por que TadoTable y no TadoQuery?

Código Delphi [-]
   WnocontratoSelec:=trim(Fmodulo.QryTemp.FieldByname('nocontrato').AsString);

si aun asi quieres obtener el registo del dbGrid te puede funcionar esto.
Código Delphi [-]
WnoContrato:=(Self.GridResultado.Columns[0].Field.text);

y para no tener que seleccionarlo ummmm pues puedes crear un prcedimiento

Código Delphi [-]
procedure ObtenerValorGrid:
begin
WnocontratoSelec:=trim(Fmodulo.QryTemp.FieldByname('nocontrato').AsString);
WnoContrato:=(Self.GridResultado.Columns[0].Field.text);
end;

Wnocontrato es una Variable de Tipo String aqui tu cambiarias por la que necesitas

Última edición por microbiano fecha: 23-05-2012 a las 13:19:02. Razón: modificar elctura
Responder Con Cita
  #3  
Antiguo 23-05-2012
patxim patxim is offline
Registrado
 
Registrado: feb 2007
Posts: 8
Poder: 0
patxim Va por buen camino
Tengo poca idea sobre esto.
Creo que para usar un TadoQuery hay que programarle el SQL del que no sé nada.
Lo que necesito hacer es que, por ejemplo al pinchar un botón,
conocer el valor del registro nº15 y la columna 2 sin tener hacer un select de ese registro ya que
en el DBGrid se seleccionaria esa celda.
Es algo semejente a
WnoContrato:= noséqué... [15, 2];
y gracias, Patxi.
Responder Con Cita
  #4  
Antiguo 23-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola patxim.

Proba de este modo:
Código Delphi [-]
type
  TDBGridEx = class(TDBGrid);

function GetFieldAtColRow(ACol, ARow: Integer; GR: TDBGrid): string;
var
  BM: TBookMark;
begin
  with TDBGridEx(GR) do
  begin
    if (ARow > 0)and( ACol > 0)and(ARow < RowCount)and(ACol < ColCount) then
    begin
      BM:= DataSource.DataSet.GetBookmark;
      DataSource.DataSet.DisableControls;
      DataSource.DataSet.MoveBy(1 - Row);
      DataSource.DataSet.MoveBy(ARow - 1);
      Result := DataSource.DataSet.Fields[ACol-1].AsString;
      DataSource.DataSet.GotoBookmark(BM);
      DataSource.DataSet.FreeBookmark(BM);
      DataSource.DataSet.EnableControls
    end
  end
end;

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= GetFieldAtColRow(StrToInt(EditCol.Text), StrToInt(EditRow.Text), DBGrid1);
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-05-2012 a las 18:21:29.
Responder Con Cita
  #5  
Antiguo 23-05-2012
patxim patxim is offline
Registrado
 
Registrado: feb 2007
Posts: 8
Poder: 0
patxim Va por buen camino
Hola ecfisa,
esto funciona perfectamente solo para lo que esta visualizado en el DBGrid, si con el scroll, por ejemplo bajas unos cuantos registros, las "ACol, ARow" de la función se refieren a lo que está visualizado, no a las de toda la DBGid.
Gracias, Patxi.
Responder Con Cita
  #6  
Antiguo 23-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por patxim Ver Mensaje
Hola ecfisa,
esto funciona perfectamente solo para lo que esta visualizado en el DBGrid, si con el scroll, por ejemplo bajas unos cuantos registros, las "ACol, ARow" de la función se refieren a lo que está visualizado, no a las de toda la DBGid.
Gracias, Patxi.
Hola patxim.

Si por supuesto, eso fué lo que entendí que buscabas hacer.

En un TDBGrid no residen la totalidad de datos de un TDataSet. Si deseas movilizarte por registro/campo a través de una tabla tendrás que hacerlo accionando sobre el TDataSet (ADOTable en este caso). De otro modo estaríamos haciendo referencia a una fila del TDBGrid que podría no estar cargada todavía...

Creo que ADOTable soporta el uso de la propiedad RecNo que te daría "la fila"(registro) y "la columna" (campo) la podés obtener variando el índice de la propiedad Fields del TADOTable cuyo valor va desde cero a FieldCount-1.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-05-2012 a las 22:32:25.
Responder Con Cita
  #7  
Antiguo 23-05-2012
patxim patxim is offline
Registrado
 
Registrado: feb 2007
Posts: 8
Poder: 0
patxim Va por buen camino
Hola ecfisa,

Sí, tienes razón, pero si hago un "ADOTable.RecNo := StrToInt(EditRow.Text);", automáticamente en la DBGrid se selecciona el registro RecNo y se posiciona en ella y yo lo que pretendo es que la DBGrid se quede como estaba.

Saludos, Patxi.
Responder Con Cita
  #8  
Antiguo 23-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Proba utilizando un TBookMark y los métodos DisableControls y EnableControls.

Algo parecido a:
Código Delphi [-]
var
  BM: TBookMark;
begin
  BM:= ADOTable1.GetBookmark;  // guardar posición actual en la tabla
  ADOTable1.DisableControls;  // datos asociados al DataSet no se muestran

  //
  // Posicionarte, obtener el dato...
  // 

  ADOTable1.GotoBookmark(BM);  // volver a posición guardada
  ADOTable1.FreeBookmark(BM);
  ADOTable1.EnableControls  // restaurar mostrar datos
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 24-05-2012
patxim patxim is offline
Registrado
 
Registrado: feb 2007
Posts: 8
Poder: 0
patxim Va por buen camino
Hola eficsa,

Funciona perfectamente, al final yo lo he hecho así:

Código Delphi [-]
function GetFieldAtColRow(ACol, ARow: Integer; ADOT: TADOTable): string;
var
BM: TBookMark;
begin
if (ARow > 0)and( ACol > 0)and(ARow < ADOT.RecordCount)and(ACol < ADOT.FieldCount) then
begin
BM:= ADOT.GetBookmark; // guardar posición actual en la tabla
ADOT.DisableControls; // datos asociados al DataSet no se muestran
//
// Posicionarte, obtener el dato...
//
ADOT.RecNo := ARow;
Result:=ADOT.Fields[ACol].AsString;
ADOT.GotoBookmark(BM); // volver a posición guardada
ADOT.FreeBookmark(BM);
ADOT.EnableControls; // restaurar mostrar datos
end;
end;

supongo que estará bien.

Muchas gracias, Patxi.

Última edición por Casimiro Notevi fecha: 24-05-2012 a las 11:43:53.
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
usar contenido de una celda DBGrid federicorl Varios 4 16-12-2006 00:05:57
DBGrid. Contenido de celda en edicion ManelC Varios 2 06-07-2006 23:01:18
Saber el contenido de una celda en un Dbgrid en Delphi 7 Kivan Varios 2 30-05-2005 18:56:34
Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 20:53:28
Acceder al contenido de una celda en un DBGRID... Sinaloense OOP 2 22-09-2004 10:01:06


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


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