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)
-   -   Como sabe un query a que tabla quiero hacer append? (https://www.clubdelphi.com/foros/showthread.php?t=57429)

coso 14-06-2008 20:04:42

Como sabe un query a que tabla quiero hacer append?
 
Hola a todos. Estoy pasando un codigo de bde (tablas) a ado y me he encontrado con una duda más teorica que no otra cosa. Resulta q tengo un ADOQuery con la string 'select * from tCONCFACT', con una conexión a la base de datos correspondiente. Antes con la bde se usaba el metodo append para insertar los datos de un nuevo registro. Mi sorpresa es que al hacer este codigo

Código Delphi [-]

query1.Active := false;
query1.SQL.text := 'select * from tCONCFACT';
query1.Active := true;

query1.Append;
query1.FieldValues['id'] := id;
query1.FieldValues['id_elem'] := id_elem;
... etc....
query1.post;

me lo postea a la tabla correcta (de la infinidad que hay en esa base de datos). Aqui es donde viene mi duda, pues en ningun lado excepto en la consulta se indica a que tabla quiero q se posteen los datos. Que pasa? que guarda en algun lugar la última tabla donde se ha trabajado? si hago consultas a diferentes tablas con la misma query...perderé la tabla a la que apunta? entonces, estoy obligado a hacer un select antes de usar el metodo append? ...la query se ha cargado con los campos correspondientes en tiempo de diseño. Es eso lo que determina a que tabla se quiere apuntar? como ya digo, es mas para conocer la teoria que no otra cosa, pues seguramente usaré 'insert into' para meter los datos.

saludos y gracias de antemano.

Caral 14-06-2008 20:17:51

Hola
La verdad no entiendo la duda.
Query1 contiene una sentencia sql que hace el enlace con la tabla, si este se activa se podra usar en cualquier parte que siempre hara referencia a esa tabla, otra cosa seria si este mismo query se usara en otras ocasiones, algo asi:
Código Delphi [-]
query1.Active := false;
query1.SQL.text := 'select * from tCONCFACT'
query1.Active := true;

query1.Append;
query1.FieldValues['id'] := id;
query1.FieldValues['id_elem'] := id_elem
... etc....
query1.post;

query1.Active := false;
query1.SQL.text := 'select * from OtraTabla'
query1.Active := true;

query1.Append;
query1.FieldValues['id'] := id;
query1.FieldValues['id_elem'] := id_elem
... etc....
query1.post;
Como ves en este ejemplo use el mismo query pero ligado a diferentes tablas, si no lo cierro al final, siempre seguira viendo la ultima tabla.

No se si esta es tu duda??.
Saludos

coso 14-06-2008 20:19:49

si esto era, que si se quedaba apuntando a la ultima tabla donde se trabajaba. En este caso, donde se guarda el nombre de la tabla a donde apunta?

Caral 14-06-2008 20:22:30

Hola
Pues no se donde se guarda la informacion que contiene el query, supongo que el componente contendra un espacio de memoria o el programa se lo asigna, no lo se, pero asi es como trabaja, siempre mantendra el ultimo dato.
Saludos

coso 14-06-2008 20:26:11

Ok gracias Caral. Solo era una curiosidad


La franja horaria es GMT +2. Ahora son las 18:45: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