Jump to content

32 para 64 bits


obamaself
 Share

Recommended Posts

Cria uma nova configuração da solução para x64 e compila novamente. Vai a uma máquina com x64 e testa.

Mas duvido se seja disto, uma vez que o que funciona em x86 normalmente funciona em x64, ao contrario é que não.

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

estou a importar isto :

Imports Microsoft.Office.Interop
Imports System.Threading.Thread
Imports System.Globalization
Imports System.Data
Imports System.Data.SqlClient

neste formulário a única coisa que faço de especial é exportar a data para excel.

as referências que uso são:

microsoft.office.interop.excel

system

system.core

system.data

system.drawing

system.windows.forms

system.windows.forms.datavisualization

system.xml

system.xml.linq

Link to comment
Share on other sites

deste form são 1600 linhas.

eu envio o código que estou a usar para exportar:

 Public Sub ExportToExcel(ByVal dgvName As DataGridView, ByVal [option] As xlsOption, Optional ByVal fileName As String = "Doc1")
        Dim objExcelApp As New Excel.Application()
        Dim objExcelBook As Excel.Workbook
        Dim objExcelSheet As Excel.Worksheet
        Try
            ' Se foi seleccionada a opção xlsSaveAs e não foi indicado ficheiro 
            If [option] = xlsOption.xlsSaveAs And fileName = String.Empty Then
                MessageBox.Show("É necessário indicar um nome para o ficheiro")
                Exit Sub
            End If
            ' Altera o tipo/localização para Inglês. Existe incompatibilidade  
            ' entre algumas versões de Excel vs Sistema Operativo 
            Dim oldCI As CultureInfo = CurrentThread.CurrentCulture
            CurrentThread.CurrentCulture = New CultureInfo("en-US")
            ' Adiciona um workbook e activa a worksheet actual 
            objExcelBook = objExcelApp.Workbooks.Add
            objExcelSheet = CType(objExcelBook.Worksheets(1), Excel.Worksheet)
            ' Ciclo nos cabeçalhos para escrever os títulos a bold/negrito 
            Dim dgvColumnIndex As Int16 = 1
            For Each col As DataGridViewColumn In dgvName.Columns
                objExcelSheet.Cells(1, dgvColumnIndex) = col.HeaderText
                objExcelSheet.Cells(1, dgvColumnIndex).Font.Bold = True
                dgvColumnIndex += 1
            Next
            ' Ciclo nas linhas/células 
            Dim dgvRowIndex As Integer = 2
            For Each row As DataGridViewRow In dgvName.Rows
                Dim dgvCellIndex As Integer = 1

                For Each cell As DataGridViewCell In row.Cells
                    objExcelSheet.Cells(dgvRowIndex, dgvCellIndex) = cell.Value
                    'Mudar a cor das células
                    With objExcelSheet.Cells(dgvRowIndex, dgvCellIndex).interior
                        If cell.Style.BackColor = Color.Orange Then
                            .Color = Color.Orange
                        ElseIf cell.Style.BackColor = Color.Tomato Then
                            .Color = Color.Red
                        Else
                            .color = Color.White
                        End If
                    End With

                    dgvCellIndex += 1
                Next
                dgvRowIndex += 1
            Next
            objExcelSheet.Columns.AutoFit()

            If [option] = xlsOption.xlsSaveAs Then
                objExcelBook.SaveAs(fileName)
                objExcelBook.Close()
                objExcelApp.Quit()
                MessageBox.Show("Ficheiro exportado com sucesso para: " & fileName)

            Else
                objExcelApp.Visible = True
            End If
            ' Altera a tipo/localização para actual 
            CurrentThread.CurrentCulture = oldCI
        Catch ex As Exception
            MessageBox.Show("Erro não identificado. Mensagem original:" & vbNewLine + ex.Message)
        Finally
            objExcelSheet = Nothing
            objExcelBook = Nothing
            objExcelApp = Nothing
          
            GC.Collect()
            GC.WaitForPendingFinalizers()
            GC.Collect()
            GC.WaitForPendingFinalizers()
        End Try
    End Sub

a única coisa que eu pús diferente do que mostra no site é a parte da cor

Link to comment
Share on other sites

'Formatar o form
  Me.Width = largura
        Me.Height = altura
        dg.Width = Me.Width - 20

        label_maximo_minimo.Location = New Point(label_maximo_minimo.Location.X, dg.Location.Y + dg.Height + 20)
        lblaprovador.Location = New Point(lblaprovador.Location.X, dg.Location.Y + dg.Height + 20)
        Actualizar.Location = New Point(Me.Width - 250, dg.Location.Y + dg.Height + 20)
        Button2.Location = New Point(Me.Width - 150, dg.Location.Y + dg.Height + 20)


        Actualizar.Visible = False

        ComboBox1.Items.Add("Ano")
        ComboBox1.Items.Add("Período")
        ComboBox1.Items.Add("Actual")
        ComboBox1.SelectedIndex = 2

