• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Joca

Antes de exibir na datagridview dá erro de sintaxe no "from"??

2 mensagens neste tópico

Boa tarde!

Eu fiz uma alteração no meu código, para passar a exibir na janela de selecção de ficheiros a abrir ("openfiledialog" ou, "dlgabrir") o local onde a minha aplicação inicia (em "InitialDirectory")... daí... deu tudo "borrada"...

Dá-me sempre erro de sintaxe na claúsula "from", apesar de, antes da alteração acima, funcionar bem.

A minha questão é, têm alguma ideia como se corrige isto? Já fiz diversos testes e, ainda não percebi o porquê do erro.

Imports System.Data.OleDb

Public Class Form1
   
    ' Nome do ficheiro aberto com dlgAbrir (OpenFileDialog)
    Dim nomeFicheiro As String
    '
    ' Nome da pasta onde o ficheiro se encontra
    Dim nomePasta As String

    Dim SQL As String
    Dim da As OleDbDataAdapter
    Public Shared ds As DataSet 


    Private Sub btnExibeFicheiroDeTextoNaDataGridView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExibeFicheiroDeTextoNaDataGridView.Click

        With dlgAbrir
            .Filter = "Ficheiros CSV (*.csv)|*.csv|Ficheiros Texto (*.txt)|*.txt"
            .FileName = ""
            'ACRESCENTEI ISTO PARA ABRIR NO LOCAL DO MEU PROGRAMA:
            .InitialDirectory = Application.StartupPath 'My.Computer.FileSystem.CurrentDirectory 
        End With

        If dlgAbrir.ShowDialog() = Windows.Forms.DialogResult.OK Then

            'teste:
            'If dlgAbrir.FileName <> String.Empty Then
            '    MessageBox.Show(dlgAbrir.FileName)
            'End If

            ' Guarda o nome do ficheiro acedido 
            nomeFicheiro = dlgAbrir.FileName

            ' Guarda o nome da pasta onde o ficheiro se encontra
            nomePasta = System.IO.Path.GetDirectoryName(dlgAbrir.FileName)

           
            

            Try
                ' Texto de ligação à base de dados
                '
                ' HDR é igual a Header Describes Row, ou o cabeçalho contém o nome dos campos
                ' FMT é o formato, Delimited significa que um ";" está delimitando os campos
                'Dim myConnectionString As String = _
                '"Provider=Microsoft.Jet.OLEDB.4.0;" & _
                '"Data Source=C:\;" & _
                '"Extended Properties='text;" & _
                '"HDR=Yes;FMT=Delimited'"
                '
                '
                'ALTEREI PARA:
                Dim myConnectionString As String = _
                "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & nomePasta & "\" & ";" & _
                "Extended Properties='text;" & _
                "HDR=Yes;FMT=Delimited'"


                ' Cria uma nova ligação à base de dados
                Dim connection As New OleDbConnection(myConnectionString)

                ' Abre a ligação à base de dados
                connection.Open()

                ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet
                SQL = "SELECT * FROM " & CStr(nomeFicheiro)
                da = New OleDbDataAdapter(Sql, connection)

                ' Cria um novo DataSet, ou seja, uma representação em memória da informação
                ds = New DataSet

                ' Coloca a informação da tabela definida no DataSet
                da.Fill(ds, "TESTE") 'CStr(nomeFicheiro))

                ' Define que a fonte de dados da DataGridView é a nossa DataSet
                ' criando automáticamente as colunas e linhas de dados
                Me.dgvExibeDados.DataSource = ds.Tables("TESTE") 'CStr(nomeFicheiro))


                                'Fecha a ligação à base de dados
                connection.Close()

            Catch ex As Exception
                MessageBox.Show(ex.Message, "Aviso de Erro") 
            End Try

        Else
            Exit Sub
        End If

    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já descobri!

Estive a analisar com mais calma e, o erro era por causa do "nomeFicheiro".

Eu estava a obter o percurso completo, em vez do nome do ficheiro.

Fiquei também a saber que, se eu não tivesse resolvido alterar o meu código, eu não chegaria a descobrir, também, que o meu código anterior não era o mais correcto.

Caso resolvido!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora