PDA

Ver la Versión Completa : obtener el valor de un campo (Tquery)


Yoli
08-04-2005, 05:08:11
Hola a todos. Estoy haciendo un maestro/detalle, para esto tengo 2 tablas(COTIZACION Y COTIZACIOND), mi problema es que estoy tratando de obtener el valor de una campo por medio de un Tquery, pero al hacerlo me dice que el valor es 0, aun cuando el Tquery.Recordcount es > 0, y la verdad no comprendo porque, ya que los valores del maestro(COTIZACION), los he guardado previamente.

Tengo un Tquery con una sentencia SQL:
Select ID_COTIZACION From COTIZACION

Y he utilizado varios codigos para obtener el valor pero me dan el mismo resultado. Los codigos que utilice son los siguientes:

1.-

procedure TFrmTablas.TCotizacionDBeforePost(DataSet: TDataSet);
var
kk:Integer;
begin
FrmCotizacion.QConsulta.Close;
FrmCotizacion.QConsulta.Active:=True;

if FrmCotizacion.QConsulta.RecordCount > 0 then
kk:=FrmCotizacion.QConsulta['ID_COTIZACION']

end;

2.-

procedure TFrmTablas.TCotizacionDBeforePost(DataSet: TDataSet);

begin
TCotizacionDID_COTIZACION.AsInteger:=TCotizacionID_COTIZACION.AsInteger;

end;

Estos 2 codigos que utilice me dicen que el valor del campo ID_COTIZACION de la tabla cotizacion es 0.

Para esta aplicacion estoy utilizando delphi 6 y access. Bueno espero haberme explicado. Agradesco su ayuda. Saludos y gracias de antemano.

marcoszorrilla
08-04-2005, 07:13:06
Si el campo es persistente:

kk:=FrmCotizacion.QConsultaID_COTIZACION.Value;


Sino:

kk:=FrmCotizacion.QConsulta.Fields[1].AsString


Donde he puesto uno es el número que ocupa el campo en la consulta teniendo en cuenta que el primero es 0, y donde puse AsString, puede ser AsDateTime, AsDouble, AsInteger....

Un Saludo.

lucasarts_18
08-04-2005, 20:18:29
Hola marcoszorrilla:

A que le llamas campo persistente ?

Saludos
Aaron.

Yoli
08-04-2005, 20:23:30
Gracias marcoszorrilla la 2 opcion me funciono a la perfeccion. Pero tambien tengo la duda sobre que es un campo persistente?. Saludos

marcoszorrilla
08-04-2005, 21:44:09
Si un Ttable o Tquery haces doble clic y seleccionas la opción añadir todos los campos o los que creas convenientes, a eso se le llama campos persistentes, tienes la ventaja de saber de antemano su situación y nombre y además les puedes formatear en tiempo de diseño.

Un Saludo.

Alfredo
08-04-2005, 22:07:05
Ademas del metodo descrito por Marcos tambien en posible asi:

kk := FrmCotizacion.TTablaconsulta.FielByName('Nombre_del_campo').AsString;

Para ampliar el abanico... ;)