Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda sobre consulta. (https://www.clubdelphi.com/foros/showthread.php?t=66597)

aanil 03-03-2010 01:00:39

Ayuda sobre consulta.
 
Hola a todos:

Tengo dos formularios Form1, y Form2.

El el Form1 tengo que hacer una consulta de tres campos, para en el tercer campo escribir un dato. o sea.

Código SQL [-]
'select campo1, campo2, campo3 from MiTabla where condicion'


En el form2 tengo que hacer otra consulta con los campo1,campo2, campo3 y campo4, para en el campo4 escribir unos datos, o sea:

Código SQL [-]
'select campo1, campo2, campo3, campo4  from MiTabla where condicion'

Cuando yo hago la consulta en el form1, sale un error diciendo que falta el campo4 y este campo yo no lo necesito en el form1.

Los dos forms están conectados una una misma tabla, que tiene por lo menos 7 campos.

Saludos....

aanil 03-03-2010 02:08:07

Me contesto yo mismo, lo que no había notado es que tengo que poner un query por cada form en un datamodule.


Saludos.

Caral 03-03-2010 02:12:09

Hola
No necesariamente, el problema que tienes es que en el query tienes la consulta en el string.
Si quitas la consulta del string del query puedes usar un solo query para toda una aplicación.
Saludos

aanil 03-03-2010 19:14:44

Hola :

Seria tan amable de ponerme un ejemplo de como no poner el string en el Query
Nunca lo he hecho de esa manera.

Saludo...

Caral 03-03-2010 21:59:33

Hola
Lo que se hace es simplemente poner la consulta via codigo.
Ejemplo:
Tienes un query: Query1.
entonces haces la consulta via codigo asi:
Código Delphi [-]
Query1.close; //cierro el query por si use este mismo.
Queru1.sql.text:= 'select campo1, campo2, campo3 from MiTabla where condicion';
Query1.open; /7 lo abro con la nueva consulta
Saludos

aanil 03-03-2010 22:07:53

Hola

Realmente es lo que yo hago, por ejemplo a un botón de un formulario le escribo el código. En el otro formulario escribo el mismo código a otro botón con un campo más, pero cuando ejecuto el primer código del primer formulario dice que faltan campos.

Saludos..

Caral 03-03-2010 23:26:24

Hola
Fíjate que en la casilla (ventanita pequeña) del query no tengas los campos.
Saludos

Caro 04-03-2010 13:50:05

Cita:

Empezado por aanil (Mensaje 355502)
En el otro formulario escribo el mismo código a otro botón con un campo más, pero cuando ejecuto el primer código del primer formulario dice que faltan campos.

Hola aanil, seguramente tienes tus campos como persistentes, si quieres reutilizar el query para diferentes consultas, mejor que no manejes campos persistentes. Como te dice Caral entra al Editor y elimina tus campos persistentes, puedes entrar al editor con doble click en el query o click derecho->Fields Editor.

Saluditos

aanil 04-03-2010 16:40:30

Hola Caro,

Revisa el archivo adjunto y dime donde es que debo de arreglar.
Ejecuta el primer Form.

Saludos..

Caral 04-03-2010 20:10:15

Hola
1- el proyecto empieza cargando en memoria todos los form, en este caso dos:
Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
Esto genera un error al llamar al form2 si no se activa el query ya que el DBEdit1 esta ligado al form1 y no contiene nada al ser llamado.
2- Para cambiar la sentencia sql del query usas ADD, esto es mas confuso, tener que cerrar, limpiar y demas el query, con solo usar TEXT se sobre escribe y listo:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
   with Query1 do begin // estas en el form1 no se necesita especificarlo
sql.Text:= 'select NOMBRES,centro_educ  FROM tabla1'+
'where nombres like '+Quotedstr((edit1.Text)+  '%' ))+
'order by nombres asc';
open;

end;
end;
En el form2:
Código Delphi [-]
procedure TForm2.Edit1Change(Sender: TObject);
begin
  with FORM1.Query1  do begin
sql.Text:= 'select NOMBRES, libro, folio  FROM tabla1'+
'where nombres like '+Quotedstr((edit1.Text)+  '%' ))+
'order by nombres asc';
open;

end;
end;
Saludos

aanil 04-03-2010 21:06:20

Hola Caral

Gracias por la ayuda.

Saludos..


La franja horaria es GMT +2. Ahora son las 07:46:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi