Добавление новой записи в таблицу данных VFP в VB.NET с наборами записей ADO - PullRequest
1 голос
/ 16 июня 2010

Я пытаюсь добавить новую запись в таблицу данных Visual FoxPro, используя набор данных ADO, но безуспешно.Код работает нормально без исключений, но когда я проверяю dbf по факту, новой записи нет.Переменная mDataPath, показанная во фрагменте кода, является путем к файлу .dbc для всей базы данных.Примечание о цикле For внизу;Я добавляю тело входящих писем в это поле MEMO, поэтому подумал, что мне нужно разбить добавление этой строки на порции по 256 символов.Любое руководство будет с благодарностью.

cnn1.Open("Driver={Microsoft Visual FoxPro Driver};" & _
                "SourceType=DBC;" & _
                "SourceDB=" & mDataPath & ";Exclusive=No")

Dim RS As ADODB.RecordsetS = New ADODB.Recordset       
RS.Open("select * from gennote", cnn1, 1, 3, 1)
RS.AddNew()

'Assign values to the first three fields
RS.Fields("ignnoteid").Value = NextIDI 
RS.Fields("cnotetitle").Value = "'" & mail.Subject & "'"
RS.Fields("cfilename").Value = "''"

'Looping through 254 characters at a time and add the data
'to Ado Field buffer
For i As Integer = 1 To Len(memo) Step liChunkSize
            liStartAt = i
            liWorkString = Mid(mail.Body, liStartAt, liChunkSize)
            RS.Fields("mnote").AppendChunk(liWorkString)            
 Next

'Update the recordset
RS.Update()
RS.Requery()
RS.Close()

1 Ответ

0 голосов
/ 04 ноября 2010

Microsoft имеет статью базы знаний , которая точно соответствует вашему вопросу. Единственное существенное отличие между вашим кодом и приведенным примером - это параметр BackgroundFetch в строке подключения. Этот параметр включен по умолчанию и о сообщается , что вызывает многочисленные проблемы с курсорами.

Кроме того, вы можете переключиться на Visual Foxpro Ole Db драйвер . Драйвер Visual Foxpro ODBC был снят с производства примерно в 2000 году.

...