Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Enviar datos a una tabla igualando un campo (https://www.clubdelphi.com/foros/showthread.php?t=53324)

odrack 18-02-2008 19:18:29

Enviar datos a una tabla igualando un campo
 
Que tal, soy nuevo en el foro y acudo a ustedes para ver si me pueden ayudar con este dilema que me ha dado lata.
Estoy haciendo traspasos de mercancias de una tabla a otra en bases de datos diferentes, hasta el momento ya logre enviar los datos a la otra base de datos, el problema es que tengo que igualarlo en un articulo y no se como hacerlo, uso los componentes DBE table y data access datasourse con base de datos en MySQL.
Espero haberme podido explicar y que me puedan ayudar.

Ivanzinho 18-02-2008 19:48:06

Hola odrack, bienvenido al club delphi.

Sobre tu pregunta la verdad es que no he entendido qué es lo que quieres hacer, no se si soy yo que entiendo mal o tu que no te explicaste bien :p, ¿puedes poner un pequeño ejemplo con datos sobre lo que quieres hacer o explicar un poco mejor qué es lo que quires hacer?

Un saúdo.

odrack 18-02-2008 19:56:04

Enviar datos a una tabla igualando un campo
 
Primero perdon, no soy muy bueno explicandome, jiji, Este es el fragmento de codigo y lo que necesito es que cuando se envien los datos a la otra base de datos se actualicen con estos, pero no se como igualar los campos para que se actualice.

procedure TForm12.Button1Click(Sender: TObject);
begin
form12.Table3.DatabaseName:='ventas';
form12.Table3.TableName:='articulos';
form12.DataSource3.DataSet:=form12.Table3;
form12.DataSource3.DataSet.Active:=true;
form12.Table3.UpdateRecord;
form12.Table3.FieldByName('fechaTraspaso').AsString:=dbedit1.Text;
form12.Table3.FieldByName('indalmacen').AsString:=edit1.Text;
form12.Table3.FieldByName('clvarticulo').AsString:=dbedit4.Text;//igualar por articulo
form12.Table3.FieldByName('descripcion').AsString:=dbedit2.Text;
form12.table3.FieldByName('existencias').AsString:=edit2.Text;
form12.Table3.Post;
form12.Table3.Close;
form12.Table3.Open;
end;

Ivanzinho 18-02-2008 20:17:12

Realmente no se si entendi bien a lo que te refieres, pero creo que es esto :

Primero seleccionas los datos de una base de datos utilizando un TQuery o un TTable. Luego recorres el dataset y vas actualizando la otra base de datos en base al valor de la clave:

Código Delphi [-]
DataSet.first;//DataSet con registros tabla B.D. 1
while not DataSet.Eof do
  begin
    //Query actuliza apunta a la B.D. 2
    QueryActualiza.SQL.Add('Update tabla set campo1 = :campo1 ... campoN = :campoN');
    QueryActualiza.SQL.Add('where campoClave = ' + DataSetCampoClave.value);
    QueryActualiza.ParamByName('campo1').AsTipo := DataSetCampo1.value;
    ...
    ...
    QueryActualiza.ParamByName('campoN').AsTipo := DataSetCampoN.value;

    QueryActualiza.ExecuteSQL;

  end;

Un saúdo.

odrack 18-02-2008 20:42:52

Enviar datos a una tabla igualando un campo Responder a Tema
 
Tengo un TTable y un TDatasourse como componentes, necesito agregar algun componente mas ya que no me muestra las opciones cuando agrego el cogido. Y tratando de explicar un poco mas, lo que quiero hacer es un traspaso de mercancia, hasta el momento he podido agregar los datos con el codigo que he escrito arriba en la base de datos 2 pero me crea un nuevo regristro y lo que no puedo hacer es que actualicen los datos igualando por una clave o un mismo valor (por ej. en sql utilizaria "Update tabla set existencias='cantidad' where clave='edit1.text') pero no se como agregar este tipo de codigo. En la base 2 tengo el campo indclave que es al que tengo que igualar para que se actualicen.

Un saludo, y espero no dar muchas molestias, ya que apenas estoy introduciendome a Delphi, donde mi fuerte es PHP jiji.

Ivanzinho 18-02-2008 20:54:50

Cita:

Empezado por odrack (Mensaje 266748)
Tengo un TTable y un TDatasourse como componentes, necesito agregar algun componente mas ya que no me muestra las opciones cuando agrego el cogido. Y tratando de explicar un poco mas, lo que quiero hacer es un traspaso de mercancia, hasta el momento he podido agregar los datos con el codigo que he escrito arriba en la base de datos 2 pero me crea un nuevo regristro y lo que no puedo hacer es que actualicen los datos igualando por una clave o un mismo valor (por ej. en sql utilizaria "Update tabla set existencias='cantidad' where clave='edit1.text') pero no se como agregar este tipo de codigo. En la base 2 tengo el campo indclave que es al que tengo que igualar para que se actualicen.

Tienes que agregar otro componente, un TADOQuery, y en la propiedad SQL añades la consulta como te expliqué en el post anterior.

odrack 18-02-2008 21:02:58

he agregado un Tquery, es necesario que agrege un ADOQuery??, y en donde marcas: QueryActualiza.SQL.Add('Update tabla set campo1 = :campo1 ... campoN = :campoN'); para agregar mas campos quedaria con los tres puntos (...) osea (update tabla set campo1 =:campo1 ... campo 2 = : campo2); o esto es separado por comas??(,). Sorry, pero no entendi buen esta parte:p.

Saludos.

Ivanzinho 19-02-2008 08:31:47

Cita:

Empezado por odrack
he agregado un Tquery, es necesario que agrege un ADOQuery??, y en donde marcas: QueryActualiza.SQL.Add('Update tabla set campo1 = :campo1 ... campoN = :campoN'); para agregar mas campos quedaria con los tres puntos (...) osea (update tabla set campo1 =:campo1 ... campo 2 = : campo2); o esto es separado por comas??(,). Sorry, pero no entendi buen esta parte:p.

¡¡¡Ahhh no!!!, los campos van separados por comas, los tres puntos los puse para que vieses que ahí va una lista de campos, :p;). Perdona por no explicarme mejor :o.

Un saúdo.

odrack 19-02-2008 17:47:56

Ok, gracias. Me has ayudado mucho, por fin me ha salido!!:), Con esto doy por terminado este tema, Gracias por la ayuda nuevamente.

Saludos!!


La franja horaria es GMT +2. Ahora son las 22:47:39.

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