'Carregar a datagridview. De um sub para o outro só muda a ordem das colunas
        If user.nome_grupo <> "Informática" Then
            index = 10
            Carregar_datagrid_view_load_LABORATORIO()
        Else
            index = 16
            Carregar_datagrid_view_load()
        End If

'Modificar_Colunas
  dg.Columns("Operacao").Width = 50
        dg.Columns("Operacao").HeaderText = "Op."
        dg.Columns("cod_relatorio").Width = 65
        dg.Columns("AC").Width = 30
        dg.Columns("Lote").Width = 40
        dg.Columns("Pos").Width = 40
        dg.Columns("Cor2").Width = 40
        dg.Columns("decisao").HeaderText = "Decisão lab."
        dg.Columns("decisao").Width = 90
        dg.Columns("nr_ficha").HeaderText = "Ficha"
        dg.Columns("edicao").HeaderText = "Ed."
        
'Colunas congeladas
               For i As Integer = 0 To index
                dg.Columns(i).Frozen = True
            Next

'Aqui põe ou não a datagridview em readonly
        Dim g As Grupo = GrupoBD.Procurar_Grupo(user.nome_grupo)
        If g.manutencao_ensaios = False Then
            dg.ReadOnly = True
        End If

        dg.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize

        For Each coluna As DataGridViewColumn In dg.Columns
            If coluna.Index > index Then
                coluna.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader
            End If
        Next

isto é o que tenho no load.

a carregar a datagridview:

 Dim DT As New DataTable
        DT = New DataTable("consultas")
        DT.Columns.Add("cod_relatorio")
        DT.Columns.Add("ano")
        DT.Columns.Add("mes")
        DT.Columns.Add("dia")
        DT.Columns.Add("nr_ficha")
        DT.Columns.Add("edicao")

        Dim lista_d As New List(Of Colunas)
        lista_d = Colunas_BD.Filtro
        For Each coluna As Colunas In lista_d
            DT.Columns.Add(coluna.nome)
        Next
        DT.Columns.Add("Obs")


        Dim lista_produtos As New List(Of Ensaio)
        lista_produtos = Ensaios_BD.Qwery_Introduzido("  select top 200 ensaios.* from ensaios   order by cast(data_aprovacao as datetime )DESC ", maskdata1.Text, mskdata2.Text)


        For Each registo As Ensaio In lista_produtos
            Dim novalinha As DataRow = DT.NewRow
            novalinha("cod_relatorio") = registo.cod_relatorio
            novalinha("ano") = registo.data.Year
            novalinha("mes") = registo.data.Month
            novalinha("dia") = registo.data.Day

            'Procurar Ficha Técnica
            Dim f As Ensaios_fichas = Ensaios_Fichas_BD.procurar_ensaio_ficha(registo.cod_relatorio)
            novalinha("nr_ficha") = f.nr_ficha
            novalinha("edicao") = f.nr_edicao


            Dim ensaios_col As List(Of Ensaios_Colunas) = Ensaios_Colunas_BD.Lista_De_Ensaios_Colunas(registo.cod_relatorio)
            For Each coluna_ensaio As Ensaios_Colunas In ensaios_col
                Dim cooluna As Colunas = Colunas_BD.Procurar_Por_Codigo(coluna_ensaio.codigo)
                If cooluna.codigo <> "" Then
                    novalinha(cooluna.nome) = coluna_ensaio.valor
                End If
            Next
            DT.Rows.Add(novalinha)
        Next
        dg.DataSource = DT
Link to comment
Share on other sites

Na máquina em que dá o erro tens o office instalado? Qual é a versão do Interop que usas?

Experimenta ir as propriedades do teu projecto e onde diz references procura la na lista por Microsoft.Office.Interop.Excel ou  Microsoft.Office.Interop e ve se no Copy Local esta a False se tiver passa para True e experimenta outra vez...

Link to comment
Share on other sites

Olá Bom dia.

Exprimenta fazeres assim (Isto em uma máquina de 64 Bits):

1º   Verifica se na tua pasta obj, contém todas as bib [Ex : Interop.Microsoft.Office.Core.Dll | Interop.Microsoft.Office.Interop.Excel | Interop.VBIDE.Dll] . referênciadas, caso contrário Copiar para a pasta referida.

2º Vais ao Solution Explorer e nas referências deleta as Bib. (como mostra a figura em baixo) ; seguido de Gravar.

http://img845.imageshack.us/img845/1179/errovf.png

3º Volta Novamente a adicionar as 3 Bib. em questão, seguido de Gravar.

4º Rebuil o teu projecto e faz correr a aplicação.

Nota : Tens que ter estas 3 Bib. Referênciadas em teu projecto.

Espero ter ajudado.

Até+

Programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.