Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   al insertar algo en una tabla paradox..... (https://www.clubdelphi.com/foros/showthread.php?t=23906)

Rafe 02-08-2005 02:28:59

al insertar algo en una tabla paradox.....
 
Hola que tal ? , mi pregunta es la siguiente..... :
Yo tengo una tabla con un listado de productos, representada en un dbgrid, yo quiero que cuando agregue algun producto en esa tabla usando el dbgrid se me agregue en otra tabla que tengo. Uso el evento de la tabla "After Insert" para agregar , pero como hago para almacenar el producto que agrego , lo que hice yo fue esto ... :

Table1.AppendRecord ([table2.FieldByName('Nombre Producto').AsString]
pero me agrega solo vacio , porque no vale nada table2.FieldByName('Nombre Producto').AsString
en la tabla2 es en la que estoy insertando.

Como`podria hacer ??????? gracias!!!!

Lepe 02-08-2005 11:46:29

Cita:

Empezado por Ayuda de delphi
This statement appends a record to the Customer table. Note that Nulls are entered for some of the values, but are not required for missing values at the end of the array argument, i.e. after the Discount field.

Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);

Como ves, tienes que pasarle valores a todos los campos.

Otro método podría ser:
Código Delphi [-]
table1.Append;
table1.FieldbyName('lo que sea ').AsString := table2.FieldbyName('nombre producto').asString;

table1.Post;

Otra forma, creando una query de actualizacion:
Código Delphi [-]
var q:Tquery;
begin
  q := Tquery.Create(nil);
try
  q.sql.text := 'INSERT INTO tablaDestino SET campo1 = valor1, campo2 = valor2';
  q.ExecSql;
finally
   freeandnil(q);
end;
end;

A ver cual te gusta más ;)

Un saludo

basti 02-08-2005 13:58:43

Aparte de lo que te bien te dice Lepe, no debes utilizar el evento AfterInser en este caso, ya que este evento va después de insertar pero antes de introducir los datos. Deberías de ponerlo en el evento afterPost de la table2, comprobando si se trata de una inserción.

Código Delphi [-]
if Table2.State = dsInsert then
  // aquí el código para insertar

un saludo

Rafe 02-08-2005 17:23:27

pregunta...
 
Pero como hago para saber cual es el nuevo q inserte(estando siempre en el evento after insert o before insert) ????

Lepe 02-08-2005 17:44:10

Puedes usar el evento más cercano a guardar los datos: BeforePost, pero haciendo la comprobación del millón:

Código Delphi [-]
  if dsInsert inTableXXX.State then
    // Va a ser guardado por primera vez.
   // todos los datos deberían estar asignados.

La primera vez que se guarde el registro, entrará en el IF, cuando posteriormente se modifique el registro, ya no entra, porque el estado será dsEdit.

Mira en la ayuda de delphi por "TDataSetState type" verás en todos los estados que puede estar un dataset.

Un saludo


La franja horaria es GMT +2. Ahora son las 19:31:09.

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