Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Temas de optimización Delphi y MySql
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Temas de optimización Delphi y MySql

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
agustinbus
Excelente usuario


Registrado: Apr 17, 2009
Mensajes: 38

Asunto: Temas de optimización Delphi y MySql Responder citando

Como andan? Abro este nuevo tema porque tengo varias dudas de acuerdo a como realizar aplicaciones que sean eficientes.
Queria saber:

//=======================================
//Insertar o editar registros a una BBDD en MySql desde delphi
//=======================================

1- Hay mucha diferencia entre...?:

* Hacer una consulta insert MySql.
* Utilizar FieldByName()
* Utilizar TNavigator para insertar
------------------------------------------------------------------------------------
En el caso de que sea lo mismo o muy parecido (hablando de eficiencia) no hay problema, pero .... ¿si es mas eficiente una consulta Insert?...:

- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...

- ¿Tiene algo que ver el ADOCommand?

- ¿Puede ser utiliazado para insertar en un ADOTable?

Espero sus respuestas.
Un saludo!
MensajePublicado:
Lun Ene 04, 2010 8:00 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Temas de optimización Delphi y MySql Responder citando



Anuncios



agustinbus escribió:
Como andan? Abro este nuevo tema porque tengo varias dudas de acuerdo a como realizar aplicaciones que sean eficientes.
Queria saber:

//=======================================
//Insertar o editar registros a una BBDD en MySql desde delphi
//=======================================

1- Hay mucha diferencia entre...?:

* Hacer una consulta insert MySql.
* Utilizar FieldByName()
* Utilizar TNavigator para insertar
------------------------------------------------------------------------------------
En el caso de que sea lo mismo o muy parecido (hablando de eficiencia) no hay problema, pero .... ¿si es mas eficiente una consulta Insert?...:

- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...

- ¿Tiene algo que ver el ADOCommand?

- ¿Puede ser utiliazado para insertar en un ADOTable?

Espero sus respuestas.
Un saludo!


Veamos, de cara a la eficiencia del consumo de la capacidad de proceso de la base de datos, hay que diferenciar dos métodos: que los componentes estén enlazados a datos (TNavigator, TDBEdit, TDBComboBox, etc) y que no lo estén.

Si están enlazados a datos, como el caso del TNavigator para insertar, eliminar o editar registros, tienes que tener en cuenta que este método tiene una pequeña penalización con respecto a utilizar un INSERT en una consulta SQL. Si utilizas un INSERT o UPDATE en una consulta SQL sólo consumirá los recursos necesarios en el motor de base de datos para llevar a cabo la operación, en cambio, si utilizas controles enlazados, por el hecho de estar enlazados, estás utilizando una conexión con el motor de base de datos directamente.

Está claro que cada método es útil según qué circunstancias. Para una aplicación de gestión, por ejemplo, donde hay infinidad de componentes para inserción de datos y demás es muy recomendable utilizar componentes enlazados, sino te puedes imaginar la dificultad de los INSERT y UPDATES que tendrías que montar. Puede que consuma más recursos en el motor de base de datos pero te ahorrarías infinidad de problemas.

En cambio, si de verdad necesitas eficiencia al máximo, siempre será recomendable utilizar consultas SQL para ejecutar los INSERT y UPDATES, pero tendrás que montarlo todo a mano, algo muy engorroso.

Como ya sabrás, el control enlazado a datos tiene otras muchas ventajas, puedes ponerles máscaras desde el campo en los TTables, TQuery, si el tipo de datos es numérico se realizará la comprobación o si es de fecha y algunas cosas más.
MensajePublicado:
Vie Ene 08, 2010 4:28 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Temas de optimización Delphi y MySql Responder citando



Anuncios



agustinbus escribió:
- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...

- ¿Tiene algo que ver el ADOCommand?

- ¿Puede ser utiliazado para insertar en un ADOTable?

Espero sus respuestas.
Un saludo!


En cuanto a la segunda pregunta, si te refieres a ejecutar una consulta SQL de inserción (INSERT), puedes utilizar un ADOQuery con un código como el siguiente:

Código:

procedure TfrmFactura.InsertarFacturaClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add ('INSERT INTO nombre_tabla (campo1, campo2)');
  ADOQuery1.SQL.Add ('values ("valor 1", "valor 2"');
  ADOQuery1.ExecSQL;
end;


Efectivamente, con componente TADOTable no se pueden ejecutar consultas SQL.

Con un ADOComand sí puedes ejecutar consultas SQL que no devuelvan registros, por ejemplon INSERT, para ello puedes utilizar este código:

Código:

  ADOCommand1.CommandText := 'insert into prueba (campo1)  values (valor)';
  ADOCommand1.Execute;


Aunque el componente ADOCommand es más bien para ejecutar procedimientos almacenados y consultas de definición de datos (DDL).
MensajePublicado:
Vie Ene 08, 2010 5:02 pm
Top of PageVer perfil de usuario
agustinbus
Excelente usuario


Registrado: Apr 17, 2009
Mensajes: 38

Asunto: Re: Temas de optimización Delphi y MySql Responder citando



Anuncios



Hola alonsojpd! Muchas gracias por responder!
Cita:

En cuanto a la segunda pregunta, si te refieres a ejecutar una consulta SQL de inserción (INSERT), puedes utilizar un ADOQuery con un código como el siguiente:

Código:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('INSERT INTO nombre_tabla (campo1, campo2)');
ADOQuery1.SQL.Add ('values ("valor 1", "valor 2"');
ADOQuery1.ExecSQL;



Yo siempre utilicé consultas Insert para los Query yTNavigator para insertar en tablas (ya que no se pueden realizar consultas), pero ahora que me dices que para sistemas de gestion que son muy engorrosos no hay problema de utilizar control enlazado a datos voy a comenzar a hacerlo de esa manera.

Cita:

Como ya sabrás, el control enlazado a datos tiene otras muchas ventajas, puedes ponerles máscaras desde el campo en los TTables, TQuery, si el tipo de datos es numérico se realizará la comprobación o si es de fecha y algunas cosas más.



Yo utilizo mucho las mascaras para evitar errores humanos, agrego sets de datos TDatafields y les agrego mascaras en la propiedad displayformat.

Muchisimas gracias por dedicar tu tiempo a responder!
MensajePublicado:
Vie Ene 08, 2010 7:29 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A