Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con TTable (https://www.clubdelphi.com/foros/showthread.php?t=48776)

Punzo 03-10-2007 20:01:23

Ayuda con TTable
 
Hola a todos !!!; estoy usando una sola tabla (.dbf); y con el componente TTable, tengo en mi tabla 4 campos: Red, Subred, idRed y Nivel, cuando doy de alta un registro que no es Red ni Subred le pongo nivel 1; mi pregunta es cuando el registro es una Subred y tengo que darlo de alta como Red; como accedo al campo nivel de la Red padre? gracias de antemano.

Punzo 03-10-2007 21:03:23

Como puedo posicionarme en un registro con TTable para asi extraer el valor del campo que me interesa?, tengo el ID. Gracias

BlueSteel 03-10-2007 22:03:50

Hola Punzo...

en realidad no entendi muy bien tu pregunta,, podrias ser un poco más explicativo...

según yo,, tienes lo sgte;

Tabla1
- idRed
- Red
- SubRed
- Nivel

si tienes el Id... es más facil, pero para eso necesitarias utilizar Querys...

una forma de hacerlo seria

Select * From Tabla1 Where idRed=Id

pero como te dije.. no entendí bien tu consulta:p

eduarcol 04-10-2007 14:14:50

en verdad deberias plantear mejor tu duda, pero si necesitas buscar y trabajas con BDE aparte de lo que te sugiere el amigo BlueSteel puedes aprovechar la funcion FindKey que realiza una busqueda indexada...

Pero mientras no expliques que componentes trabajas, y no nos digas con una mejor explicacion que necesitas no sabremos que aconsejarte

Punzo 04-10-2007 19:37:10

ok, quise resolverlo con algo mas o menos asi:
Código Delphi [-]
tbFox.Open;
tbFox.Edit;
BookMark := tbFox.Bookmark;
If tbFoxSUBRED.Value <> 0 Then
Begin
  tbFox.Locate('ID', tbFoxIDRED.Value, []);
  Nivel := tbFoxNIVEL.AsInteger;
  tbFox.Bookmark := BookMark;
  tbFox.Edit;
  tbFoxNivel.Value := Nivel + 1;
End;
Estoy usando TTable ya que la tabla que estoy usando para esto es independiente (.dbf), que otro metodo podria utilizar en vez de Locate?

eduarcol 04-10-2007 19:41:35

Si tienes la tabla indexada te sigo recomendando el FindKey

Punzo 04-10-2007 19:43:23

no la tengo indexada; en el codigo que muestro no hace lo que quiero, estoy haciendo algo mal?

eduarcol 04-10-2007 19:56:27

revisa con un breakup si tbFoxIDRED.Value tiene el valor que esperas cuando llega al locate

Punzo 04-10-2007 20:00:32

Ahora me marca un Access Violation; este es el panorama: tengo 2 formas una principal y otra normal cuando mando llamar la forma normal lo hago mediante Application.CreateForm, al momento de cerrar la forma principal ya que he cerrado la forma normal, me marca AV, pero nadamas me lo marca cuando hago post en la forma normal, en el evento OnClose de la forma normal cierro la tabla y despues caFree. Gracias por su ayuda.

eduarcol 04-10-2007 20:12:56

porq no nos ilustras con un poco de codigo??, entre forma y forma me perdi, no entendi mucho lo que explicas

Punzo 04-10-2007 20:54:57

Ok, perdon por no explicarme bien; fmRed es la forma principal, y fmSubRed es la "normal".
Código Delphi [-]
procedure TfmRedes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tbDetalle.Close;
tbFox.Close;
Application.Terminate;
end;
 
procedure TfmRedes.btGuardarClick(Sender: TObject);
begin
  tbFox.Post;
end;
 
procedure TfmRedes.vwDetalleDblClick(Sender: TObject);
begin
  Application.CreateForm(TfmSubred, fmSubred);
  fmSubred.Show;
end;
 
procedure TfmSubRed.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  tbSubRed.Close;
  Action := caFree;
end;
 
procedure TfmSubRed.btGuardarClick(Sender: TObject);
begin
  tbSubRedIDRed.Value := fmRedes.tbFoxID.Value;
  tbSubRed.Post;
  fmRedes.vwDetalle.DataController.RefreshExternalData;
end;

los 2 TTable apuntan a la misma tabla; estara por ahi el error?

eduarcol 06-10-2007 02:21:16

la verdad no se si sera esto pero prueba quitando el action := caFree, no teng idea


La franja horaria es GMT +2. Ahora son las 00:40:42.

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