![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
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:
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
el bucle lo hagopara recorrer la consulta y el campo a actualizar
|
#6
|
|||
|
|||
Cita:
[dcc32 Error] UnitTasa.pas(76): E2003 Undeclared identifier: 'sqlproductosPRECIO1' |
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
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.
|
#9
|
|||
|
|||
Me gustaria hacerlo ennla base de datos pero no tengo ni idea
|
#10
|
|||
|
|||
Cita:
|
#11
|
|||
|
|||
Cita:
De repente al definir los campos, delphi les puso otro nombre o con alguna diferencia, fijate en el nombre que le creo Delphi porque el mensaje es claro "identificado no declarado" y ese mensaje es claro y sólo se me ocurre: 1.- O no definiste los campos o 2.- Delphi le puso un nombre un poco diferente ejemplo: el nombre esperado es "sqlproductosPRECIO1" y delphi le puso "sqlTproductosPRECIO1". Ahora con respecto a hacerlo en base de datos si puedes investigar un poco acerca de procedimientos almacenados en firebird, con eso encontraras solución para realizarlo en base de datos, en internet hay bastante documentación al respecto de procedimientos almacenados. Saludos. |
#12
|
|||
|
|||
Aca hay un ejemplo de procedimiento almacenado en firebird:
http://www.clubdelphi.com/~marcsc/fo...ad.php?t=11090 Última edición por marco3k fecha: 22-10-2020 a las 16:24:07. |
#13
|
|||
|
|||
Cita:
|
#14
|
|||
|
|||
Estimado adjunto sugerencias para tu proceso de actualización:
Saludos cordiales |
#15
|
|||
|
|||
Cita:
me sigue saliendo el mismo error Última edición por webmasterplc fecha: 25-10-2020 a las 13:39:51. |
#16
|
|||
|
|||
Cita:
|
#17
|
|||
|
|||
![]() En las Opcion 1 y Opción 2, estan como setencias SQL...
Saludos |
#18
|
|||
|
|||
Cita:
|
#19
|
|||
|
|||
Que bueno que ya te funciono y ¿Se pudo optimizar a como estaba anteriormente?
Saludos. |
#20
|
|||
|
|||
El Rendimieto es mejor, ademas de que veo algun error antes de compilar
|
![]() |
|
|
![]() |
||||
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 |
![]() |
|