Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Yaldabaot

#41
Hola,


Estoy tratando de instalar VB 6 en windows 8, pero no he podido.

Utilicé ya enlaces como este para poder realizarlo

https://social.msdn.microsoft.com/Forums/es-ES/eee828df-fb42-4bd6-9690-e47fb2a09d51/instalar-visual-basic-60-en-windows-8?forum=vb56es

Donde ellos proponen esto:


1º.- COPIAR EN UNA CARPETA EL VISUAL BASIC. Y LUEGO LO SIGUIENTE.

- Copiar el archivo setup/vs98ent.stf en la raiz del instalador y renombrarlo por acmsetup.stf

- Copiar todo el contenido de la carpeta setup en la raiz del instalador (donde se encuentra acmboot.exe).

- Ejecutar el archivo setup luego acmsetup.exe en la raiz del instalador (donde se encuentra acmboot.exe).

- Eso es todo el instalador del Visual Studio 6 se iniciara.

Nota: El archivo vs98ent.stf tambien puede estar con nombre vs98pro.stf


Bien, el error me dice que no puedo correr aplicaciones de 64 bits.

Ya utilicé el modo de compatibilidad y con permisos de administrador, ya actualicé la consola java

¿Saben algo que me ayude?
#42
Gracias Elektro, acaté tus recomendaciones, lo que pasa en el caso de lo que me dijiste del código donde me corregiste (y pues tienes razón), estrictamente debo usar esa clase, pues en TODO el proyecto se apoya en ese objeto y sobretodo sus atributos en el caso de xlworkbook, xlworksheet y xlapplication, ficheros también, entonces cuando utilizo ese objeto los demás métodos se apoyen en él, puesto que el archivo excel se encuentra en background y la idea es que apenas se salga de la aplicación el user pues el archivo efectivamente se cierre.

Y si ves bien, si agarré parte de tus recomendaciones, ¿ Cómo no voy a agarrar tus recomendaciones? si eres un GRAN conocedor!. ¿ Y en donde? Pues en la parte del save y saveworkbook, me puse a pensar sobre el cierre abrupto y como sabrás el Excel cuando se cierra de esa manera pues tiene como un respaldo, eso podría también generar que se conserve el excel en memoria, por tanto el guardado le quita esa posibilidad.

Otra recomendación que acaté es el cierre que me dices, considero que es importante no forzar el cierre.


Con respecto al proceso de EXCEL que no se cierra, efectivamente tengo el administrador de tareas casi que a la par mía y del visual studio y pues corroboré que si cierra.

Un saludo, que estés bien.

#43
Elektro ya lo logré!!

Este fue el constructor de la clase LibroExcel que utilicé

Código (vbnet) [Seleccionar]


'Constructores

    Public Sub New(ByVal fichero As String)

        xlApp = New Excel.Application

        xlworkbook = xlApp.Workbooks.Open(fichero)
        xlWorksheet = xlApp.Worksheets.Item(1)

       

    End Sub



Acá le asigno el atributo ficheros

Código (vbnet) [Seleccionar]



  objeto_excel = New LibroExcel(fichero) 'Crea un nuevo libro


                    objeto_excel.xApplication.DisplayAlerts = False
                    objeto_excel.ficheros = fichero





Acá termino el maldito proceso pega -.- (cómo me costó.........)


Código (vbnet) [Seleccionar]



Try

            If IsFileOpen(fichero) = True Then


                obj_excel.XWorkBook.Save()
                obj_excel.XWorkBook.Close()


                obj_excel.xApplication.Workbooks.Close()
                obj_excel.xApplication.Quit()


                obj_excel.xApplication = Nothing
                obj_excel.XWorkBook = Nothing
                obj_excel.XWorksheet = Nothing
                obj_excel.ficheros = Nothing

            Else

                releaseObject(obj_excel)

            End If

        Catch ex As Exception
            MsgBox("Hubo un problema cerrando el programa y/o el archivo.")
        Finally
            End
        End Try
    End Sub




Agrego que el método file open le hice un cambio, donde no me estaba agarrando el path completo del archivo.

Sugerencias, dudas, críticas estamos a la orden,

GRACIAS ELEKTRO.

