PDA

Ver la Versión Completa : conectar ibquery's con dbgrid's


naty_prog
27-09-2010, 02:12:26
tengo 4 dbgrid para una consulta sobre los datos de una tabla(ibdataset).cada dbgrid debe reflejar los registros de dicha tabla de acuerdo con distintas condiciones.para ello, nos obligan a usar 4 ibquery con sus datasource para poder mostrar los registros en las grillas correpondientes.agregando un registro manualmente en la base de datos (sql), el registro tendria que aparecer en una de las grillas, pero al ejecutar el sistema hace completamente al reves, muestra el registro en las 3 grillas que no corresponden, y en la grilla donde deberia aparecer esta en blanco.supongo que seria un problema de conexiones entre los componentes, pero existe codigo para resolver el problema,como seria?
desde ya muchas gracias si entendieron y pueden resolver mi problema.
saludos

Casimiro Notevi
27-09-2010, 11:05:04
Hola naty_prog, bienvenido a clubdelphi, te aconsejo leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) para poder ayudarte mejor, muchas gracias.

Neftali [Germán.Estévez]
27-09-2010, 11:13:27
supongo que seria un problema de conexiones entre los componentes,

Pues por lo que explicas seguramente sí es problemas de cómo tienes conectados los componentes.


pero existe codigo para resolver el problema,como seria?

No se si existe código, pero sería un error buscarlo.
No tiene sentido.
Si tienes mal las conexiones, el problema se solucionan arreglando las conexiones, no metiendo código "raro" que lo solvente.:confused::confused::confused:

marcoszorrilla
27-09-2010, 12:17:19
Mis compañeros ya te han explicado posibles fallos, yo te pregunto,¿Haces un commit o commitRetaining despues de grabar los datos?

Un Saludo.

naty_prog
27-09-2010, 17:31:22
gracias a las personas que me ayudaron a resolver posiblemente el problema.debido al poco tiempo que tengo para dedicarle a la tesis,en la semana les estare confirmando si he resuelto el drama.
otra vez, muchas gracias a todos

naty_prog
29-09-2010, 03:09:54
Hola nuevamente, les comentamos que el problema no viene exactamente de las conexiones, ya que hemos revisado cada una y están correctas. Creemos que es algo referido a sql o parte del código ejecutable.
A continuación, le damos la lista de los componentes que usamos:

IBDataset_correlativas:para conectar con la tabla correlatividad por medio de un ibdatabase_sistema.
DataSource_Correlativas: conecta con el ibdataset_correlativas.
DataSource_cCorrelativas_regular_rendir: para conectar con el IBQuery_Correlativas_regular_rendir.
DataSource_Ccorrelativas_regular_cursar: conecta con IBQuery_Correlativas_Regular_cursar.
DataSource_Ccorrelativas_aprobada_rendir: conecta con IBQuery_Correlativas_Aprobada_rendir.
DataSource_Ccorrelativas_aprobada_cursar: conecta con IBQuery_Correlativas_Aprobada_Cursar.
En el formulario_correlativas, en el evento OnShow, tenemos que mostrar las correlatividades que tiene una materia seleccionada previamente. La idea es mostrar los registros de las correlatividades en 4 grillas:
DBGrid_cursar_regular
DBGrid_rendir_regular
DBGrid_cursar_aprobado
DBGrid_rendir_aprobado
Para ello, utilizamos el siguiente código:
begin
DM.IBQuery_Correlativas_Regular_cursar.SQL.Clear;
DM.IBQuery_Correlativas_Regular_cursar.SQL.Add('Select * from correlatividad where id_materia=:mat and TIPO=(CURSAR) and ESTADO_CORRELATIVIDAD=(REGULAR)');
dm.IBQuery_Correlativas_Regular_cursar.ParamByName('mat').AsInteger:=dm.IBQuery_materiaID_MATERIA.Va lue;
dm.IBQuery_Correlativas_Regular_cursar.Open;
DM.IBDataSet_Correlativas.Locate('id_CORR',DM.IBQuery_Correlativas_Regular_cursarID_CORR.Value,[]);
end;

begin
DM.IBQuery_Correlativas_regular_rendir.SQL.Clear;
DM.IBQuery_Correlativas_regular_rendir.SQL.Add('Select * from correlatividad where TIPO=RENDIR and estado_correlatividad=REGULAR');
dm.IBQuery_Correlativas_regular_rendir.Open;
DM.IBDataSet_Correlativas.Locate('id_CORR',DM.IBQuery_Correlativas_regular_rendirID_CORR.Value,[]);
end;

begin
DM.IBQuery_Correlativas_Aprobada_Cursar.SQL.Clear;
DM.IBQuery_Correlativas_Aprobada_Cursar.SQL.Add('Select * from correlatividad where TIPO=CURSAR and estado_correlatividad=APROBADA');
dm.IBQuery_Correlativas_Aprobada_Cursar.Open;
DM.IBDataSet_Correlativas.Locate('id_CORR',DM.IBQuery_Correlativas_Aprobada_CursarID_CORR.Value,[]);
end;

begin
DM.IBQuery_Correlativas_Aprobada_rendir.SQL.Clear;
DM.IBQuery_Correlativas_Aprobada_rendir.SQL.Add('Select * from correlatividad where TIPO=RENDIR and estado_correlatividad=APROBADA');
dm.IBQuery_Correlativas_Aprobada_rendir.Open;
DM.IBDataSet_Correlativas.Locate('id_CORR',DM.IBQuery_Correlativas_Aprobada_rendirID_CORR.Value,[]);
end;

Esperamos que puedan entender cuál es la situación, y desde ya lesdamos las gracias.
Saludos a todos.

Caral
29-09-2010, 03:19:31
Hola
IBDatabase, conectado a la BD
IBTransaction, conectado a IBDatabase
IBQuery, Conectado a IBDatabase.
Datasource, conectado a IBQuery
DBGrid, conectado a Datasource.
Saludos

Caral
29-09-2010, 03:30:25
Hola

begin
DM.IBQuery_Correlativas_Regular_cursar.SQL.Text:= 'Select * from correlatividad where id_materia= :mat '+
' and TIPO = ''CURSAR'' and ESTADO_CORRELATIVIDAD = ''REGULAR'' ';
dm.IBQuery_Correlativas_Regular_cursar.ParamByName('mat').AsInteger:= dm.IBQuery_materiaID_MATERIA.Value;
dm.IBQuery_Correlativas_Regular_cursar.Open;
end;

No entiendo nada.
Saludos