Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 30-11-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 26
BlueSteel Va por buen camino
lo que si os aseguro es que:

1.- Que me equivoque de nombre... si se que son comillas, pero tuve un lapsus, asi que aún no se por que le puse Cremillas...

2.- la funcion 1 de Roman me funciono super.... poner 2 comillas simples juntas me sirvio.

Salu2
__________________
BlueSteel
Responder Con Cita
  #22  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues si usa sql estandar (más o menos), la conversión puede ser rápida
Si, aunque basicamente tengo dos problemas:

1-Los triggers habría que rehacerlos totalmente porque el lenguaje cambia de forma radical y el problema no es desarrollarlos, es la depuración posterior.
2-El problema inicial era que la aplicación, al venir de usar bases de datos de escritorio está plagada de ttables por lo cual habría que buscar componentes de acceso a firebird que los contemplen, cosa que ya he hecho pero tendría que probar bien.

La verdad es que antes de cambiar todo el desarrollo a esta base de datos contraté a un supuesto "guru" de delphi para que me cambiara los componentes a firebird, cosa que se hizo (bajo un presupuesto a mi parecer excesivo). El problema es que se usaron los componentes dbexpress (quiero recordar) para los ttable y como imagino que sabréis estos componentes lo primero que hacen es un select * de la tabla y con tablas grandes el programa se hacía inoperativo. Cuando le comento el tema a mi "guru" la respuesta fue "esto no es renault ocasión, no hay milagros". Por otro lado cuando trincó la pasta se "olvidó" de rematar el tema y empezaron los problemas así que opté por pasar de todo y cambiarlo yo personalmente a ElevateDB que tiene componentes propios y no me resultó excesivamente complicado hacer la migración.

La ignorancia, algo después andando por aquí me di cuenta de que hay componentes de acceso a firebird a montones y muchos de ellos, sin importarme que fueran de pago tienen componentes ttable para el acceso a las tablas.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #23  
Antiguo 01-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bueno, si necesitas un TTable, sólo tienes que usar un TIBDataSet y poner "select * from laTabla", ya tienes un TTable, que eso es lo que hacen todos, como ya sabes.
Responder Con Cita
  #24  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, si necesitas un TTable, sólo tienes que usar un TIBDataSet y poner "select * from laTabla", ya tienes un TTable, que eso es lo que hacen todos, como ya sabes.
Ya, pero eso con tablas a partir de unos miles de registros no es operativo porque tardaría muchisimo en abrir la tabla, con la base de datos que yo uso la apertura de componentes ttable es inmediato independientemente del número de registros y quiero recordar que pasado esa historia estuve haciendo pruebas con algún componente de pago para firebird y también abrían los ttable de forma inmediata, pero ya era tarde.
__________________
Be water my friend.
Responder Con Cita
  #25  
Antiguo 01-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Ya, pero eso con tablas a partir de unos miles de registros no es operativo porque tardaría muchisimo en abrir la tabla, con la base de datos que yo uso la apertura de componentes ttable es inmediato independientemente del número de registros y quiero recordar que pasado esa historia estuve haciendo pruebas con algún componente de pago para firebird y también abrían los ttable de forma inmediata, pero ya era tarde.
uummm... creo que no

Abrir la tabla debe ser inmediato con todos, lo que ocurre es que algunos componentes tienen una propiedad para indicar si quieres que cargue todo en memoria o no.
Evidentemente, si tiene que cargarlos todos, por ejemplo, haciendo un 'fetch' (ir al final .last) o contar los registros, será lento cuando tengas muchos registros.
Pero todos trabajan igual, me explico, un componente Table es lo que he comentado antes, un Dataset que su sql pone "select * from tabla". No hay más, ni puede haberlo.
En este hilo se habló sobre ese tema y aquí están los resultados:

Zeos:
Código Delphi [-]
procedure TZAbstractTable.SetTableName(const Value: string);  
begin    
  if FTableName <> Value then    
  begin      
    FTableName := Value;      
    if Value <> '' then        
      SQL.Text := Format('SELECT * FROM %s', [FTableName])      
    else SQL.Text := '';
  end;
end;

