Jump to content

Recommended Posts

Posted

boas,

Estou com um problema no código

Set ObjWorkBook = ObjExcel.Workbooks.Open()

Tenho um objeto FileUpload1 que recebe o caminho onde está o arquivo, selecionado pelo usuário 

Dim fileExt As String
fileExt = System.IO.Path.GetExtension(FileUpload1.FileName)
este objeto ler uma Planilha Excell 
no servidor (máquina local) funcionou. Ele abre o arquivo corresponde do caminho selecionado.

Fazendo um teste de outra máquina ( outro usuário) aparece o seguinte erro:

C:\WINDOWS\system32\meuarquivo.xls' não pôde ser localizado. Verifique a ortografia do nome do arquivo e se a sua localização está correta. Se você estiver tentando abrir o arquivo a partir de sua lista de arquivos usados recentemente no menu 'Arquivo', certifique-se de que o arquivo não foi renomeado, movido nem excluído.

veja que a mensagem de erro mostra um caminho totalmente diferente do selecionado pelo usuário

alguém pode ajudar?  Por Favor!!

Rechousa Edit: Formação de código

Posted

Caro José Lopes

Realmente faltam várias informações que omiti e atentei me na mensagem de erro, porém vou tentar explicar melhor, veja que o meu código dever faz as seguintes funções:

Cria um DataTable chamado Table1 e adiciona algumas colunas como abaixo:

Dim Table1 As DataTable
'creating a table 
Dim Row1 As DataRow

'declaring three rows for the table
Dim patrimonio As DataColumn = New DataColumn("patrimonio")

'declaring a column named Name
patrimonio.DataType = System.Type.GetType("System.String")
'setting the datatype for the column
patrimonio.ReadOnly = False

Table1.Columns.Add(patrimonio)

'adding the column to table
Dim NOPLACA As DataColumn = New DataColumn("NOPLACA")
NOPLACA.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(NOPLACA)

Dim CDCOMBU As DataColumn = New DataColumn("CDCOMBU")
CDCOMBU.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(CDCOMBU)

Em seguida Através de um OleDbDataReader busco informações em meu banco de dados e jogos estas informações em outro DataTable como abaixo;

'define o dataadapter e o datatable
            Dim da1 As OleDbDataReader
            Dim dt As New DataTable
            Dim cmdBc As New System.Data.OleDb.OleDbCommand()
            cmdBc.Connection = con
            cmdBc.CommandText = "SELECT campo FROM minhatabela 

Dim dsExcel As New DataSet
            Dim daExcel As New OleDbDataAdapter(cmdBc)
            daExcel.Fill(dsExcel)
            daExcel.FillSchema(dsExcel, SchemaType.Source)

Em seguida pego o caminho da planilha que devo ler para comparar com os dados do meu Bco de Dados jogando as informações num objeto Excel.ApplicationClass

If FileUpload1.HasFile Then
            
Dim fileExt As String
fileExt = System.IO.Path.GetExtension(FileUpload1.FileName)
Dim varimg As String = System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName)
Dim strSource1 As String = Me.FileUpload1.PostedFile.FileName

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" + strSource1 + ";" & _
                "Extended Properties=" & Chr(34) & "Excel 8.0;HDR=Yes" & Chr(34))

Dim excel As New Excel.ApplicationClass
Dim row As Integer
Dim contLinhaBranco As Integer = 0
'conexão com mde
       
Dim varcodigo As String = cboSeccional.SelectedValue
'variaveis para altera placa (varNumeral;varComb)
Dim varNumeral As String
Dim varComb As String
Dim controle As Integer = 0
excel.Workbooks.Open(varimg)
row = 2
Dim escreve As String = String.Empty

E por fim faço as comparações necessarias na planilha e no meu DataTable conforme abaixo:

While contLinhaBranco <= 15
           With excel
If Trim(CStr(excel.Range("A" & row).Value)) <> "" Or  Trim(CStr(excel.Range("B" & row).Value)) <> "" Then
     If row > 8 Then
          varPlaca = CStr(.Range("A" & row).Value())
          If Len(varPlaca) > 7 Then

Dim registros1() As DataRow = dsExcel.Tables(0).Select("NOPLACA='" & varPlaca & "'")

For Each registro As DataRow In registros1
'Comando de intruçoes
Next
                          
If registros1.Length = 0 Then
      		'PLACA NÃO ENCONTRADA
      			Row1 = Table1.NewRow()
            Row1.Item("patrimonio") = "  "
      		      Row1.Item("NOPLACA") = varPlaca
            		Row1.Item("CDCOMBU") = "PLACA NÃO ENCONTRADA"
            Table1.Rows.Add(Row1)
       	End If 

  End With
End While

Como havia dito no Servidor funciona bem em outra máquina da rede dá aquela mensagem de erro, se houver uma forma melhor de fazer isto eu agradeço a ajuda

Rechousa Edit:

Formatação de código

Posted

Olá Rechousa e José Lopes

Seguirei, na próxima vez, tuas recomendações e as agradeço, porém informo que as máquinas têm características semelhantes sim, são de 32 bits, porém quando José Lopes informa sobre a questão das permissões: informo que o usuário está com acesso normal à pasta compartilhada, estive fazendo algumas permissões de pasta conforme orientação deste sítio http://support.microsoft.com/kb/207574/pt-br mas ainda continuo com o problema já fiz estas configurações no servido e no usuário e ainda não encontro uma solução, se vocês tiverem mais alguma dicas meus agradecimentos antecipados

Sds.

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
×
×
  • 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.