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

У меня такая проблема. Мне надо добавлять данные в *.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
23.02.2010, 12:06
    #36484110
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить данные в *.dbf файл с помощью VB
novtoxa, набор записей (recordset) необходимо обновить, т.е. выполнить Update
...
Рейтинг: 0 / 0
23.02.2010, 12:20
    #36484130
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить данные в *.dbf файл с помощью VB
novtoxa, прошу прощения: не заметил, что Вы выполняете обновление.

Тогда поробуйте выполнить команду SQL, содержащую инструкцию UPDATE.
По опыту могу сказать, что многое зависит от поставщика данных: не знаю, как с таблицами DBF, но, когда я работал из VBA с таблицами IB (FB), приходилось поступать именно так - обновлять данные с помощью Command.
...
Рейтинг: 0 / 0
23.02.2010, 15:56
    #36484464
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить данные в *.dbf файл с помощью VB
Тогда поробуйте выполнить команду SQL, содержащую инструкцию UPDATE
novtoxa, поправлюсь: конечно, INSERT, а не UPDATE.
...
Рейтинг: 0 / 0
23.02.2010, 16:31
    #36484516
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить данные в *.dbf файл с помощью VB
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
23.02.2010, 18:21
    #36484659
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить данные в *.dbf файл с помощью VB
novtoxaconn.CursorLocation = adUseClient

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

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

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

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

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

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


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