Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta de una tabla1 para agregar en otra tabla2 (https://www.clubdelphi.com/foros/showthread.php?t=54741)

aanil 28-03-2008 19:02:20

Consulta de una tabla1 para agregar en otra tabla2
 
Hola a todos quiero que me corrijan, estoy entreteniendome con esta pequeña aplicacion.

Estos don los codigos de dos botones, el primero hace la consulta de una tabla1, y el segundo agrega esa consulta en otra tabla2, esto funciona.

Ahora el problema es que tengo un tercer boton que limpia el edit1.text y posiciona el cursor en el Edit, pero no se listan de nuevo todos los registros para hacer una nueva consulta.

El otro problema que no puedo ver de inmediato los registros que he agregado en la otra tabla2, para que se vean tengo que salir de la aplicacion y luego entrar y ahi si se ven.

Veamos mi codigo para que en lo posible me ayuden a corregirlo.


procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select carnet,nombres,apellido1,apellido2');
adoquery1.SQL.Add('from semma' );
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into duplica(carnet,nombres,apellido1,apellido2)');
adoquery1.SQL.Add('select carnet, nombres,apellido1,apellido2 from semma');
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.ExecSQL;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form2.showmodal;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Clear;
edit1.SetFocus;
end;

end.

Caral 28-03-2008 19:23:53

Hola
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select carnet,nombres,apellido1,apellido2');
adoquery1.SQL.Add('from semma' );
adoquery1.SQL.Add('Where carnet =  :Carnet' );
adoquery1.Parameters[0].value:= Edit1.Text;
adoquery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('insert into duplica(carnet,nombres,apellido1,apellido2)');
adoquery2.SQL.Add('values '(:carnet, :nombres, :apellido1, :apellido2));
adoquery2.Parameters[0].value:= adoquery1.Filebyname('carnet').Value;
adoquery2.Parameters[1].value:= adoquery1.Filebyname('nombres').Value;
adoquery2.Parameters[2].value:= adoquery1.Filebyname('apellido1').Value;
adoquery2.Parameters[3].value:= adoquery1.Filebyname('apellido2').Value;
adoquery2.ExecSQL;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form2.showmodal;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Clear;
edit1.SetFocus;
end;

end.
Saludos

Caral 28-03-2008 19:41:45

Hola
Antes de que me regañen:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select carnet,nombres,apellido1,apellido2');
adoquery1.SQL.Add('from semma' );
adoquery1.SQL.Add('Where carnet =  :Carnet' );
adoquery1.Parameters[0].value:= Edit1.Text;
adoquery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('insert into duplica(carnet,nombres,apellido1,apellido2)');
adoquery2.SQL.Add('values (:carnet, :nombres, :apellido1, :apellido2)');
adoquery2.Parameters[0].value:= adoquery1.Filebyname('carnet').Value;
adoquery2.Parameters[1].value:= adoquery1.Filebyname('nombres').Value;
adoquery2.Parameters[2].value:= adoquery1.Filebyname('apellido1').Value;
adoquery2.Parameters[3].value:= adoquery1.Filebyname('apellido2').Value;
adoquery2.ExecSQL;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form2.showmodal;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Clear;
edit1.SetFocus;
end;

end.
Saludos

aanil 28-03-2008 20:54:29

Consulta de una tabla1 para agregar en otra tabla2
 
Gracias

La primera parte funciona correctamente, solo tengo adoquery1, y donde envio los datos consultados es un adotable1.

Mi codigo mas o menos funiona, pero lo que pasa es, que cuando quiero ver la tabla segundaria la que es adotable1 mediante el Showmodal Form2, hasta que no salgo de la aplicacion y vuelvo y entro no se visualizan los registros que he consultado en el DBGRID del form2

Quiero ademas que cuiando limpie el edit1.text vuelvan y se listen los registros de dbgrid de donde hago la consulta.

Quiero que tome en cuenta que soy novato.

Gracias

egostar 28-03-2008 20:57:16

Cita:

Empezado por aanil (Mensaje 276057)
Quiero que tome en cuenta que soy novato.

Hola aanil, que quieres decir con que eres novato, que te expliquen con palitos y bolitas, que te hagan el código completo, :confused::confused:

Salud OS

Caral 28-03-2008 21:08:11

Hola
Cita:

Empezado por egostar (Mensaje 276058)
Hola aanil, que quieres decir con que eres novato, que te expliquen con palitos y bolitas, que te hagan el código completo, :confused::confused:

Salud OS

Amigo, para explicar con palitos y bolitas por lo menos tendria nuestro amigo aanil que dar la explicacion completa, asi es muy dificil.
Vamos a ver si se anima a explicar las cosas, por que yo no soy beisbolista.:D
Otra cosa aanil, El novato del club soy yo, no me quites el titulo, me ha costado ganarmelo.:D
Saludos

Caral 28-03-2008 21:17:04

Hola
Que base de datos usas?
Saludos

aanil 28-03-2008 21:18:13

Consulta de una tabla1 para agregar en otra tabla2
 
OK
egostar, ya no vuelvo

aanil 28-03-2008 21:19:19

Consulta de una tabla1 para agregar en otra tabla2
 
Hola Caral

La base de datos que uso es de ACCESS OFFICE 2003

Caral 28-03-2008 21:23:21

Hola
Abajo hay dos botones, presiona, ir a avanzado, veras un boton que dice gestionar archivos adjuntos, presionalo.
Coloca tu programa con la base de datos en un zip y subelo, lo revisaremos a ver que se puede hacer.
Saludos

aanil 28-03-2008 22:28:33

Consulta de una tabla1 para agregar en otra tabla2
 
Caral

He tratado de enviar la aplicacion comprimido tiene 67KB, no sube dice que es invalido, si tienes un correo, el mio es antonioanilhernandez@gmail.com

Caral 28-03-2008 22:48:04

Hola
Trata de hacerme un esquema de lo que hace el programa, ejemplo:
from1
Contiene un dbgrid
un adoquery con esta sentencia: ........
form 2
contiene tal y cual......

Lo que hago es est.......

Me parece que el problema del form 2 es que el aotable se conecta en algun evento no adecuado, por eso no puedes ver la tabla si no hasta que entras de nuevo.

Tal vez si nos indicas un poco mas todo esto podamos hacer algo.

Otra cosa seria que pusieras el codigo del form 1 y el from 2 completos aqui, asi veremos mas.
Saludos

aanil 28-03-2008 23:16:27

Consulta de una tabla1 para agregar en otra tabla2
 
Caral observa paso por paso

El form1.
Contiene :
un Edit1.text para realizar la consulta
Un boton para la consulta con el siguiente codigo
un DBGRID conectodo correctamente, pues se ven todos los registros, luego de la primera consulta los registros no vuelven aparecer.
Este el codigo para el boton de consulta.

procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select carnet,nombres,apellido1,apellido2');
adoquery1.SQL.Add('from semma' );
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.Open;
end;

( Funciona)

Otro boton para agregar la consulta a un adotable1 que esta en el form2
con el siguiente codigo ( que es el que creo no esta correcto, pero me funciona a media, o sea envia la consulta, pero no la veo en el momento hasta que no salga de la aplicacion y vuelva a entrar) Tiene el siguiente codigo>

procedure TForm1.Button2Click(Sender: TObject);

begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into duplica(carnet,nombres,apellido1,apellido2)');
adoquery1.SQL.Add('select carnet, nombres,apellido1,apellido2 from semma');
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.ExecSQL;

end;

El form2 tiene un dbgrid un un bonto para limpiar o borrar los registros de la tabla auxiliar *es una adotable1*
Este es el codigo del boton que borra los registros de la tabla auxiliar.

While not form1.Adotable1. Eof do
Begin
form1.adotable1.active := true;
form1.adotable1.delete;
end;

Ahora le presento las dos unidades que he hecho:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ComObj, StdCtrls, DB, Grids, DBGrids, ADODB, Buttons, ExtCtrls, DBCtrls,
OleServer, Word2000;

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
ADOTable1CARNET: TIntegerField;
ADOTable1NOMBRES: TWideStringField;
ADOTable1APELLIDO1: TWideStringField;
ADOTable1APELLIDO2: TWideStringField;
Edit1: TEdit;
Button1: TButton;

ADOQuery1CARNET: TIntegerField;
ADOQuery1NOMBRES: TWideStringField;
ADOQuery1APELLIDO1: TWideStringField;
ADOQuery1APELLIDO2: TWideStringField;
BitBtn1: TBitBtn;
Button3: TButton;
BitBtn2: TBitBtn;
Label1: TLabel;
SpeedButton1: TSpeedButton;
Label2: TLabel;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);

