Несоответствие типа оператора / операнда при обновлении файла dbf

У меня есть программа, которая должна обновлять данные в файле dbf. но продолжает появляться ошибка «Несоответствие типа оператора / операнда». вот пример кода:

    Dim con As OleDbConnection = New OleDbConnection("Provider=vfpoledb;Data Source=C:\folder\paytran.dbf;Collating Sequence=machine;")
    Try


        Dim strSQL As String = "UPDATE paytran.dbf SET workhr = 20  WHERE empno = 102"
        Dim cmd As OleDbCommand = New OleDbCommand(strSQL, con)
        con.Open()
        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
        Dim myDataSet As DataSet = New DataSet()
        ' Using DataAdapter object fill data from database into DataSet object
        myDA.Fill(myDataSet, "MyTable")
        ' Binding DataSet to DataGridView
        DGV.DataSource = myDataSet.Tables("MyTable").DefaultView
        con.Close()
        con = Nothing
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error Select Data")

    Finally
        If con IsNot Nothing Then
            con.Close()
        End If
    End Try

пожалуйста, помогите мне..


person xana    schedule 25.03.2013    source источник
comment
Файл dbf - это таблица в базе данных .. если dbc - это имя базы данных ... прямо сейчас у меня нет базы данных (.dbc) .. только таблица (.dbf).   -  person xana    schedule 25.03.2013
comment
Какой тип данных workhr и empno? Число? Характер?   -  person Tim    schedule 25.03.2013
comment
Еще пара вещей - я использовал OleDb с dBase (не Visual FoxPro, но они похожи) в прошлом. В строке подключения просто укажите путь к файлу DBF (т. Е. C:\folder - опустите файл DBF), а в обновлении просто используйте имя файла без расширения (т. Е. paytran, а не paytran.dbf).   -  person Tim    schedule 25.03.2013
comment
@Tim, тип данных для workhr - float, а empno - целое число ..   -  person xana    schedule 25.03.2013
comment
Я уже пытаюсь использовать Paytran (без dbf), но все равно получаю ту же ошибку.   -  person xana    schedule 25.03.2013
comment
Для заполнения DataSet не будет возвращено никаких записей, так как это запрос UPDATE. Ваша таблица DataSet всегда будет пустой. Если вы хотите только выполнить команду UPDATE, тогда. cmd.ExecuteNonQuery() - это все, что вам нужно. После этого вы сможете выполнить SQL SELECT для заполнения элемента управления данными.   -  person DaveB    schedule 25.03.2013


Ответы (2)


Это ваша строка подключения. Строка подключения должна указывать только на ПУТЬ, в котором расположены файлы данных, тогда все команды на основе SQL по умолчанию смогут видеть любые таблицы .DBF В этом пути (или вперед, если существуют подпути).

Data Source=C:\folder

вместо того

Data Source=C:\folder\paytran.dbf

Итак, теперь, если у вас есть 30 таблиц в папке «C: \», вы можете делать запросы из ВСЕХ из них по мере необходимости.

person DRapp    schedule 26.03.2013

Вам нужно явно открывать и закрывать DBF. Пытаться:

Dim strSQL As String = "Use paytran in 0 shared;UPDATE paytran SET workhr = 20  WHERE empno = 102;use in select('paytran')"
person Alan B    schedule 25.03.2013