Grandamakulo 17-03-2025, 13:40
Hola, compañeros:
Me temo que no he sido capaz de explicar convenientemente el problema en el título del tema. En realidad, es que no es sencillo de explicar. Vayamos por partes, como dijo Jack.
Defino una estructura en un formulario y tres matrices —en realidad, vectores, pero vamos, no nos pongamos quejicosos—:

Código:
Public Struct struCampos
  Nombre As String              '?[0] Nombre en el programa de la columna ¿Quitar?'
  Texto As String              ' [1] Título de la columna, traducible'
  Tipo As String                ' [2] Cualquiera de los cuatro tipos posibles'
  Contenido As Variant          ' [3] Contenido por defecto para la columna:'
                                '    * Para texto: texto plano'
                                '    * Para listas:'
                                '      ?[0] índice entero ¿Quitar?'
                                '      [1] texto plano'
                                '      [2] color papel'
                                '      [3] color tinta'
                                '    * Para fechas: a definir'
  Color As Integer              ' [4] Color de fondo para toda la columna'
  ' NOTE: Aquí añadir gestión de fondos definiendo una banderita de auto'
  Resaltar As Boolean          ' [5] ¿Se resaltan los contenidos de esta lista?'
End Struct

Public $cFijos As New StruCampos[]          ' Campos obligatorios'
Public $cRemanentes As New StruCampos[]    ' Campos definidos no mostrados'
Public $cUsados As New StruCampos[]        ' Usados o visibles en columnas'

—Olvidémonos de los comentarios y de las malas praxis con los nombres, por el momento Smile —.
Inserto algunos elementos vacíos, pero les cambio la propiedad .Nombre:

Código:
  For i = 0 To lsoRemanentes.Count - 1
    Dim cDos As New StruCampos
    $cRemanentesP.Add(cDos)
    $cRemanentesP.Last.Nombre = lsoRemanentes[i].Text
  Next

Y resulta que siempre añade el mismo, es decir, cuando exploro la matriz todos, absolutamente todos los elementos son el mismo, en concreto, el último que he pasado.

Además, si se me ocurre pasar estas matrices entre formularios, por ejemplo:

Código:
  $cRemanentesP = FPral.$cRemanentes
  $cUsadosP = FPral.$cUsados
  $cFijosP = FPral.$cFijos

Resulta que pasa las matrices por referencia, no por valor, por lo que me las modifica en el origen. Es decir, si hago $cFijosP en el nuevo formulario para trabajar y después ver si hago los cambios definitivos y los paso o no a FPral.$cFijos, resulta que no, porque modifica ambas matrices como si fuesen la misma. 
Estoy convencidísimo que es una auténtica chorrada, pero mi torpeza e ignorancia me impide verlo. en fin, a ver si algún alma caritativa me ilumina. ¡Y muchas gracias de antemano!
Shordi 17-03-2025, 12:12
Con el mismo título que este post he subido un vídeo a Youtube a raíz del código de Shell que se muestra en él.
Lo tenéis aquí:




Saludos
Shell 16-03-2025, 14:01
Buenas!.

Quizás deba mejor mostrar esto en el foro de bases de datos. Huh

He creado un ejemplo para mostrar las tablas de una base de datos y sus registros.
Se puede seleccionar el archivo en concreto y ver en un GridView como es la tabla en cuestión.

[Imagen: 6lmePEHl.png]

He probado con distintos archivos de distintos tamaños.

¿ Qué hacéis cuando la base de datos es enorme ?.

En este ejemplo observo dos cosas. Imaginar una base de datos que contiene muchos registros.
A la hora de seleccionar en el combobox la tabla en concreto,si esta tiene muchos registros hay una demora,
en mostrar el nombre de la tabla tanto en el combobox como en el gridview.

El efecto es, ves la lista de tablas en el combobox, seleccionas y hasta que no se muestra la tabla en el gridview
no se muestra el nuevo cambio de item en el combobox.

He probado con un base de 40K registros y se nota. Siempre se nota esto si la base contiene muchos registros.
He probado con la base de los libros que se ha compartido por febrero. Esta tiene tres tablas, hay una que
se llama "fondo" que en este ejemplo le cuesta muuuuucho mostrar, se muestra el reloj varias veces y desistí.

 ¿ Cómo solucionáis esas situaciones ?

Estamos hablando de que la tabla fondos de la base libro tiene alrededor de 300K registros... Rolleyes


Ah, no he añadido ordenar las columnas. Estoy usando el evento Data para mostrar los registros en el gridview.
Sobre todo si son muchos.


Para el retardo del cambio de item a mostrar en el combobox he usado esto:


Código:
Public Sub cmbTablas_Click()

  Wait 0.1
  MostrarTablaEnGridView(cmbTablas.Current.Text)

End

Eso parece funcionar, otra es muy distinta el tiempo que se tarde en mostrar los registros en el GridView

Saludos

1:50'' para mostrar la tabla Fondos.
Archivos adjuntos
.gz
EjemploBrowserBaseSqlite-0.0.1.tar.gz (Tamaño: 10.56 KB Descargas: 2)
Páginas (556):    1 21 22 23 24 25 556   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 284
Último miembro: VALENTIN KORONADO
Temas del foro: 1,718
Mensajes del foro: 8,913
Últimos temas
Un sistema de ayudas cont...
Foro: Videotutoriales
Último mensaje por: Shordi, 30-05-2025, 13:22
Respuestas: 0 - Vistas: 98
Crear una aplicación para...
Foro: Bases de Datos
Último mensaje por: Shell, 29-05-2025, 20:11
Respuestas: 11 - Vistas: 932
Paso de parámetros a una ...
Foro: General
Último mensaje por: guizans, 29-05-2025, 19:27
Respuestas: 9 - Vistas: 452
Acceder a calendario de N...
Foro: General
Último mensaje por: guizans, 29-05-2025, 19:24
Respuestas: 4 - Vistas: 184
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.