![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Optimizacion de actualizacion de Campo
Buenas mi consulta tiene que ver mas con optimización de esta consulta que aunque hace lo que requiero que este caso es actualizar precios calculándolos en base a una tasa, una la hago general o por clasificación aquí adjunto mi código uso firebird 2.5 con firedac,
Última edición por Neftali [Germán.Estévez] fecha: 20-10-2020 a las 17:19:09. Razón: Corregir la SQL para mejorar la visualizacion |
#2
|
||||
|
||||
Tienes que meterlo todo en una quey. Hazlo directamente en la BD y evita ese bucle en el código en el que no parece que hagas nada que no se pueda integrar en una sentencia SQL.
|
#3
|
|||
|
|||
Tuve un problema similar con la optimización, debes acceder directamente a los campos y no usar FieldByName("TuCampo"). Al usar de esta manera:
Internamente Delphi convierte el valor a currency y si son datos masivos se nota la diferencia. Debes definir en tiempo de diseño los campos del dataset y usar de esta forma: Aplique esta forma en mi caso y mejoró la velocidad de ejecución. Saludos. |
#4
|
|||
|
|||
Cita:
[dcc32 Error] UnitTasa.pas(76): E2003 Undeclared identifier: 'sqlproductosPRECIO1' |
#5
|
|||
|
|||
Cita:
1.- En tu primer post pusiste esta consulta: Ese código debes especificar que datos vas a necesitar, entiendo que quieres actualizar todos los productos, pero debes especificar que campos vas a necesitar, asi optimizaras mejor el rendimiento. Quedaría así según tu codigo:
2.- He de suponer que usas módulos de datos para colocar lo componentes de base de datos. Ahora suponiendo que usas Firebird, debes colocar un ibquery definir la consulta sql: Luego das botón derecho en el ibquery y click en "Fields Editor" y sale una nueva ventana y haces botón derecho haces click en "Add all fields". Con esto ya has creado todos los campos y el mismo proceso para hacer con el clientdetaset para definir sus campos, s´plo que ya no debes poner ninguna sentencia sql sólo debes enlazarlo con un datsetprovider como puente entre ibquery y el clientdataset. Si tienes dudas sobre esto hay una pagina en internet que se denomina "Delphi al limite" tiene bastantes ejemplos sobre clientdataset, ibquery, datasetprovider. Una ver definido los campos anteriores recien puedes poner este código: Donde "datos" he de suponer el modulos de datos, "sqlproductos" es el dataset y "PRECIO1" es el campo. Saludos. |
#6
|
|||
|
|||
Cita:
|
#7
|
|||
|
|||
Ahora cómo te dijeron Casimiro y Kuan-Yiu hacerlo en la base de datos sería aun más rápido. Pero ya depende de ti como lo quieres hacer.
|
#8
|
|||
|
|||
Me gustaria hacerlo ennla base de datos pero no tengo ni idea
|
#9
|
||||
|
||||
Cita:
![]() |
#10
|
|||
|
|||
el bucle lo hagopara recorrer la consulta y el campo a actualizar
|
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con actualizacion de campo calculado | rloayzal | Conexión con bases de datos | 9 | 18-12-2008 18:10:36 |
Actualizacion de un campo desde un trigger | fedat | Firebird e Interbase | 2 | 14-11-2007 01:13:00 |
Actualización de campo Boolean | PINO72 | Firebird e Interbase | 1 | 09-02-2005 21:28:21 |
Actualización de campo BLOB. | mlara | Firebird e Interbase | 0 | 13-03-2004 18:10:35 |
![]() |
|