#44
Mira agregué esto en el código de la clase LibroExcel pero sigue sin cerrarse :(


Código (vbnet) [Seleccionar]


Public Sub New(ByVal fichero As String)

       xlApp = New Excel.Application

       xlworkbook = xlApp.Workbooks.Open(fichero)
       xlWorksheet = xlApp.Worksheets.Item(1)

   End Sub


   Public Sub liberar_Excel()


       xlworkbook.Save()
       xlworkbook.Close()
       xlApp.Quit()


       Marshal.ReleaseComObject(xlworkbook)
       Marshal.ReleaseComObject(xlWorksheet)
       Marshal.ReleaseComObject(xlApp)


   End Sub


#45
Elektro no soy de los que molesta por cada nada, solo que le he dado vueltas y no entiendo tu código, viste que lo que utiliza es una clase?, lo que lleno son sus atributos, al final ocupo utilizar ese objeto pues todo el proyecto utiliza ese objeto.

Con respecto al end, ese código es de un botón el cuál es para salir del programa, el END es para salir, talvez el orden esté mal, si lo está pues estoy anuente a recibir opiniones o críticas-


Código (vbnet) [Seleccionar]



    Dim excelApp as Excel.Application = objeto_excel.xApplication
     
    Dim workbooks As ...? = excelApp.Workbooks
    Dim workbook As Excel.Workbook = workbooks.Open(Arch)
     
    Dim xWorkBook As Excel.Workbook = excelApp.XWorkBook
    Dim worksheets As Excel.Worksheets = xWorkBook.Worksheets
    Dim worksheet As Excel.Worksheet = worksheets.Item(1)

#46
Gracias Elektro, lo probaré y te estaré contando como me fue, muchas gracias por dedicar tiempo a la respuesta.
#47
Tengo esta forma pero me vuela todos los exceles y es muy violenta, alguno sabrá de otra manera o que está haciendo mal?

Código (vbnet) [Seleccionar]


Sub KillAllExcels()

        Try



            Dim proc As System.Diagnostics.Process



            For Each proc In System.Diagnostics.Process.GetProcessesByName("EXCEL")

                If proc.MainWindowTitle.Trim.Length = 0 Then

                    'proc.GetCurrentProcess.StartInfo

                    proc.Kill()

                End If

            Next

        Catch ex As Exception

            My.Computer.FileSystem.WriteAllText("C:\errores.log", Format(Now, "01/MM/yyy HH:mm") & " - " & ex.Message & vbCrLf, True)

        End Try

    End Sub
#48
Hola,

Estoy utilizando un archivo de excel, todo bien simplemente que cuando quiero terminar y/o cerrar el archivo de excel pues no se cierra.

Acá lo asigno
Código (vbnet) [Seleccionar]


objeto_excel = New LibroExcel() 'Crea un nuevo libro
                    objeto_excel.xApplication = New Excel.Application() 'Crea una nueva aplicación

                    objeto_excel.xApplication.DisplayAlerts = False
                    objeto_excel.XWorkBook = objeto_excel.xApplication.Workbooks.Open(Arch) 'Realiza una nueva aplicación con un nuevo libro a abrir.
                    objeto_excel.XWorksheet = objeto_excel.XWorkBook.Worksheets.Item(1) 'Asigna la hoja de excel
                    objeto_excel.ficheros = fichero



Acá lo cierro ( Código forzoso pues no cierra!!!)

Código (vbnet) [Seleccionar]



Try

            If IsFileOpen(fichero) = False Then
                End
                GC.Collect()
            Else

                obj_excel.XWorksheet = Nothing
                GC.Collect()

                obj_excel.XWorkBook.Close()
                obj_excel.XWorkBook = Nothing

                GC.Collect()

                obj_excel.xApplication.Quit()
                obj_excel.xApplication = Nothing

                GC.Collect()

                obj_excel.ficheros = Nothing

                GC.Collect()

                releaseObject(obj_excel)

                End
            End If

        Catch ex As Exception
            MsgBox("Hubo un problema cerrando el programa y/o el archivo.")
            End
        End Try




Acá la clase libro

Código (vbnet) [Seleccionar]


  Private xlApp As Excel.Application
    Private xlWorksheet As Excel.Worksheet
    Private xlworkbook As Excel.Workbook
    Private fichero As String

    'Propiedades accesoras

    Public Property xApplication() As Excel.Application
        Get
            Return Me.xlApp
        End Get
        Set(ByVal Value As Excel.Application)
            Me.xlApp = Value
        End Set
    End Property


    Public Property XWorkBook() As Excel.Workbook
        Get
            Return Me.xlworkbook
        End Get
        Set(ByVal Value As Excel.Workbook)
            Me.xlworkbook = Value
        End Set
    End Property

    Public Property XWorksheet() As Excel.Worksheet
        Get
            Return Me.xlWorksheet
        End Get
        Set(ByVal Value As Excel.Worksheet)
            Me.xlWorksheet = Value
        End Set
    End Property

    Public Property ficheros() As String
        Get
            Return Me.fichero
        End Get
        Set(ByVal Value As String)
            Me.fichero = Value
        End Set
    End Property









#49
Ya lo resolví!!, usé esto

Código (vbnet) [Seleccionar]


Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
                ' Asigno el reporte


                CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()

                'ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))

                CrReport.FileName = "CrystalReport1.rpt"

                'Ruta del reporte
                str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"

                CrReport.Load(str_path_factura)
                CrReport.SetDataSource(obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text)))
                CrReport.PrintToPrinter(False, False, False, False)

