powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавить данные в *.dbf файл с помощью VB
13 сообщений из 13, страница 1 из 1
Добавить данные в *.dbf файл с помощью VB
    #36483368
novtoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

У меня такая проблема. Мне надо добавлять данные в *.dbf файл с помощью VB. Нацарапал такой код:

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\;"
conn.CursorLocation = adUseClient
rs.Open "SELECT * FROM 1.dbf ", conn, adOpenRecordset, adLockBatchOptimistic
For i = 1 To 10000
rs.AddNew
rs.Fields(0) = "Иванов"
rs.Fields(1) = 123456
rs.Fields(2) = Now
rs.Fields(3) = i
rs.Fields(4) = 1
rs.Fields(5) = 1
rs.Fields(6) = 0
rs.Update
Set Me.DataGrid1.DataSource = rs


В таблице DataGrid1 добавленные записи присутствуют, а в 1.dbf - нет.
Что я не сделал??? Помогите плз.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484110
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novtoxa, набор записей (recordset) необходимо обновить, т.е. выполнить Update
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484130
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novtoxa, прошу прощения: не заметил, что Вы выполняете обновление.

Тогда поробуйте выполнить команду SQL, содержащую инструкцию UPDATE.
По опыту могу сказать, что многое зависит от поставщика данных: не знаю, как с таблицами DBF, но, когда я работал из VBA с таблицами IB (FB), приходилось поступать именно так - обновлять данные с помощью Command.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484464
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда поробуйте выполнить команду SQL, содержащую инструкцию UPDATE
novtoxa, поправлюсь: конечно, INSERT, а не UPDATE.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484516
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novtoxa, вот, наваял в Екселе. Предварительно сделал файл 1.dbf из трёх полей. Новая запись добавляется, всё нормально.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
Const cstrBase As String = "C:\"
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & cstrBase & ";Extended Properties=dBase IV"
    .Open
    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = cn
        .CommandText = "INSERT INTO 1 (FIELD1_NAME,FIELD2_NAME,FIELD3_NAME) VALUES (555,'test','Imya')"
        .Execute
    End With
    Set rs = .Execute("SELECT*FROM 1")
    Cells( 2 ,  7 ).CopyFromRecordset rs 'проверка добавления новой записи
    .Close
End With
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484659
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novtoxaconn.CursorLocation = adUseClient

попробуйте серверный курсор
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484733
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pronovtoxaconn.CursorLocation = adUseClient

попробуйте серверный курсор
+1
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484753
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novtoxarsOpen "SELECT * FROM 1.dbf ", conn, adOpenRecordset, adLockBatchOptimistic

а, дошло, в чем дело, не сразу заметил.

Если вы используете BatchOptimistic - то вы должны в конце закончить Batch (выполнить BatchUpdate, если не ошибаюсь), а иначе, зачем вы используете BatchOptimistic? используйте adLockOptimistic - данные в файле будут обновляться сразу.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484754
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких случаях, как я понял, нужно перебирать все возможные варианты, действуя методом проб и ошибок: пробовать разных поставщиков, разные библиотеки доступа, менять типы курсора и т.д. и т.п., последовательно приближаясь к оптимальному варианту. Ну или где-нить найти готовый ответ )))
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484758
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthВ таких случаях, как я понял, нужно перебирать все возможные варианты, действуя методом проб и ошибок: пробовать разных поставщиков, разные библиотеки доступа, менять типы курсора и т.д. и т.п., последовательно приближаясь к оптимальному варианту. Ну или где-нить найти готовый ответ )))

Не, здесь просто ошибка использования блокировки, указанная мной выше.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484770
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕсли вы используете BatchOptimistic - то вы должны в конце закончить Batch (выполнить BatchUpdate, если не ошибаюсь)
Да, я тоже на BatchOptimistic обратил внимание - код-то не предусматривает пакетного обновления. Только про выполнение BatchUpdate в конце не подумал. Кстати, правильно наоборот - UpdateBatch .
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484778
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthДа, я тоже на BatchOptimistic обратил внимание - код-то не предусматривает пакетного обновления. Только про выполнение BatchUpdate в конце не подумал. Кстати, правильно наоборот - UpdateBatch .

Я когда-то очень давно (еще во времена ADO2.5) пытался работать с пакетным обновлением с файлами MDB из VB6. И нифига у меня не вышло - я плюнул и отказался от пакетного обновления. Какие-то совершенно немыслимые глюки возникали.
...
Рейтинг: 0 / 0
Добавить данные в *.dbf файл с помощью VB
    #36484796
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЯ когда-то очень давно... Да, я тоже в своё время (правда не так давно - уже 2.8 была) попробовал и... тоже ничего не получилось. И вот я сейчас подумал: может, я тогда использовал Update вместо UpdateBatch? ))))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавить данные в *.dbf файл с помощью VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]