IBX:
Código Delphi [-]
SQL := TStringList.Create;
   SQL.Text := 'select ' + {do not localize}
    QuoteIdentifier(DataBase.SQLDialect, FTableName) + '.*, ' {do not localize}
    + 'RDB$DB_KEY as IBX_INTERNAL_DBKEY from ' {do not localize}
    + QuoteIdentifier(DataBase.SQLDialect, FTableName);
  if Filtered and (Filter <> '') then
  begin
    SQL.Text := SQL.Text + ' where ' + Filter; {do not localize}
    bWhereClausePresent := True;


MDO:
Código Delphi [-]
SQL := TStringList.Create;
  SQL.Text := 'select ' + {do not localize}
    QuoteIdentifier(DataBase.SQLDialect, FTableName) + '.*, ' {do not localize}
    + 'RDB$DB_KEY as IBX_INTERNAL_DBKEY from ' {do not localize}
    + QuoteIdentifier(DataBase.SQLDialect, FTableName);
  if Filtered and (Filter <> '') then
  begin
    SQL.Text := SQL.Text + ' where ' + Filter; {do not localize}
    bWhereClausePresent := True;

IBDAC

Código Delphi [-]
select count(*) from table;
select * from table;

Responder Con Cita
  #26  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Pues con la base de datos que yo uso el tema de los ttable funciona exactamente igual que con bases de datos dbf, abres el ttable y directamente puedes pedir un recordcount, irte al final, etc de forma inmediata ya tenga uno o millones de registros. No sé, igual estoy confundido en algo pero funciona de esa forma.
__________________
Be water my friend.
Responder Con Cita
  #27  
Antiguo 01-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Sí, bueno, para irte al final rápidamente puede tener, por ejemplo, un índice descendente. Pero de todas formas, salvo que sea una tabla muuuy grande y con muuuchos campos, será rápido siempre.
Y, por supuesto, un Ttable es un dataset con un "select *".
Otra cosa que se me ocurre en tu caso es que esa base de datos use técnicas de bases de datos de escritorio, que almacena el tamaño de cada registro y multiplica por la posición del registro que quieres ir y accede directamente a esa posición en la tabla. Pero en ese caso no usaría registros de longitud variable.
En fin, aunque he usado bases de datos dbisam, no conozco elevatedb.
Responder Con Cita
  #28  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Bueno, la verdad es que no sé cómo van las tripas de estas cosas. Lo único que pude comprobar es que con las pruebas que hacía con firebird tardaba bastantes segundos en abrir una tabla de algunos miles de registros y eso me hizo desistir de esa vía, sin embargo con esto es todo igual que con los dbf.
__________________
Be water my friend.
Responder Con Cita
  #29  
Antiguo 01-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Claro, es que es muy diferente usar unos componentes u otros, no es lo mismo zeos que fibplus, la diferencia en velocidad es bastante significativa.
Pero, de todas formas, ahora mismo yo aplicaría el famoso: "si funciona, no lo toques". Es lo mejor
Responder Con Cita
  #30  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero, de todas formas, ahora mismo yo aplicaría el famoso: "si funciona, no lo toques". Es lo mejor
Si, y además es de cómodo....
__________________
Be water my friend.
Responder Con Cita
  #31  
Antiguo 01-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Si, y además es de cómodo....
Y con el día que hace hoy, apetece más bajar al puerto y sentarse al solecito a mirar el mar
Responder Con Cita
  #32  
Antiguo 01-12-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Y con el día que hace hoy, apetece más bajar al puerto y sentarse al solecito a mirar el mar
..... o las churris...
__________________
Be water my friend.
Responder Con Cita
  #33  
Antiguo 01-12-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por newtron Ver Mensaje
Por favor, si teneis un tema distinto del original deberiais de crear un hilo nuevo, ¿habéis leido ya la guía de estilo?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Delphi 2006 no respeta sentencia SQL ilichhernandez SQL 1 16-05-2008 15:25:56
Sentencia SQL en Delphi wesito SQL 4 08-11-2007 09:59:50
Obtener Sentencia SQL al grabar desde delphi Boo Varios 0 27-02-2007 13:33:18
Longitud de una sentencia sql con TADOQRY en Delphi JuanPa1 SQL 6 28-08-2006 20:11:37
Ejecutar una sentencia desde java samuvk JAVA 1 27-05-2004 13:43:28


La franja horaria es GMT +2. Ahora son las 23:37:22.


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