Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-03-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 24
ArdiIIa Va por buen camino
Cita:
Empezado por UREÑA
frm_DataModule.qry_usuarios_upd.Close;
frm_DataModule.qry_usuarios.Close;
Creo que esas dos líneas, son superfluas....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #2  
Antiguo 29-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Ardilla no entiendo qué líneas dices:
Código Delphi [-]
frm_DataModule.qry_usuarios_upd.Close;
frm_DataModule.qry_usuarios.Close;
La primera es necesaria porque estamos cambiando el SQL de esa consulta.
La segunda línea... bueno... se trata de otra Consulta distinta... de la que no tenemos constancia sobre su SQL, por ello, no me atrevería a asegurar que sobran.

La que si es cierto que sobra es esta:
Código Delphi [-]
     frm_DataModule.qry_usuarios_upd.SQL.Text;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 29-03-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 24
ArdiIIa Va por buen camino
Hola Lepe:

Hasta donde yo sé, cuando se modifica la propiedad SLQ de un Query, éste se cierra automáticamente, luego sería innecesario cerrarlo, dado que ya con el hecho de hacer un SQL.Clear, este se cierra.
En el segundo caso, si el Query depende de la transacción con la que se efectúa un Commit o un Rolback, nada mas hacer cualquiera de los dos pasos, el Query se cerrará de forma automática, por lo tanto, tampoco será preciso cerrarlo, de ahí es por lo que hago esa observación.

Claro está que estoy hablando de TQuery y sus derivados. En un post anterior citabas los componentes MDOLIB, los cuales desconozco, y en el caso de que en en este ejemplo sean los componentes utilizados, y estos tengan un comportamiento distinto al citado, mi observación no tendría cabida.
Así que si esto ultimo es cierto retiro mi observación. Ahora bien, si los componentes utilizados son TQuery o TIbQuery, creo que mi observación optimiza el código.

Saludos
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #4  
Antiguo 29-03-2007
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 20
Kenobi Va por buen camino
No entiendo bien lo que dice....

Hola amigos ....
entiendo que un query tiene a nivel de propiedades para colocarle la rutina insert, delete etc ...ahora bien cual es el problema (ademas del codigo en la aplicacion) de usar sql.add como dijo RonPablo(mis respetos amigo) digo yo... acaso no funciona siempre bien..? pregunto porque yo lo uso bastante y si estoy cometiendo un error ......a corregirlo sea dicho......
Responder Con Cita
  #5  
Antiguo 30-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Tu código está bien, solo que aqui estamos "divagando" ... bueno mejor dicho... intentando optimizar el código que usas.

Lo lógico, cuando vas a modificar el SQL de una consulta, es hacer lo que haces, es decir, primero cierras la consulta y después utilizas Clear para borrar el contenido, por último añades la SQL nueva.

Cuando estudias más a fondo un tema, aprendes cosas nuevas, y ves que el TQuery ya hace algunas cosas internamente, es entonces cuando empiezas a mirar detenidamente tu código y dices: "¿Para qué voy a poner tal o cual línea de código si ya lo hace el TQuery internamente?, pues eso, elimino la línea y me ahorro una línea de código"

En ocasiones, es mejor dejar esa línea de código, para clarificar el código y hacerlo más legible. Si estas empezando, quizás te sea más claro para tí dejar esas líneas "que están demás".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 30-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Cita:
Empezado por Kenobi
ahora bien cual es el problema (ademas del codigo en la aplicacion) de usar sql.add como dijo RonPablo(mis respetos amigo) digo yo... acaso no funciona siempre bien..? pregunto porque yo lo uso bastante y si estoy cometiendo un error
Como tal así funciona, la cuestión es cuando buscamos escalabilidad, solo por ejemplo que en algún momento tienes que cambiar de componente de conexión a la bd, con el sql.add, tendrás que ir unidad por unidad buscando donde esta el código sql, mientras que si tienes dentro de un modulo (o dos o tres, pero no muchos) todos los xxQuerys (con su correspondiente xxUpdateSQL) o xxDataSets, te quedara mas fácil modificar estos.

un ejemplo:


Tabla Permisos (id, nombre); tabla Perfiles (id, nombre)

para estas dos tablas yo creo en Delphi dos xxQuery asi que normalmente los llamaría xxQPermisos y xxQPerfiles y los asociaria con de a xxUpdateSQL (xxUSPermisos, xxUSPerfiles), ya en el inspector de objetos en la propiedad
unidirectional la igualaría a false y la propiedad sql pondría algo como esto

Código SQL [-]
//en el xxqPermisos
select * from TPERMISOS where id = :id

//en el xxqPerfiles
select * from TPERFILES where id = :id

con esto solo tendría que ir al xxUpdateSQL darle doble clic, pedirle los nombres de la tabla, donde me mostraría dos cuadros con los mismos campos, uno se llama Key FIelds y el otro se llama UpdateFiels, en Key Fields seleccionaría el campo id y en update Fields todos los campos, luego le diria que me genere el sql y el me daría estos resultados:

Código SQL [-]
//Modify
update TPERMISOS
set
  CODIGO = :CODIGO,
  NOMBRE = :NOMBRE
where
  CODIGO = :OLD_CODIGO


//Insert
insert into TPERMISOS
  (CODIGO, NOMBRE)
values
  (:CODIGO, :NOMBRE)

//Delete
delete from TPERMISOS
where
  CODIGO = :OLD_CODIGO


//refresh
Select 
  CODIGO,
  NOMBRE
from TPERMISOS 
where
  CODIGO = :CODIGO

con esto que me ahorro??, simple en cada unidad tener que estar poniendo

Código Delphi [-]
query.sql.clear;
query.sql.add('el select');
query.open;

query.sql.clear;
query.sql.add('el delete y su parametro');
query.paramByname('id').asInteger= varId;

query.sql.clear;
query.sql.add('el update y su parametro');
query.sql.ParamByName('id').asInteger;


y solo usaría comandos como:

Código Delphi [-]
xxQPermisos.opent;
xxQPermisos.Edit;
xxQPermisos.Insert;
xxQPermisos.Delete;
xxQPermisos.Refresh;
xxQPermisos.post;
xxQPermisos.applyUpdates;
Responder Con Cita
  #7  
Antiguo 30-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
se me olvidaba, en el msn anterior las xx pueden ser remplazadas por IB o MDO o el componente que se use.
Responder Con Cita
  #8  
Antiguo 30-03-2007
Avatar de UREÑA
UREÑA UREÑA is offline
Miembro
 
Registrado: feb 2007
Posts: 75
Poder: 20
UREÑA Va por buen camino
Talking

amigos les agradesco todos sus comentarios ya que como apenas estoy enpezando este tipo de criticas me sirven mucho para mejorar

y si me pueden dar consejos manuales o alguna url de una buena pagina, lo que sea se los agradeceria mucho

saludos
Responder Con Cita
  #9  
Antiguo 30-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
busca un pdf llamdo "la cara oculta de Delphi 4", es muy bueno para empesar (o contiunar) con Delphi
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
eliminar scrollbar en DBGRID cocke C++ Builder 2 25-11-2006 05:01:51
deshabilitar eliminar desde un dbgrid morfeo21 Varios 2 13-10-2005 06:53:47
eliminar elemento del dbgrid Torreblanca Varios 5 10-10-2005 14:36:22
eliminar opcion de eliminar en un dbgrid morfeo21 Varios 3 14-07-2005 17:05:32
Eliminar columna(DbGrid) en tiempo de ejecucion bestiux Conexión con bases de datos 5 08-06-2004 18:06:44


La franja horaria es GMT +2. Ahora son las 23:57:50.


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