none
Ошибка при использовании TableData в работе с Access RRS feed

  • Вопрос

  • Добрый день! Можно ли решить такую проблему - когда я использую TableData в WPF (vb.net) в запросе, когда нужно получить таблицу, состоящую из нескольких столбцов других таблиц или просто присваивая имя столбцу, например:

     Public Function GetSqlAllTable(ByVal Question As String) As DataTable
            Dim dtDonnees As DataTable
            Using oledbAdapter As New OleDb.OleDbDataAdapter
                Dim DbCommandBuilder As New OleDb.OleDbCommandBuilder(oledbAdapter)
                oledbAdapter.SelectCommand = New OleDb.OleDbCommand(Question, Cnn)
                oledbAdapter.UpdateCommand = DbCommandBuilder.GetUpdateCommand()
                dtDonnees = New DataTable()
                oledbAdapter.Fill(dtDonnees)
            End Using
            Return dtDonnees
        End Function
    
    
    
    
    
     Dim tmpSearchData As New DataTable()
     tmpSearchData = ConnectionBD.GetSqlAllTable("SELECT Поле1 AS Дата FROM Таблица1")
    
    Я получаю ошибку 

    System.InvalidOperationException: Динамическое создание SQL не поддерживается для SelectCommand, не возвращающего никакой информации о базовой таблице.

    Есть возможность использовать этот инструмент для отображения столбцов с одной таблицы и частично с другой? Либо отображать столбцы созданные в ходе вычислений выборки и присвоению им имен ( AS name1... )

    31 августа 2019 г. 9:54

Ответы

  • У вас какое-то противоречие - вы спрашиваете о том, можно ли "использовать этот инструмент для отображения столбцов", но при этом показываете код для генерации UpdateCommand. Что именно вы пытаетесь сделать, отображение или обновление?

    Исключение означает, что DbCommandBuilder не может подхватить схему БД на основании того запроса, который вы ему передали. Функционал автогенерации SQL в ADO.NET имеет некоторые ограничения (см. Generating Commands with CommandBuilders), если вас это не устраивает, можно указать UPDATE-команду вручную. 

    • Помечено в качестве ответа Siompc 1 сентября 2019 г. 12:28
    1 сентября 2019 г. 8:43

Все ответы

  • У вас какое-то противоречие - вы спрашиваете о том, можно ли "использовать этот инструмент для отображения столбцов", но при этом показываете код для генерации UpdateCommand. Что именно вы пытаетесь сделать, отображение или обновление?

    Исключение означает, что DbCommandBuilder не может подхватить схему БД на основании того запроса, который вы ему передали. Функционал автогенерации SQL в ADO.NET имеет некоторые ограничения (см. Generating Commands with CommandBuilders), если вас это не устраивает, можно указать UPDATE-команду вручную. 

    • Помечено в качестве ответа Siompc 1 сентября 2019 г. 12:28
    1 сентября 2019 г. 8:43
  • Вот это да... Строку эту и не увидел. Что она там забыла ))) Спасибо! 

    
                oledbAdapter.UpdateCommand = DbCommandBuilder.GetUpdateCommand()
    
                oledbAdapter.UpdateCommand = DbCommandBuilder.GetUpdateCommand()
    1 сентября 2019 г. 12:28