Es que no me queda del todo claro. Si te queres llevar la descripcion, porque estas dando de alta un nuevo registro?
Ademas no es sano que los form se entre conozcan entre si. Es mucho mejor hacer algo como esto:
Agrega esta propiedad en tu TfListadoPuestos:
Código Delphi
[-]
type
TfListadoPuestos = class(TForm)
private
FDescripcionPuesto: string;
public
function Execute: Boolean;
property DescripcionPuesto: string read FDescripcionPuesto;
end;
implementation
function TfListadoPuestos.Execute: Boolean;
begin
if ShowModal = mrOk then
begin
Result := True;
FDescripcionPuesto := end
else
Result := False;
end;
Y luego podes invocar a este form asi:
Código Delphi
[-]
var
FListadoPuestos: TfListadoPuestos;
begin
FListadoPuestos := TfListadoPuestos.Create(Self)
if FListadoPuestos.Execute then
FListadoPuestos.DescripcionPuesto end;
--
Esto es ya mas consejo: Por que accedes a los valores de los campos como Variants?
TDataSet tiene una propiedad indizada y por defecto que devuelve el Variant del campo que pasas por indice. Pero he tenido malas experiencias con esta propiedad.
Te aconsejo usar DataSet.FieldByName('Campo').AsString/AsInteger, etc
A mi tambien me parece espantosamente larga la sintaxis, pero ya que llevas Delphi 2010, lo podes solucionar con una clase de extension:
Código Delphi
[-]interface
uses
DB;
type
TDataSetHelper = class helper for TDataSet
private
function GetFieldObject(Index: string): TField; inline;
public
property FieldObject[Index: string]: TField read GetFieldObject;
end;
implementation
function TDataSetHelper.GetFieldObject(Index: string): TField;
begin
Result := FieldByName(Index);
end;
Y ahora podrias escribir:
Código Delphi
[-]
DataSet['NombreCampo'].AsInteger;