Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Asignar un campo Autonumérico a una Variable (https://www.clubdelphi.com/foros/showthread.php?t=24034)

jdangosto 05-08-2005 17:17:33

Asignar un campo Autonumérico a una Variable
 
Buenas.

Estoy Intentando lo siguiente:
Código Delphi [-]
procedure Tventas.BtnAplicarClick(Sender: TObject);
var num:integer;
begin
tabla_ventas.post;
//asigno el num_venta a la variable num
num := tabla_ventasNum_venta.AsInteger;

El campo Num_venta es autonumérico y lo quiero asignar a una variable para introducirlo en otra tabla.

El error que me da es que no puede asignar una columna de tipo TAutoIncFiled a un Integer.

¿Cómo puedo solucionar esto?

ContraVeneno 05-08-2005 18:06:49

¿para que utilizas la instrucción post que esta ahi? Supongo que esa instrucción no debería estar ahí, al menos no como esta escrito.
Para asignar el valor podrías utilizar
TuVar:=TuTabla.FieldValues['TuCampo'];
o
TuVar:=TuTable.Fields[x].AsInteger; (Donde X es el número de campo).

jdangosto 05-08-2005 21:53:07

La instruccion post es porque antes inserto otros valores en la tabla, y al ser un campo autonumérico, según creo, hasta que no salve los datos en la tabla, no le asigna un número.

Me sirve la segunda instrucción.

El código delphi que utilizo sería el siguiente:
Código Delphi [-]
procedure Tventas.BtnGuardarClick(Sender: TObject);
var num:integer;
begin
//inserto los datos en la tabla ventas
tabla_ventas.FieldByName('Cod_cliente').AsInteger := dblookupcombobox1.KeyValue;
tabla_ventas.FieldByName('Nbre').AsString := dbedit1.Text;
tabla_ventas.FieldByName('Apellidos').AsString := dbedit3.Text;
tabla_ventas.FieldByName('Dni').AsString := dbedit2.Text;
tabla_ventas.FieldByName('Tlf').AsInteger := dbedit4.Tag;
tabla_ventas.FieldByName('Tlf_mvil').AsInteger := dbedit5.Tag;
tabla_ventas.FieldByName('Fecha').AsDateTime := datafecha.DateTime;
//actualizo los campos del cliente en la tabla ventas
tabla_ventas.post;
//asigno el valor del num_venta a la vble.
num := tabla_ventas.Fields[1].AsInteger;
//inserto los datos en la tabla detalle
tabla_detalle.FieldByName('num_venta').AsInteger := num;
tabla_detalle.FieldByName('SubTotal').AsInteger := dbgrid1.Fields[5].AsInteger;
tabla_detalle.Post;
end;

Previamente pongo la tabla_ventas y la tabla_detalle en modo inserción desde otro formulario, pero al presionar el boton me dice que el dataset asociado a la tabla_detalle no esta en modo de inserción o edición.

¿Sábes porqué puede ser? Creía que con poner la tabla en modo inserción es suficiente.

Gracias

vtdeleon 06-08-2005 00:16:33

Saludos

Seria bueno que en vez de anteponer la insercion, lo pongas cuando al instante vayas a introducir datos. Pon la tabla detalle en insercion despues de asiganar la variable num. Prueba.
Código Delphi [-]
num := tabla_ventas.Fields[1].AsInteger;
 //inserto los datos en la tabla detalle
 tabla_detalle.insert;
 tabla_detalle.FieldByName('num_venta').AsInteger := num;
 tabla_detalle.FieldByName('SubTotal').AsInteger := dbgrid1.Fields[5].AsInteger;
 tabla_detalle.Post;
 end;


La franja horaria es GMT +2. Ahora son las 06:15:37.

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