Ver Mensaje Individual
  #1  
Antiguo 04-02-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Reputación: 14
jlrdz Va por buen camino
Question Usar consulta para varios formularios

Tengo 2 formularios(usuarios y categorias) y un data module, estoy usando el componente mydac para conectarme a mi base de datos en MySQL, en la base de datos tengo 2 tablas una de nombre usuarios y otra de nombre categoria.
La tabla usuarios tiene tres campos que son id, numero y nombre_usuario.
La tabla categorias tres campos id, categoria y salario.
En el Data Module tengo el componente TMyconnection de name "conn" donde establesco los datos del servidor, usuario, password y la base de datos que voy a utilizar y un TMyQuery de name "query2" para generar consultas.
En el formulario de usuarios muestro los datos y tengo un DBNavigator pero propio no usé el que biene ahí. Con el evento onCreate para el formulario hago lo siguiente:

mysql es el nombre del data module, aquí selecciono todo de la tabla usuarios con la consulta y lleno correctamente los TEdit, con eso no tengo problema

Código Delphi [-]
mysql.query2.Close;
mysql.query2.SQL.Clear;
mysql.query2.SQL.Text:='select * from usuarios order by id asc';
mysql.query2.Open

En el formulario categorias hago exactamente lo mismo con el evento onCreate pero con una consulta diferente, lleno los TEdit correctamente y el DBnavigator propio funciona bien.

Código Delphi [-]
mysql.query2.Close;
mysql.query2.SQL.Clear;
mysql.query2.SQL.Text:='select * from categoria order by categoria asc';
mysql.query2.Open;

Al correr la aplicacion abro primero categorias y me carga los datos y todo anda bien, cierro ese formulario y abro el de usuarios y la primera vez que se llena los campos lo hace bien pero al recorrer el siguiente registro con el DBNavigator me marca un error, en si se refiere a que los campos numero y nombre de usuario no existen en la consulta que sería en "query2" y quiero suponer que hace eso porque aun está cargada con los datos del formulario categorias pero se supone que al crear el formulario se debe borrar ( con el mysql.query2.close, mysql.query2.SQL.Clear) y ejecutar la nueva consulta o al menos eso es lo que creo pero seguro estoy en un error. Lo que quiero es usar esa misma "query2" para varios formularios y no tener que crear una para cada formulario. Aclaro lo que sí tengo para cada formulario es un TMyDataSource. Espero haberme explicado y puedan ayudarme, saludos.
Responder Con Cita