|
Página 3 de 5
|
Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Cami...
Autor |
Mensaje |
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
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
=================== No podemos regresar
|
#21 Domingo, 11 Agosto 2019, 17:14 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
shordi escribió: ....
Saludos
Me ha surgido un problema pero ni se si es un problema ya que estoy mas perdido que barco sin arroz. Te explico:
Tienes esto:
Public Sub Form_Open()
Settings.Read(Me)
Public Sub form_Close()
Settings.Write(Me)
Y estoy tan perdido que ni se para que sirve y si influye en algo ponerle en REM (comentarlo)
¿Me lo cuentas por favor?
Nota: Parece que quitando estas dos lineas de Settings funciona bien. Te adjunto 2 imagenes de lo que estoy haciendo.
Descripción: |
|
Descargar |
Nombre del archivo: |
imagenes.zip |
Tamaño: |
33.19 KB |
Descargado: |
167 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
imagenes.zip |
Tamaño: |
33.19 KB |
Descargado: |
167 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
imagenes.zip |
Tamaño: |
33.19 KB |
Descargado: |
167 veces |
última edición por gambafeliz el Domingo, 11 Agosto 2019, 18:57; editado 3 veces
|
#22 Domingo, 11 Agosto 2019, 18:24 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
gambafeliz escribió: shordi escribió: ....
Saludos
Me ha surgido un problema pero ni se si es un problema ya que estoy mas perdido que barco sin arroz. Te explico:
Tienes esto:
Public Sub Form_Open()
Settings.Read(Me)
Public Sub form_Close()
Settings.Write(Me)
Y estoy tan perdido que ni se para que sirve y si influye en algo ponerle en REM (comentarlo)
¿Me lo cuentas por favor?
Nota: Parece que quitando estas dos lineas de Settings funciona bien. Te adjunto 2 imagenes de lo que estoy haciendo.
Settings.write(me)guarda la arquitectura del formulario (posición, tamaño). Settings.read(me) las restaura.
Así el formulario se abre en "la última posición conocida", como dicen los militares.
Luego miro las imágenes.
Saludos
=================== No podemos regresar
|
#23 Domingo, 11 Agosto 2019, 22:29 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
Shordi tengo un problemita.
En este código:
If Not mDB.creatabla(hcon, tablename.Text, col) Then
Message.Error(Error.Text & "-" & Error.Where)
Dec Application.Busy
Return
Endif
Cuando salta es por que intento crear una tabla que ya existe pero después aunque cambie el nombre solo de la tabla, el botón crear no me funciona y por ahora no veo por que, supongo que es que me falta entender el código o quizás no veo o entiendo algo. ¿Por favor, me ayudas?
Gracias.
Nota: Estoy pensando poner un botón o disparar un evento para limpiar digamos el formulario de la conversión CSV, me puedes decir si es que quizás tu crear un temporal o algo así que debo eliminar antes o que se yo. Es que solo me funciona una sola vez y después tengo que cerrar y abrir de nuevo la aplicación desde el IDE de gambas.
|
#24 Viernes, 16 Agosto 2019, 21:04 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
gambafeliz escribió: Shordi tengo un problemita.
En este código:
If Not mDB.creatabla(hcon, tablename.Text, col) Then
Message.Error(Error.Text & "-" & Error.Where)
Dec Application.Busy
Return
Endif
Cuando salta es por que intento crear una tabla que ya existe pero después aunque cambie el nombre solo de la tabla, el botón crear no me funciona y por ahora no veo por que, supongo que es que me falta entender el código o quizás no veo o entiendo algo. ¿Por favor, me ayudas?
Gracias.
Nota: Estoy pensando poner un botón o disparar un evento para limpiar digamos el formulario de la conversión CSV, me puedes decir si es que quizás tu crear un temporal o algo así que debo eliminar antes o que se yo. Es que solo me funciona una sola vez y después tengo que cerrar y abrir de nuevo la aplicación desde el IDE de Gambas.
Error mío (claro, ¿De quién si no?)
Como la carga puede durar un rato según tamaño del .csv, como profilaxis bloqueé todos los eventos del botón hasta que terminase, pero equivoqué el punto donde empezar el bloqueo, con el efecto de que en caso de error no desbloqueaba el botón y lo dejaba inútil.
Desplaza la línea que dice:
a la línea anterior del bucle de carga (la 175, creo)
También he añadido esto al final:
de forma que no se mantenga el bloqueo caso de un error inesperado durante la ejecución del bucle.
He actualizado el proyecto en el adjunto del inicio de este hilo. Es el 0.0.3, por si te quieres ahorrar el tema de hacerlo tú.
Saludos
=================== No podemos regresar
|
#25 Sabado, 17 Agosto 2019, 08:51 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
[quote user="shordi" post="45648"] gambafeliz escribió:
de forma que no se mantenga el bloqueo caso de un error inesperado durante la ejecución del bucle.
He actualizado el proyecto en el adjunto del inicio de este hilo. Es el 0.0.3, por si te quieres ahorrar el tema de hacerlo tú.
Saludos
Mira shordi no se que decir, muchísimas gracias. Os portáis en este foro que no se ni expresar con palabrejas lo bien que lo hacéis todos. Gracias de verdad. Esto es un foro de personas estupendas.
|
#26 Sabado, 17 Agosto 2019, 19:27 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
=================== No podemos regresar
|
#27 Sabado, 17 Agosto 2019, 20:20 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
shordi escribió:
Desplaza la línea que dice:
a la línea anterior del bucle de carga (la 175, creo)
También he añadido esto al final:
de forma que no se mantenga el bloqueo caso de un error inesperado durante la ejecución del bucle.
He actualizado el proyecto en el adjunto del inicio de este hilo. Es el 0.0.3, por si te quieres ahorrar el tema de hacerlo tú.
Saludos
De momento arreglado con tus indicaciones, Gracias...
|
#28 Domingo, 18 Agosto 2019, 11:32 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
Hola, shordi
Necesito hacerte una pregunta sobre este programa. En la subrutina "bCargarCabcsv()" es donde determinas el tipo de campo en la base de datos o donde me puede copiar el trozo de código para que lo entienda.
Te voy a decir por que, es que no veo donde tu determinas en un campo con un contenido de fecha cuando es Date o por alguna razón determinas que es Cadena (aunque sea una fecha pero quizás no es válida)
No se si te lo he explicado bien, pero básicamente es por eso, necesito comprenderlo.
Gracias.
|
#29 Martes, 20 Agosto 2019, 18:18 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
gambafeliz escribió: Hola, shordi
Necesito hacerte una pregunta sobre este programa. En la subrutina "bCargarCabcsv()" es donde determinas el tipo de campo en la base de datos o donde me puede copiar el trozo de código para que lo entienda.
Te voy a decir por que, es que no veo donde tu determinas en un campo con un contenido de fecha cuando es Date o por alguna razón determinas que es Cadena (aunque sea una fecha pero quizás no es válida)
No se si te lo he explicado bien, pero básicamente es por eso, necesito comprenderlo.
Gracias.
El tipo se determina en la línea 103 (la que dice "Select case typeOf(val(...") con la función Val pasando el valor a la función TypeOf
For n = 0 To dat.Max
If cbCabeceras.Value Then
If cbNoComillas.value Then
tvCampos[n, 0].text = UnQuote(RTrim$(LTrim$(cab[n])))
Else
tvCampos[n, 0].text = RTrim$(LTrim$(cab[n]))
Endif
Else
tvCampos[n, 0].Text = "Campo " & Str(n)
Endif
Select Case TypeOf(Val(Replace(dat[n], ".", ","))) 'Val reconoce las locales y los números con . los da como texto. Así admite ambos formatos
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"
End Select
Next
Echale un ojo a esto:
http://gambaswiki.org/wiki/lang/val?l=es&nh
Saludos
=================== No podemos regresar
|
#30 Martes, 20 Agosto 2019, 19:52 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 3 de 5
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|