Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-10-2010
axak axak is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
axak Va por buen camino
Añadir field a un TTable tiempo ejecucion

Antes que nada decir que como vais a ver en mi pregunta estoy pegado en esto me dedico a leer libro y foros y me voy manejando pero en este caso no doy con la clave
Mi problema es el siguiente.
En mi aplicacion tengo varios TTables a las que le asignos los valores en tiempo de diseño su databasename su tablename añado los fields con el boton derecho del raton y add fields hasta hay todo facil y bien el problema es que tengo una TTable con el nombre de Tvacia1 para ir cargando en esa misma tabla en tiempo de ejecucion y segun el boton que se pulse tablas paradox que ya tengo creadas en el editor de paradox y hago lo siguiente.

TVacia1.DatabaseName:='DBGESCONS';
TVacia1.TableName:='oficios.db';
TVacia1.fielddefs.Add('oficio', ftString, 100); aqui esta el problema
TVacia1.Active:=true;
if not TVacia1.Locate('oficio',CBOficio.Text,[]) then
TVacia1oficio.value:=CBOficio.Text;
TVacia1.Active:=False;

Donde pongo aqui esta el problema lo que verdaderamente quiero hacer es cargar los el fiels 'oficio' para despues llamar a TVacia1oficio.value, la verdad que no se si la sentencia que pongo esta bien o es con un fiels.add aunque de todas formas con la sentencia que escribo me da el error [Error] AltaSub.pas(82): Undeclared identifier: 'ftString' cuando en todos lados que he mirado libros foros y ayuda delphi me dice que el type es asi no se si esque he entendido mal

espero haber explicado bien el problema pero para resumirlo lo que quiero es saber la sentencia para añadir fiels a mi TTable en tiempo de ejecucion y si es posible aclararme el error uq me da.

Un saludo y muchas gracias
Responder Con Cita
  #2  
Antiguo 08-10-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
es probable que tengas que poner en el uses la unidad donde esta definida ftstrings, creo que es db. Consulta la ayuda para saber cual es la unit. Un saludo.
Responder Con Cita
  #3  
Antiguo 08-10-2010
axak axak is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
axak Va por buen camino
es correcto me faltaba poner en uses el db muchas gracias por aclararme esa duda pero veo que la sentencia no es la correcta que yo estaba buscando ya que no me sale el error anterior pero no me reconoce Tvacia1oficio ya que no esta cargado como field

La verdad que estoy loco buscando esto porque lo que quiero es que el campo oficio guarde lo escrito en el combobox y nada ahora estoy utilizando

Principal.TVacia1.FieldByName('oficio').AsString:=CBOficio.Text;

Pero nada y es que estoy dando palos de ciegos por que en realidad no se lo que hace esta sentencia la lei en el foro me parecio que me valia y la inserter pero nada y lo mismo me paso con
Principal.TVacia1.fielddefs.Add('oficio', ftString, 100);
que pensaba que cargaba oficio en los fields pero tampoco
de todas formas muchisimas gracias asi voy aclarando dudas y aprendiendo.
Responder Con Cita
  #4  
Antiguo 08-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo, segun lo que entiendo quieres accesar datos de una tabla sin definirlos como persistentes.

Para ello debes realizar lo siguiente:

Primero:
Código Delphi [-]
TVacia1.Active:=False;
TVacia1.DatabaseName:='DBGESCONS';
TVacia1.TableName:='oficios.db';
TVacia1.Active:=True;

A partir de ahora todos los campos que tenga la tabla Oficios los podras acceder de la siguiente forma:

Código Delphi [-]
TVacia1.FieldByname('Oficio').AsString
TVacia1.FieldByname('Numero').AsInteger
TVacia1.FieldByname('Numero_Real').AsFloat
TVacia1.FieldByname('Logico').AsBoolean;

