Mensajes: 4982 Ubicación: Albacete
Domingo, 11 Agosto 2019, 17:14
gambafeliz escribió:
shordi unas preguntas.
Es necesario esto: tvCampos[n, 2].Text = "11" ¿solo te pregunto?
Case gb.Currency
tvCampos[n, 1].text = "Currency"
tvCampos[n, 2].Text = "11" <---
Case gb.Float
tvCampos[n, 1].text = "Float"
tvCampos[n, 2].Text = "11" <------
Case gb.Integer
tvCampos[n, 1].text = "Integer"
tvCampos[n, 2].Text = "11" <------
Case db.Date
tvCampos[n, 1].text = "Date"
Case Else
tvCampos[n, 1].text = "Text"
No. Es sólo por dar una longitud preestablecida a los campos numéricos pero no es necesario realmente.
Citar:
Por otra parte si quiero sustituir tu tableview por arrays como lo harías, por ejemplo con un array de dos dimensiones, ¿seria lo correcto?. Y si dices si a lo del código, ¿es suficiente con dos dimensiones?
En el propio código tienes un ejemplo de una manera de hacerlo:
Dim col, arv As New Variant[] 'Aquí definimos dos array de tipo variant
...
...
For n = 0 To tvCampos.Rows.Max
arv = New Variant[4] 'aquí inicializamos uno de los array dándole cuatro elementos vacíos
'---------------desde aquí hasta la siguiente nota le damos valor a los cuatro elementos declarados
arv[0] = tvCampos[n, 0].Text
arv[1] = IIf(tvCampos[n, 1].Text = "Serial", "INTEGER PRIMARY KEY AUTOINCREMENT", tvCampos[n, 1].Text)
If tvCampos[n, 2].Text Then
arv[2] = Val(tvCampos[n, 2].Text)
Else
arv[2] = Null
Endif
If tvCampos[n, 3].text Then
arv[3] = Val(tvCampos[n, 3].Text)
Else
arv[3] = Null
Endif
'------------------ hasta aquí. Ahora disponemos de arv con cuatro elementos a los que hemos dado valor
col.Add(arv) ' y añadimos este array como elemento del array col. A partir de ahí ya tienes una tabla con dos dimensiones que puedes nombrar como col[n][i], o recorrer en un bucle for each o for, según te convenga.
Next
Citar:
¿Como se carga un array dos dimensiones en
gambas?
------------------------------------------------------------------
He encontrado esto:
" You can create dynamically an array with any number of dimensions and
any size in each dimension, but once instanciated, you cannot modify the
size and the number of dimensions.
The only exception is arrays with one dimension, where the size can be
increased or decreased.
So:
Codice:
gambas [Seleziona]
Dim myArray As Integer[]
myArray = New Integer[Expr1, Expr2, Expr3]
If you don't know the number of dimensions at design time, you have to
do that:
Codice:
gambas [Seleziona]
Dim myDimensions As Integer[]
myArray = Object.New("Integer[]", myDimensions)
Regards,
--
Benoît Minisini
------------------------------------------------------------
Ambas maneras son válidas, por supuesto. Depende de tu caso. Yo no suelo usar ninguna de ellas. Si conozco el número lo hago como más arriba muesto al crear la instancia de arv y si no conozco el número los voy añadiendo de uno en uno.
Sin saber lo que quieres hacer exactamente no te sé decir qué es lo mejor exactamente.
Citar:
Más...
Como se pasa el formulario y sus controles así como el código a mi proyecto en
gambas, ¿tengo que hacerlo a mano o simplemente copiar y pegar o como?
------------------------------------------------------------------
Se me ha ocurrido copiar los archivos CrearImport.class, CrearImport.form y mDB.module de la carpeta .src a mi carpeta .src de mi proyecto. No se si es el método usado por todos ustedes, pero es lo que se me ha ocurrido. Si es incorrecto por favor díganmelo.
------------------------------------------------------------------
La copia de archivos es algo que yo hago mucho, sólo ten en cuenta primero cerrar el IDE para que no haya confusiones.
La manera "oficial" es pulsando botón derecho en el arbol de objetos de la izquierda del IDE y usar la opción "Importar"...
Citar:
Nota final: Al final estoy pensando dejar el tableview y ponerlo invisible y dimensionarlo a un pequeño cuadrito, y así no tengo que cambiar gran parte del código, ¿que opinas?
Te digo lo de antes: como no sé qué quieres hacer no puedo decirte nada.
Saludos