private
{
procedure Button2Click(Sender: TObject);Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select carnet,nombres,apellido1,apellido2');
adoquery1.SQL.Add('from semma' );
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.Open;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into duplica(carnet,nombres,apellido1,apellido2)');
adoquery1.SQL.Add('select carnet, nombres,apellido1,apellido2 from semma');
adoquery1.SQL.Add('Where carnet =' + edit1.Text );
adoquery1.ExecSQL;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form2.showmodal;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Clear;
edit1.SetFocus;
adoquery1.Sort;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
Word:variant;
Documento:Variant;
Begin

(*Creas un objeto Word*)
Word:=CreateOleObject('word.application');

(*Abrir documento Word*)
Documento := Word.Documents.OPEN('C:\SEMMA486\listado.dot');
Documento.fields.Update;
documento.fields.toggleShowCodes;
Word.visible := true;


end;

end.








nit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj,StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids;

type
TForm2 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
Button1: TButton;
SpeedButton1: TSpeedButton;
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
While not form1.ADOTable1.Eof do
begin
form1.ADOTable1.Active := true;
form1.ADOTable1.Delete;
end;
end;
procedure TForm2.SpeedButton1Click(Sender: TObject);

var
Word:variant;
Documento:Variant;
Begin

(*Creas un objeto Word*)
Word:=CreateOleObject('word.application');

(*Abrir documento Word*)
Documento := Word.Documents.OPEN('C:\semma486\listado.doc');

Documento.fields.Update;
documento.fields.toggleShowCodes;
Word.visible := true;

end;

end.




Caral 28-03-2008 23:40:13

Hola
No entiendo muy bien pero me parece:
1- haces una consulta adoquery1 (tabla semma)
2- haces una insersion a la tabla adoquery1. (tabla duplica)
3- Tienes un adoTable enlazado a la tabla (duplica) en el form1 // no me queda claro
4- haces una consulta a ese adotable1 del form1 ???.
5- presentas los datos de la tabla duplica. ???

Si es asi, yo pondria un adotable en el from 2 directamente y lo enlazaría a la tabla.
y en el boton 1 del from 2 solamente lo activaria.

A ver como nos va.
Saludos

aanil 29-03-2008 00:08:33

Consulta de una tabla1 para agregar en otra tabla2
 
Caral, si le es posible mandeme su direccion al a mi correo para mandarle todo adjunto no es muy grande solo pesa 1.5 mb, y asi lo corre y me comprendera que es lo que quiero.
Saludos

Caral 29-03-2008 01:13:01

Hola
Ya te envie mi email, revisalo.
Saludos

aanil 30-03-2008 03:22:24

Consulta de una tabla1 para agregar a otra tabla2
 
Bueno Carlos le estoy agradecido, la aplicacion me funciona.

Bien, mi inquietud va por lo siguiente ( mi aplicacion tambien funciona, ya que copio los registros en la tabla aunque no lo vea en el DBgrid, tambien puedo hacer un Qreport, yo ee que estan ahi, la prueba esta cuando uno entra a la tabla se ven fisicamente), pues bien lo que pasa es que una vez hace algun tiempo creo que 2 o 3 años, en la universidad cuando me estaba introducciendo al OPP, yo hice una aplicacion mas o menos como la que estoy halciendo ahora y no recuerdo que pasaba, yo podia ver los registros copiados en la otra tabla mediante la DBGRid. No recuerdo si habia un boton que listaba los registos mediante el adotable, no se..., Tendre que desempolvar algunos folletos viejos.

Si tienes alguna idea me la comunica.

Gracias..


AAnil

Caral 30-03-2008 03:34:09

Hola
No entiendo muy bien.
Tienes dos tablas.
En el form1 actualizas, tanto la primera como la segunda.
El dbgrid del form1 solo ve la tabla1.
En el form 2 se ven las dos tablas, presionando uno u otro boton.
Si quieres ver las dos en el form1, solo tienes que seguir los pasos del from2.
No se si esto es lo que preguntas.
Saludos

aanil 30-03-2008 04:01:38

Caral te voy a mandar una fotografia de la aplicacion en MSWORD a tu correo

Caral 30-03-2008 04:12:36

Hola
Veo que seguiste con tu proyecto, me parece bien.
No se complicado lo que quieres hacer, lo que es un poco dificil es entender el concepto general de lo que pretendes.
Revisa aqui, veras varios ejemplos que he puesto, son de todo tipo, te van a servir como muestra, ahí veras muchas alternativas que podrás seguir, revisalos.
Creo que deberias darle un vistazo al 2 y al 4, te van a guiar mejor que yo en este momento.
Revisalo y veremos que pasa.
Saludos


La franja horaria es GMT +2. Ahora son las 17:43:25.

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