• Viernes 8 de Noviembre de 2024, 10:10

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - alejos

Páginas: [1]
1
Visual Basic 6.0 e inferiores / Pasar de .mdb a .xls
« en: Martes 6 de Octubre de 2009, 17:19 »
Hola a todos,

Estoy creando una aplicación en la que tengo que pasar los registros de una base de datos .mdb a un archivo de Excel .xls. En mi código ya consigo crear el archivo excel e introducir algunos registros en el archivo, pero tengo dos problemas.

El primero es que tras haber creado y guardado el archivo, me aparece correctamente en el directorio que ha elegido el usuario, pero al abrirlo con el excel siempre se me abre el fichero creado más otro llamado Libro1.xls que ni siquiera aparece en el directorio.

El segundo problema es que no consigo que se guarden todos los registros de la base de datos en el archivo excel. Para ello creo un bucle hasta encotrar el EOF del recordset. Dentro de este bucle (el principal) voy rellenando el fichero de excel por filas y columnas. Si en segundo bucle de las filas introduzco un valor máximo entero (5 o 6) funciona pero sólo me guarda los 5 o 6 "últimos" registros de la  base de datos. Además si pongo un numero mayor de 6 se me vuelve a colgar (la base de datos que tengo para pruebas contiene 30 registros). Debería recorrer el recordset hasta el total de registros (rs.RecordCount) que contiene, pero se me cuelga el programa.

Aquí os presento mi código: (fijaos que en la línea 34 el bucle for es hasta el valor 6 pero debería ir puesto rs.RecordCount)

Código: Visual Basic
  1.  
  2.  
  3.     Dim i As Long
  4.     Dim j As Long
  5.    
  6.     Dim xlApp As Excel.Application
  7.     Dim xlBook As Excel.Workbook
  8.     Dim xlSheet As Excel.Worksheet
  9.  
  10.     dbname = App.Path
  11.     If Right$(dbname, 1) <> "" Then dbname = dbname & ""
  12.     dbname = dbname & "DatosVueloDB.mdb"
  13.     Set db = OpenDatabase(dbname)
  14.  
  15.     ' Obtener los records o valores.
  16.     Set qdef = db.CreateQueryDef("", "SELECT * FROM Tabla")
  17.     Set rs = qdef.OpenRecordset(dbOpenSnapshot)
  18.      
  19.     Dialogo.DialogTitle = "Destino - Seleccione el archivo de destino"
  20.     Dialogo.Filter = "Archivos de Datos (*.csv)|*.csv |Archivo de Excel (*.xlsx)|*.xlsx"
  21.     Dialogo.ShowOpen
  22.  
  23.     Dialogo.FileName <> "" And Dialogo.FilterIndex = 2 Then
  24.      
  25.         Set xlApp = New Excel.Application
  26.         Set xlBook = xlApp.Workbooks.Add
  27.         Set xlSheet = xlBook.Worksheets.Add
  28.  
  29.         For i = 1 To rs.Fields.Count
  30.                xlSheet.Cells(1, i).Value = rs.Fields(i - 1).Name    'Relleno la primera fila del fichero excel con el nombre de los campos
  31.         Next i
  32.        
  33.         Do While Not rs.EOF
  34.             For j = 2 To 6    'rs.RecordCount                    ' empiezo a rellenar desde la segunda fila hasta el total de registros de la base de datos
  35.                  For i = 1 To rs.Fields.Count                      ' empiezo a llenar las columnas hasta el total de campos de la base de datos
  36.                       xlSheet.Cells(j, i).Value = rs.Fields(i-1).Value
  37.                  Next i
  38.                
  39.                 rs.MoveNext        'Siguiente registro
  40.             Next j
  41.         Loop
  42.  
  43.         xlSheet.SaveAs Dialogo.FileName          'guardo el fichero excel con el nombre del usuario
  44.        
  45.         xlApp.Quit                               'cierro todo, fichero y conexion de la base de datos
  46.         Set xlApp = Nothing
  47.         'Set xlBook = Nothing
  48.         Set xlSheet = Nothing
  49.         rs.Close
  50.         db.Close
  51.  
  52.  

Espero que podáis ayudarme. He mirado por todos los lados pero para pasar de .mdb a .xls hay poca información. Sólo encuentro información para hacer el paso contrario. Pero esto no me sirve.

Espero que me podáis ayudar. Muchas gracias por adelantado.

Saludos
Alejos

2
Visual Basic 6.0 e inferiores / Re: Gráfica XY en MSChart de VB6.0
« en: Miércoles 30 de Septiembre de 2009, 17:57 »
Buf, llamadme tonto... jejeje. Me vuelvo a responder yo mismo...

Solución: nada más tonto como un índice  i = i+2 y que debería ser i=i+1, con lo que añadía un registro de ceros al final de la base de datos de la que tomaba los datos para la gráfica.


Saludos
Alejos

3
Visual Basic 6.0 e inferiores / Re: Gráfica XY en MSChart de VB6.0
« en: Miércoles 30 de Septiembre de 2009, 17:12 »
Me contesto yo mismo. He encontrado una página donde buscando una solución para otro problema, me he encontrado con la solución.

support.microsoft.com/kb/194221/es

No se si se pueden poner enlaces a otras páginas. Si no se puede, pido disculpas por adelantado.

De todas formas, aunque haya solucionado este problema me he encontrado con otro que sí que no consigo encontrar solución. Mirad la gráfica que obtengo (ver imagen que adjunto), en ella el último punto se une con el origen inexplicablemente... nunca había visto eso. Alguien me puede decir cómo puede evitar esto?

Gracias por vuestra ayuda...

Saludos
Alejos

