Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de TdbgridehTengo una base de datos de acceso con más de 65,438 00,000 registros. Al realizar consultas, todos los datos después de ADOQuery se muestran en el control DevExpress cxGrid a través del control DataSource, y tarda 5 segundos en responder a la operación del usuario cada vez. ¿Puede proporcionarnos una forma de hacer que la cuadrícula responda? Al igual que cuando abre una tabla con una gran cantidad de datos en Access o SQL SERVER, después de mostrar algunos datos, otros datos se actualizarán en segundo plano. Cuando muestra los datos en una página, la velocidad aumentará. . . Sí, eso es lo que quiero, pero ¿cómo mostrarlo en la página? Será útil seguir esta publicación ~ También quiero saber que nunca he usado cxGrid, pero uso DBGrid para mostrar una tabla con más de 40,000 registros en la base de datos de Access, lo que solo toma dos o tres segundos. ¿Puedes decirme cómo afrontarlo? Lo mejor es optimizar los datos (declaración de consulta). . Intente no mostrar tantos bits como sea posible. De hecho, no importa qué tan bueno sea el control de la red de datos. . Cuando la cantidad de datos es grande. . Habrá un problema más lento. . Debido a que el tamaño de la pantalla es limitado, mostrar 30 registros por pantalla es casi suficiente. Las páginas anterior y siguiente se manejan en el programa. El programa permite al usuario configurar el número de registros que se muestran en cada pantalla. ¿Tengo que escribir mi propio programa para controlar la cantidad de visualizaciones por página? ¿No tiene el control de la red de datos las funciones anteriores? Al igual que SQL SERVER o ACCESS, cuando la cantidad de datos es grande, comienza desde una página y luego puede responder a las operaciones del usuario. Al mismo tiempo, se siguen añadiendo en segundo plano otros datos que no se muestran en el control de la cuadrícula de datos. Por favor ayuda a apagarlo. . . ¿Qué tal pedir ayuda? Existen diferencias esenciales entre dbGrid y StringGrid (su cxGrid debe ser StringGrid). dbGrid solo necesita mostrar el área del número de fila, también se puede decir que dbGrid tiene función de paginación. No, Sterling Grider. Puede utilizar el control de cuadrícula de DevExpress al cargar. Tiene en cuenta los datos y obtiene el conjunto de datos a través del control DataSource, pero aún no he encontrado su funcionalidad de paginación. Por favor ayuda a cxGrid. Nunca lo he usado, pero usé DBGrid para mostrar una tabla con más de 90.000 registros en una base de datos de Access, y solo me tomó de dos a tres segundos. CPU: P-M1.4 Memoria: Disco duro de 256 M o 4200 rpm. También tengo un cuaderno. Somos casi iguales. La clave no es solo consultar, sino también realizar algunas operaciones SQL, por lo que el tiempo se retrasa. Creo que la razón principal es que la velocidad del control de la tabla de datos no es suficiente. No es necesario agregar una tabla de datos, puede realizar consultas de forma independiente y puede seguir rápidamente la selección de información del producto por parte del usuario. ¿Cómo lo afrontaste? Probablemente haya decenas de miles de registros en la tabla de información del producto. El propio CxGrid también convierte registros de datos. Tiene su propio formato de registro de datos, por lo que la velocidad es más lenta. Es innegable que cxGrid es poderoso. Sus funciones de consulta, filtrado, agrupación y otras pueden evitar que escriba una línea de código. Enterprise Manager de SQL Server y clientes similares (como iSeries de DB2) no reciben todos los registros devueltos en cada consulta. Dejan de recibir después de una cierta cantidad de registros y luego reciben los registros restantes cuando el cliente los necesita. Esto lo hace el cliente. ¿El anfitrión cometió un error? Con referencia al código fuente de DBGrids.pas (TCustomDBGrid.DrawCell), los datos mostrados por DBGrid muestran cuántas filas de datos se han leído, en lugar de leer todo el conjunto de datos en la memoria, por lo que incluso si hay 100 millones de datos , no se mostrará pasando demasiado tiempo. Conectar el componente del conjunto de datos y el programa de la base de datos a la base de datos lleva tiempo y DBGrid no guarda los datos que no se muestran. StringGrid es obviamente diferente de DBGrid. La fuente de datos de DBGrid proviene del conjunto de datos y la fuente de datos de StringGrid proviene de la memoria, por lo que los datos deben guardarse en la memoria antes de mostrar StringGrid. La idea del cartel original solo tiene sentido para StringGrid y no es necesario recuperar datos del fondo.