Ademas puedes validar si la tabla tiene un campo de la siguiente forma:
Código Delphi [-]
if TVacia1.FindField('Oficio)<>NIL Then
   ShowMessage(TVacia1.FieldByname('Oficio').AsString)
else
   ShowMessage('El campo Oficio no existe');

Para ingresar o modificar:
Código Delphi [-]
TVacia1.Append; Esta linea es para agregar
//TVacia1.Edit; Esta linea es para editar
TVacia1.FieldByname('Oficio').AsString:='Oficion Texto';
TVacia1.FieldByname('Numero').AsInteger:=10;
TVacia1.FieldByname('Numero_Real').AsFloat:=10.9;
TVacia1.FieldByname('Logico').AsBoolean:=True;
TVacia.Post;

Saludos y espero haber aclarado algo tus dudas.
Responder Con Cita
  #5  
Antiguo 08-10-2010
axak axak is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Poder: 0
axak Va por buen camino
Muchas gracias Claro que me ha servido me estaba volviendo loco, ahora entiendo que poner
TVacia1.FieldByName('oficio').AsString:=CBOficio.Text;
es como poner cuando tienes los fields definidos con el editor de fields
Tvaciaoficio.value:=CBoficio.text;
me estaba volviendo tan loco esta linea que haste he puesto la sentencia TVacia.edit; en vez de Tvacia1.post; y cuando he puesto tu linea que ya sabia que funcionaba me he dado cuenta que habia otro error que era ese es que de tanto tocar el codigo ya ni sabia lo que ponia
muchas gracias de verdad.
Responder Con Cita
  #6  
Antiguo 21-08-2014
genyus00 genyus00 is offline
Miembro
 
Registrado: jun 2010
Posts: 29
Poder: 0
genyus00 Va por buen camino
FieldDefs.Add('oficio', ftString, 100, false); //eso te falta
Responder Con Cita
  #7  
Antiguo 21-08-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cuatro años después
Responder Con Cita
  #8  
Antiguo 22-08-2014
genyus00 genyus00 is offline
Miembro
 
Registrado: jun 2010
Posts: 29
Poder: 0
genyus00 Va por buen camino
Talking

jejeje. siempre hay alguien en busca una respuesta y estas son las primeras en salir y sin concluir. Pero para que veas hay un tema que cada año alguien le agrega algo y creo llevan 10 años en eso. reviven el link cada año.

Código Delphi [-]
//agregar campo en tiempo de ejecución
procedure TForm1.Button2Click(Sender: TObject);
var
  T: TStringField;
begin
  Query1.Close;
  T := TStringField.Create(Self);
  T.FieldName := 'CO_NAME';
  T.Name := Query1.Name + T.FieldName;
  T.Index := Query1.FieldCount;
  T.DataSet := Query1;
  Query1.FieldDefs.UpDate;
  Query1.Open;
end;

//Eliminar campo en tiempo de ejecución
procedure TForm1.Button1Click(Sender: TObject);
var
  TC: TComponent;
begin
  TC := FindComponent('Query1CO_NAME');
  if not (TC = nil) then begin
    Query1.Close;
    TC.Free;
    Query1.Open;
  end;
end;
Responder Con Cita
  #9  
Antiguo 22-08-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por genyus00 Ver Mensaje
jejeje. siempre hay alguien en busca una respuesta y estas son las primeras en salir y sin concluir. Pero para que veas hay un tema que cada año alguien le agrega algo y creo llevan 10 años en eso. reviven el link cada año.
Pues tomamos nota y te esperamos dentro de un año aquí
Responder Con Cita
  #10  
Antiguo 18-11-2014
leg128 leg128 is offline
Registrado
NULL
 
Registrado: jun 2014
Posts: 5
Poder: 0
leg128 Va por buen camino
Hay alguna forma de agregar los campos dinamicamente (add all fields) en tiempo de ejecucion? estoy dando vueltas con este tema hace varios dias y no lo consigo. 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
Añadir componentes en tiempo de ejecución. Drakyto Varios 4 02-06-2007 19:29:06
Añadir items en tiempo de ejecución JesusG Varios 0 21-09-2006 19:31:59
Asignar propiedades de Ttable en tiempo de ejecución coleleon Tablas planas 3 30-11-2005 23:22:39
Añadir series a TDBChart en tiempo de ejecución chemoide Gráficos 1 10-05-2004 16:44:26
Añadir campos persistentes en tiempo ejecucion Firibiri Conexión con bases de datos 3 22-12-2003 11:43:08


La franja horaria es GMT +2. Ahora son las 14:20:49.


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