4
Visual Basic 6.0 e inferiores / Gráfica XY en MSChart de VB6.0
« en: Miércoles 30 de Septiembre de 2009, 00:12 »
Hola a todos,  tengo un problema con el MSChart para dibujar una gráfica y quería pedirles ayuda. He buscado en este y muchos foros y no encuentro ninguna solución.

Quiero dibujar una gráfica de tipo XY con el MSChart de VB6. El código que uso es el siguiente:
Código: Visual Basic
  1.  
  2. If Option1.Value = True Then
  3.  
  4.         ' Obtener los records o valores.
  5.         Set qdef = db.CreateQueryDef("", "SELECT Cantidad , Muestra FROM Tabla")
  6.         Set rs = qdef.OpenRecordset(dbOpenSnapshot)
  7.        
  8.         'Ver cuántos valores hay.
  9.         rs.MoveLast
  10.         NumPoints = rs.RecordCount
  11.         ReDim Values(1 To NumPoints, 1 To 2)
  12.  
  13.         'Cargar los datos.
  14.         rs.MoveFirst
  15.         For i = 1 To NumPoints
  16.              Values(i, 1) = rs!Muestra
  17.              Values(i, 2) = rs!Cantidad
  18.              rs.MoveNext
  19.         Next i
  20.        
  21.         'Dibujar gráfica
  22.         Chart.chartType = VtChChartType2dXY
  23.         Chart.Plot.Axis(VtChAxisIdX).AxisTitle.Text = "Muestras [n]"
  24.         Chart.Plot.Axis(VtChAxisIdY).AxisTitle.Text = "Cantidad"
  25.         Chart.TitleText = "Cantidad de piezas"
  26.         Chart.RowCount = NumPoints
  27.         Chart.ColumnCount = 2
  28.         Chart.ChartData = Values
  29.     End If
  30.  
  31.  

El código que les presento me saca una gráfica de la forma de la imagen que adjunto. Sin embargo si uso el tipo de gráfica VtChChartType2dLine me aparece la grafica que espero (ver la segunda imagen que adjunto) pero el eje x no es el qeu quiero y por eso debo usar el tipo XY.

¿Qué creen que tengo mal en el código? La conexión con la base de datos se realiza bien aunque no incluya todo el código ya que la gráfica en line aparece bien. Además no sé si entiendo bien el funcionamiento de las propiedades Column y Row y sus variantes aunque lo he estado mirando detenidamente y además lo he visto igual en varios ejemplos.

Espero qeu me puedan ayudar. Muchas gracias por su ayuda.

Saludos
Alejos

5
Visual Basic 6.0 e inferiores / Re: Problema con el foco de un formulario
« en: Martes 15 de Septiembre de 2009, 17:15 »
Hola Nebire,

muchas gracias por tu ayuda. Aunque haya pasado mucho tiempo sin contestarte quiero decirte que seguí tus instrucciones y me ayudaron mucho. Muchas gracias por todo.


Saludos
Alejos

6
Visual Basic 6.0 e inferiores / Problema con el foco de un formulario
« en: Sábado 22 de Agosto de 2009, 11:32 »
Hola a todos,

tengo un problema con un programa que estoy desarrollando en Visual Basic 6.0. Consiste en que quiero dibujar un cubo en 3D sobre un formulario. Además incluyo otros objetos en pantalla para hacer otras cosas. El programa debe recibir por el puerto serie una serie de valores que indican cómo se tiene que mover el cubo que he dibujado. Por ahora sólo estoy haciendo pruebas con el cubo y aún no he añadido la parte de la conexión por el puerto serie pero ya tengo mi primer problema.

Parece ser que cuando dibujo sólo el cubo sobre el formulario, el programa funciona perfectamente. Si se pulsan las teclas de dirección del teclado el cubo se mueve en la dirección pulsada. El problema aparece cuando incluyo cualquier otro objeto como un botón o un frame, etc. Si están activos (propiedad enable=true) no consigo que vuelva a funcionar el movimiento del cubo. El foco se mantiene siempre en alguno de los componentes y nunca sobre el formulario por mucho que yo fuerce a que permanezca ahí cuando se carga el form (Form1.SetFocus en la función form_activate()). Si los desactivo (enable= false) todo funciona otra vez perfectamente.

Yo creo que el problema está relacionado con el foco del formulario, pero no sé si realmente puede ser otra cosa. Alguien puede decirme dónde tengo el error o cómo hacer que el foco se mantenga en el form? Os adjutno el programa de prueba que he hecho. En realidad es un código adaptado del original que encontré para dibujar figuras 3D en otra gran web de Visual Basic (recursosvisualbasic.com.ar).

Espero vuestra ayuda. Muchas gracias por adelantado.

Saludos
Alejos

7
VB .NET / Cálculos matriciales en VB .NET
« en: Sábado 9 de Mayo de 2009, 02:32 »
Hola a todos, estoy realizando un proyecto en Visual Basic 2008 Express Edition y tengo que realizar unos cálculos con matrices (suma, resta, producto por una constante, producto de matrices, inversa, transposición, etc). Aunque soy novato en VB.NET sé que no está optimizado para realizar cálculos matemáticos por eso os pido ayuda. Como el proyecto no tiene como principal objetivo realizar estas operaciones, quisiera que alguien me dijera cómo o donde puedo conseguir una librería .dll con clases o métodos definidos para realizar estos cálculos. O que me dijérais si existe ya alguna librería que permita hacer estos cálculos de una forma óptima.

He estado buscando por internet y la verdad es que no he encontrado mucho de matemáticas con VB.NET, por eso os agradezco cualquier ayuda que me podáis ofrecer.

Muchas gracias.

Saludos
Alejos

Páginas: [1]