#50
Buenas,

Estoy realizando un crystal report, el crystal report se llena con un dataset, donde es un objeto xsd donde le defino previamente sus datatables, la cuestión es que realizo una consulta y el dataset debería en buena teoría llenarse con la misma, pero resulta que no lo hace sino que queda vacío, como hago para llenar ese dataset desde el código para luego simplemente pasarselo lleno al crystal report y generar la consulta?.


Este es el código que tengo, el cuál recibe como parámetro un entero, este mismo retorna un dataset, el cuál según yo debería llenar al item xsd que definí con el diseñador de visual studio, porque el crystal jala ese datasource de ese dataset y de ahí simplemente debería desplegar los campos

No lo hago desde el wizard poque queda completamente suspeditado a una ruta del archivo de access y bueno para hacer un datasource dinámico es un poco engorroso desde el wizard, entonces simplemente decidí hacerlo desde un dataset y que en tiempo de ejecución lo llene
Código (vbnet) [Seleccionar]


Public Function llenar_dataset(ByVal fact As Integer) As DataSet


       Dim cmd2 As OleDb.OleDbCommand = Nothing
       Dim ds As New DS_Tablas



       conn.Open()

       cmd = New OleDb.OleDbCommand("SELECT *  FROM tbl_HEADER  WHERE ID_CONSECUTIVO = @Id", conn)
       cmd.Parameters.AddWithValue("Id", fact)
       cmd.ExecuteNonQuery()

       Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)

     
       cmd2 = New OleDb.OleDbCommand("SELECT *  FROM tbl_DETAIL  WHERE COD_FACTURA = @Id_det", conn)
       cmd2.Parameters.AddWithValue("Id_det", fact)
       cmd2.ExecuteNonQuery()


       Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(cmd2)



       da.Fill(ds, "tbl_HEADER")
       da2.Fill(ds, "tbl_DETAIL")

       conn.Close()


       Return ds

   End Function



Acá el código que genera el crystal, el cuál la ruta y lo demás lo hace bien, simplemente sale vacío

Código (vbnet) [Seleccionar]


CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()

               ds = obj_data.llenar_dataset(Convert.ToInt32(lblConsecutivo.Text))

               CrReport.FileName = "CrystalReport1.rpt"

               'Ruta del reporte
               str_path_factura = System.Windows.Forms.Application.StartupPath & "\" & "CrystalReport1.rpt"

               CrReport.Load(str_path_factura)

               'Esto es código provisional, simplemente es para saber si el dataset está lleno o no
               If ds.Tables("tbl_HEADER").Rows.Count() = 0 Or ds.Tables("tbl_DETAIL").Rows.Count() Then

                   MsgBox("Tablas vacías")
               Else
                   MsgBox("Tu dataset está lleno chico")


                   MsgBox(ds.Tables("tbl_HEADER").Rows.Count().ToString)
                   MsgBox(ds.Tables("tbl_DETAIL").Rows.Count().ToString)
               End If

               CrReport.SetDataSource(ds.Tables(0))
               CrReport.SetDataSource(ds.Tables(1))

               'CrReport.PrintToPrinter(False, False, False, False)





Pues acá está el código pero le dataset sale vacío y por tanto el reporte igual.

GRACIAS POR LEER