Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   copiar de una base a otra (https://www.clubdelphi.com/foros/showthread.php?t=58567)

mariaesde 24-07-2008 09:25:40

copiar de una base a otra
 
Hola de nuevo a todos!
Es mi segunda consulta y tras el exito de la primera me animo a preguntaros porque me estoy volviendo loca.

Estoy trabajando con tablas y querys.

Tengo un formulario donde en un dbgrid cargo distintas bases de datos dependiendo del botón que pulse. Solo me sirve para mostrarlas.

Y justo debajo tengo otro dbgrid que hace referencia a otra base de datos(otra table)que se encuentra vacía.

Pues bien yo quiero que al pulsar una línea del primer dbgrid pulse el boton AÑADIR y se me añada y registre en el otro dbgrid y en la otra base de datos.:eek::eek:

Espero no causar mucha molestia y haber explicado mi duda con claridad, que conste que lo he intentado..

Un saludo y gracias adelantadas

coso 24-07-2008 10:12:42

Hola maria, deberias programar en el evento OnDblClick del dbgrid, teniendo en cuenta que los datos en el dbgrid se pueden coger mediante DBGrid1.Columns.Fields[indice]

algo asi

Código Delphi [-]
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
          dato1,dato2 : string;
          dato3,dato4 : integer;
          db : TDBGrid;
begin
            db := (sender as TDBGrid);
            dato1 := db.Columns[1].Field.Asstring
            ...
            // o bien del query del dbgrid origen directamente
            dato4 := db.DataSource.Dataset.FieldByName('dato4').Asinteger;
            ...
            // y luego insertarlo
            tabladestino.Append;
            tabladestino.FieldValues['id'] := Nuevo_id;
             ...
            tabladestino.Post;
end;

mariaesde 24-07-2008 10:34:35

perdoname coso, me puedes poner un ejemplo de como seria exactamente? de una sola forma? es que de bases de datos no entiendo mucho, lo siento...

coso 24-07-2008 10:50:28

Código Delphi [-]
procedure TForm1.DBGrid1Click(sender : TObject);
var
        db : TDBGrid;
        dato1 : string;
        dato2 : integer;
        dato3 : boolean;
        ...
begin
        db := sender as TDBGrid; // cogemos el argumento sender y lo interpretamos como dbgrid: sera tu dbgrid1, el origen
        
        // cogemos los datos desde el origen y los guardamos en variables para luego copiarlos.

        dato1 := db.DataSource.DataSet.FieldbyName('dato1').Asstring;
        dato2 := db.DataSource.DataSet.FieldByName('dato2').Asinteger;
        dato3 := db.DataSource.DataSet.FieldByName('dato3').Asboolean;
        ...

       // copiamos, insertando en la tabla/query destino, la cual se supone ligada a un datasource que a su vez esta ligado al segundo DBGrid
             
       tabla.Append;
       tabla.FieldValues['dato1'] := dato1;
       tabla.FieldValues['dato2'] := dato2;
       tabla.FieldValues['dato3'] := dato3;
       ...
       tabla.Post;
       tabla.Refresh;
end;

...creo q poco mas se puede decir :) saludos, a ver si te sirve. Tambien se puede hacer directamente con sentencias SQL, pero creo que si aun no lo dominas, mejor de esta manera. Ten en cuenta, por eso, que si existe algun identificador el cual no se pueda repetir, deberas crear uno nuevo para el registro nuevo en esa tabla destino.

mariaesde 25-07-2008 09:26:28

una pregunta estupida quizás... los nombres de las columnas de la tabla origen no tiene porque coincidir con las de la tabla destino verdad?? osease... puedo copiar el dato NOMBREBEBIDA en la columna NOMBREARTICULO, si son del mismo tipo verdad??

Delphius 25-07-2008 09:55:20

Cita:

Empezado por mariaesde (Mensaje 303210)
una pregunta estupida quizás... los nombres de las columnas de la tabla origen no tiene porque coincidir con las de la tabla destino verdad?? osease... puedo copiar el dato NOMBREBEBIDA en la columna NOMBREARTICULO, si son del mismo tipo verdad??

Exacto, mientras sean del mismo tipo (y de las mismas "dimensiones") (1) no deberías tener problemas.

(1) Esto dependerá del motor de base de datos que empleas. Por darte un ejemplo... si el campo que deseas copiar es VARCHAR(30) y lo quieres copiar a un VARCHAR(20)... puede que existan problemas.

Saludos,

mariaesde 25-07-2008 10:55:03

ay q ser papa.... creo q voy a tener q leer otra vez mejor los manuales y tutoriales que tengo porque yo no me entero, o estoy haciendo algo ml y no me funciona... las cosas d la programacion

Delphius 25-07-2008 20:17:00

Cita:

Empezado por mariaesde (Mensaje 303218)
ay q ser papa.... creo q voy a tener q leer otra vez mejor los manuales y tutoriales que tengo porque yo no me entero, o estoy haciendo algo ml y no me funciona... las cosas d la programacion

Hola mariaesde,
¿Podrías indicarnos la estructura de tus tablas, la base de datos que empleas, el código que tienes hasta el momento, los componentes que usas y la forma en que los estás enlazando?

Si pudieramos conocer con mayores detalles tu caso, te podríamos seguir asesorando.

Saludos,


La franja horaria es GMT +2. Ahora son las 23:01:02.

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