Código fuente de TdbgridehTengo una base de datos de acceso con más de 65,438 00,000 registros. Al realizar consultas, todos los datos después de ADOQuery se muestran en el control DevExpress cxGrid a través del control DataSource, y tarda 5 segundos en responder a la operación del usuario cada vez. ¿Puede proporcionarnos una forma de hacer que la cuadrícula responda? Al igual que cuando abre una tabla con una gran cantidad de datos en Access o SQL SERVER, después de mostrar algunos datos, otros datos se actualizarán en segundo plano. Cuando muestra los datos en una página, la velocidad aumentará. . . Sí, eso es lo que quiero, pero ¿cómo mostrarlo en la página? Será útil seguir esta publicación ~ También quiero saber que nunca he usado cxGrid, pero uso DBGrid para mostrar una tabla con más de 40,000 registros en la base de datos de Access, lo que solo toma dos o tres segundos. ¿Puedes decirme cómo afrontarlo? Lo mejor es optimizar los datos (declaración de consulta). . Intente no mostrar tantos bits como sea posible. De hecho, no importa qué tan bueno sea el control de la red de datos. . Cuando la cantidad de datos es grande. . Habrá un problema más lento. . Debido a que el tamaño de la pantalla es limitado, mostrar 30 registros por pantalla es casi suficiente. Las páginas anterior y siguiente se manejan en el programa. El programa permite al usuario configurar el número de registros que se muestran en cada pantalla. ¿Tengo que escribir mi propio programa para controlar la cantidad de visualizaciones por página? ¿No tiene el control de la red de datos las funciones anteriores? Al igual que SQL SERVER o ACCESS, cuando la cantidad de datos es grande, comienza desde una página y luego puede responder a las operaciones del usuario. Al mismo tiempo, se siguen añadiendo en segundo plano otros datos que no se muestran en el control de la cuadrícula de datos. Por favor ayuda a apagarlo. . . ¿Qué tal pedir ayuda? Existen diferencias esenciales entre dbGrid y StringGrid (su cxGrid debe ser StringGrid). dbGrid solo necesita mostrar el área del número de fila, también se puede decir que dbGrid tiene función de paginación. No, Sterling Grider. Puede utilizar el control de cuadrícula de DevExpress al cargar. Tiene en cuenta los datos y obtiene el conjunto de datos a través del control DataSource, pero aún no he encontrado su funcionalidad de paginación. Por favor ayuda a cxGrid. Nunca lo he usado, pero usé DBGrid para mostrar una tabla con más de 90.000 registros en una base de datos de Access, y solo me tomó de dos a tres segundos. CPU: P-M1.4 Memoria: Disco duro de 256 M o 4200 rpm. También tengo un cuaderno. Somos casi iguales. La clave no es solo consultar, sino también realizar algunas operaciones SQL, por lo que el tiempo se retrasa. Creo que la razón principal es que la velocidad del control de la tabla de datos no es suficiente. No es necesario agregar una tabla de datos, puede realizar consultas de forma independiente y puede seguir rápidamente la selección de información del producto por parte del usuario. ¿Cómo lo afrontaste? Probablemente haya decenas de miles de registros en la tabla de información del producto. El propio CxGrid también convierte registros de datos. Tiene su propio formato de registro de datos, por lo que la velocidad es más lenta. Es innegable que cxGrid es poderoso. Sus funciones de consulta, filtrado, agrupación y otras pueden evitar que escriba una línea de código. Enterprise Manager de SQL Server y clientes similares (como iSeries de DB2) no reciben todos los registros devueltos en cada consulta. Dejan de recibir después de una cierta cantidad de registros y luego reciben los registros restantes cuando el cliente los necesita. Esto lo hace el cliente. ¿El anfitrión cometió un error? Con referencia al código fuente de DBGrids.pas (TCustomDBGrid.DrawCell), los datos mostrados por DBGrid muestran cuántas filas de datos se han leído, en lugar de leer todo el conjunto de datos en la memoria, por lo que incluso si hay 100 millones de datos , no se mostrará pasando demasiado tiempo. Conectar el componente del conjunto de datos y el programa de la base de datos a la base de datos lleva tiempo y DBGrid no guarda los datos que no se muestran. StringGrid es obviamente diferente de DBGrid. La fuente de datos de DBGrid proviene del conjunto de datos y la fuente de datos de StringGrid proviene de la memoria, por lo que los datos deben guardarse en la memoria antes de mostrar StringGrid. La idea del cartel original solo tiene sentido para StringGrid y no es necesario recuperar datos del fondo.

