https://foro.gambas-es.org/viewtopic.php?f=3&t=7617&p=45594#p45594
-----------------------------------
shordi
Domingo, 11 Agosto 2019, 17:14

Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
-----------------------------------
[quote user="gambafeliz" post="45590"]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"
[/quote]
No. Es sólo por dar una longitud preestablecida a los campos numéricos pero no es necesario realmente.
[quote]
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?
[/quote] 
En el propio código tienes un ejemplo de una manera de hacerlo:
[code linenumbers=false syntax=gambas]   
    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
[/code]

[quote]
¿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

------------------------------------------------------------
[/quote]
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.

[quote]

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.
------------------------------------------------------------------
[/quote]
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"...
[quote]
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?[/quote]
Te digo lo de antes: como no sé qué quieres hacer no puedo decirte nada.

Saludos


