Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2007
Avatar de UREÑA
UREÑA UREÑA is offline
Miembro
 
Registrado: feb 2007
Posts: 75
Poder: 18
UREÑA Va por buen camino
Talking SQL y RecordCount

hola amigos lo que pasa es lo siguiente:

tengo una consulta y quiero que lo que trae esa consulta en recordcount
sea el tamaño de mi arreglo;

ya probe mi consulta en el ibexpert y si me arroja todos los registros en el codigo de delphi solo me manda uno
este es el codigo

Código SQL [-]
with  frm_DataModule.qry_Selec_Materia do begin
 if active then close;
 frm_DataModule.qry_Selec_Materia.SQL.Clear;
 frm_DataModule.qry_Selec_Materia.SQL.Add('SELECT ID_MATERIA, NOMBRE_MATERIA FROM MATERIA');
 frm_DataModule.qry_Selec_Materia.SQL.Add('WHERE (MATERIA.ID_AREA = '+QuotedStr(frm_CapAlum1.combo_Nucleo.KeyValue));
 frm_DataModule.qry_Selec_Materia.SQL.Add('OR MATERIA.NUCLEO_FORMACION ='+QuotedStr('TRONCO COMUN')+') ');
 frm_DataModule.qry_Selec_Materia.SQL.Text;
 frm_DataModule.qry_Selec_Materia.Open;
 frm_DataModule.qry_Selec_Materia.First;

 dimension := frm_DataModule.qry_Selec_Materia.RecordCount ;

 SetLength(listMat,dimension + 1 ) ;
 e := 0 ;
 while not (frm_DataModule.qry_Selec_Materia.Eof) do
   begin
     //listMat[e].materia := frm_DataModule.qry_Selec_Materia.fields[0].AsString ;
     frm_DataModule.qry_Selec_Materia.Next;
     inc(e) ;
   end;//end while
frm_DataModule.trans_Commit.StartTransaction;
   frm_DataModule.qry_Alum_Ins_Upd.Close;
   frm_DataModule.qry_Alum_Ins_Upd.SQL.Clear;
   frm_DataModule.qry_Alum_Ins_Upd.SQL.Add('INSERT INTO ALU_MAT(MATRICULA, CURSADAS)');
   frm_DataModule.qry_Alum_Ins_Upd.SQL.Add('VALUES('+QuotedStr(rest_Mat)+
   ','+QuotedStr(' ')+ ')');
   frm_DataModule.qry_Alum_Ins_Upd.SQL.Text;
   frm_DataModule.qry_Alum_Ins_Upd.ExecSQL;
   frm_DataModule.trans_Commit.Commit;

gracias a todos!!!
Responder Con Cita
  #2  
Antiguo 27-08-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Hola

no se si te sirva esto.. pero yo he tenido muchos problemas al utilizar el RecordCount en Interbase y desde Delphi... así que te sugiero que agregues una sentencia de Count y la asignes a una variable.. y con eso hagas tu proceso

tendrias que usar un
Código SQL [-]
Select Count(Campo1) As Num_Registro, Campo2, Campo3, Campo4
Where  Condicion
Order by Campo2

y despue tendrias que poner algo asi
Código Delphi [-]
dimension := frm_DataModule.query['Num_Registro'];

espero que te sirva
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 27-08-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Espero que comprendas a que me refiero:

http://www.clubdelphi.com/foros/show...24&postcount=3

con respecto al recordcount, muchas veces tienes que mandar traer todos los registros para que el recordcount tenga su valor real, es decir, necesitas utilizar el comando "last" para ir al último registro y luego "first" para regresar, de esta manera aseguras que el dataset haga un conteo de todos los registros, asígnando el valor real al recordcount.
__________________

Responder Con Cita
  #4  
Antiguo 27-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ContraVeneno Ver Mensaje
Espero que comprendas a que me refiero:

http://www.clubdelphi.com/foros/show...24&postcount=3

con respecto al recordcount, muchas veces tienes que mandar traer todos los registros para que el recordcount tenga su valor real, es decir, necesitas utilizar el comando "last" para ir al último registro y luego "first" para regresar, de esta manera aseguras que el dataset haga un conteo de todos los registros, asígnando el valor real al recordcount.
Amigo Contra, creeme que me cuesta trabajo entender lo que dices (eso sería un bug demasiado malo como para que sea verdad , tener que hacer last y first, vamos ni en paradox sucede), yo soy realmente nuevo con los componentes IBX, pero lo poco que lo he usado, nunca he tenido ese problema.

A mi me parece que las variables que está pasando no están siendo las adecuadas o la comparación está haciendo una de sus jugarretas.

Bueno, mi inexperiencia puede ser traicionera. No me hagan mucho caso.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 28-08-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues sí, pero hasta donde tengo entendido, el dataset no recorre todos los registros, es decir, va recorriendo, según va necesitando, por lo tanto, hay ocasiones en que el recordcount no da el dato exacto y por eso habría que ir al último registro para que los cuente todos... yo tampoco soy muy experto en eso, pero así es como me lo sabía
__________________

Responder Con Cita
  #6  
Antiguo 28-08-2007
mamaro mamaro is offline
Miembro
 
Registrado: mar 2004
Posts: 79
Poder: 21
mamaro Va por buen camino
Hola

Efectivamente existen algunos problemas con el RecordCount en Interbase y en Firebird (no he probado con otros motores).
Al parecer una de las bondades de estos motores es realizar una especie de retorno de registros a petición, ésto nos permite ahorrarnos tiempo de procesador (de servidor), y reducimos el tráfico de red ... por supuesto casi todo lo bueno viene acompañado de algo malo .. y esto no es la excepción.

Al ejecutar Last estamos forzando al motor a que nos retorne todos los registros, razón por la cual la propiedad RecordCount toma su valor real.

Con algunos otros motores como Access o Paradox esto no pasa porque cuando se hace una consulta se obtiene de entrada la totalidad de los registros.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
RecordCount me devuelve -1 mayte Conexión con bases de datos 6 11-07-2007 15:40:14
Problema con un RecordCount Lucciano Conexión con bases de datos 4 07-04-2006 15:40:54
RecordCount Vs Count (SQL) vtdeleon Conexión con bases de datos 8 10-10-2005 08:10:28
RecordCount vs PacketRecords cesar_picazo Conexión con bases de datos 1 02-04-2005 21:26:57
no funciona el recordcount Irina Varios 8 13-06-2003 19:21:38


La franja horaria es GMT +2. Ahora son las 03:42:08.


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
Copyright 1996-2007 Club Delphi