Simplemente supervise TopLeftRow de StringGrid y siga el ejemplo de DBGrid para leer los datos de la página actual. En cuanto a formularios como cxGrid, no se muestran lentamente, pero debido a que necesitan recorrer toda la base de datos una o incluso varias veces para completar varias funciones, son lentos y no hay una buena manera. Debido a que cxGrid debe mapear todos los campos y todos los registros a la vez después de leer los datos, la lentitud es inevitable. Si hay campos de búsqueda en la tabla, es aún más lento. ¿No hay manera de frenar? ¿Puedo cambiar sólo el control DBGrid? Dbgrideh también está bastante deprimido. ¿Quieres cambiar el control de la hoja de datos? El sistema ha sido completado y una gran cantidad de datos muestran que el problema de lentitud sólo se descubrió durante el uso y mantenimiento. Reemplazar todos los controles no es una cuestión sencilla. Para beneficio de los usuarios, cambie el control y publíquelo mañana para ver si hay alguna esperanza. Renunciar a algunas funciones de cxgrid puede acelerar las cosas. No usaré cxgrid casualmente, porque después de actualizar de dxgrid a cxgrid, los programas que escribí antes serán descartados. ¿Qué debo hacer si vengo a exgrid y fxgrid en el futuro? Primero, cxgrid tiene muchas características que puedes usar al programar, pero ¿lo usarán los usuarios que ni siquiera saben mucho sobre computadoras? ¿Son útiles algunas funciones? Por no hablar de China, no creo que los extranjeros puedan usarlo. En segundo lugar, muchas de las funciones de operación del mouse de cxgrid son realmente atractivas como visualización en pantalla, pero estas funciones no tienen sentido excepto para dedicar tiempo a procesar cosas. En tercer lugar, el control cxgrid es muy especial e incompatible con otras cosas, ni siquiera con su propio dxgrid. Es fácil colgar de este árbol. Si quieres cambiar el control, tendrás que reescribir todo el programa y tus ideas cambiarán. Cuarto, sí, cxGrid tiene muchas deficiencias. No es imposible cambiar el control de la tabla de datos, pero hay una razón: el sistema se ha completado y utilizado durante mucho tiempo, y cambiar el control puede introducir errores. Muchas tablas de datos necesitan usar relaciones maestro-esclavo o incluso de tres niveles, y otros controles de terceros deben usarse sin cxGrid, que también tiene problemas de compatibilidad. En tercer lugar, confío en las capacidades de I+D de DevExpress y creo que debe haber una solución. En tercer lugar, confío en las capacidades de I+D de Devexpress. No quiero simplemente rendirme y seguir probando otros métodos. El cuarto es este. Jeje, no me culpes por imitar a la persona de arriba. Quizás el subproceso múltiple también funcione. Lo intentaré esta noche. Al observar los registros de datos mostrados por SQL SERVER y ACCESS, parece que se utilizan subprocesos múltiples... El cartel original, vierta agua fría sobre él. Una vez que utilice subprocesos múltiples en la base de datos, encontrará una dificultad sin precedentes: la seguridad del subproceso del control del conjunto de datos. Por ejemplo, hay varios subprocesos que utilizan un conjunto de controles de datos A: = conjunto de datos. Campos ordenados por nombre (* * *). Estúpido. B: =conjunto de datos. Campos ordenados por nombre (* * *). Estúpido. Estas dos oraciones se ejecutan continuamente. A veces B es igual a A y otras veces no es igual. Se producirán errores de lectura e incluso se informarán errores fatales que empeñarán el programa. Debido a que el control de datos ha sido modificado o eliminado por otros subprocesos, o dos subprocesos lo leen al mismo tiempo, usar Sincronizar puede resolver el problema, pero esto es un retorno disfrazado a un solo subproceso, que es incluso más lento que la ejecución de un solo subproceso. . El resultado sale de este pozo y cae nuevamente a otro pozo, y se hunde más y más. Desde el punto de vista de la experiencia, lo creas o no, puedes intentarlo. La forma más sencilla es reducir la cantidad de datos leídos cada vez. Parece que no es necesario leer decenas de miles de datos a la vez. 1:.Desactivar control 2:Ir a 3:. Habilitar controles. Hoy no tengo tiempo, hay demasiadas cosas triviales que requieren que me calme y escriba código. Gracias a todos por sus generosas sugerencias. En palabras de "Un mundo sin ladrones": "Quiero probarlo". No he encontrado una buena solución después de posponer las cosas durante un día. Parece que en futuros programas solo se utilizará la visualización de páginas.