powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO и MS Jet не реагируют на нехватку места на диске
10 сообщений из 10, страница 1 из 1
ADO и MS Jet не реагируют на нехватку места на диске
    #36380444
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. При создании таблицы и ее заполнении АDO+MS Jet 4.0 не выдают ошибки, а просто в тихую завершается цикл копирования в Recordset и спокойно, как ни в чем не бывало продолжается работа без сообщений об ошибоках и предупреждений. При экспорте данных на дискетку это критично. Существуют ли специальные средства для того чтобы заставить ADO реагировать на нехватку места без проверки количества записей в новой таблице?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Sub Export(strPath As String)
    Dim connExport As New ADODB.Connection
    Dim RSetFrom As ADODB.Recordset
    Dim RSetTo As ADODB.Recordset
    Dim strFileName As String
    Dim i As Long
    
    connExport.Errors.Clear
    connExport.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=DBASE IV;Data Source=" & strPath
    
    connExport.Errors.Clear
    connExport.Execute "CREATE TABLE " & strFileName & ".DBF" _
    & " (TAB_KEY INTEGER, UNIQUE_ID INTEGER, N_DS DECIMAL(4), N_GROUP DECIMAL(3), SURNAME VARCHAR, NAME VARCHAR);", , adExecuteNoRecords
    
    Set RSetFrom = MainConnection.Execute("SELECT ... FROM ...")
    
    Set RSetTo = New ADODB.Recordset
    RSetTo.Open strFileName, connExport, adOpenDynamic, adLockPessimistic
    
    Do Until RsetFrom.EOF
    'В этом цыкле, если нет места на диске, условие RsetFrom.EOF делается равным True, происходит выход из цыкла и текст выполняется дальше
        RSetTo.AddNew Array( 0 ,  1 ,  2 ,  3 ,  4 ,  5 ), Array(i _
        , RSetFrom.Fields( 0 ).Value _
        , RSetFrom.Fields( 1 ).Value _
        , RSetFrom.Fields( 2 ).Value _
        , RSetFrom.Fields( 3 ).Value _
        , RSetFrom.Fields( 4 ).Value)
        
        RSetFrom.MoveNext
        i = i +  1 
    Loop
    
    RSetFrom.Close
    RSetTo.Close
    Set RSetTo = Nothing
    Set RSetFrom = Nothing
    connExport.Close
    Set connExport = Nothing
End Sub
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380485
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nrmBeginner'В этом цыкле, если нет места на диске, условие RsetFrom.EOF делается равным True, происходит выход из цыкла и текст выполняется дальше


Что-то не то.
MainConnection у вас же вряд ли на дискете? А RsetFrom открывается как раз из MainConnection
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380519
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

В том то все и дело, не понимаю что происходит.
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380535
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public MainConnection as ADODB.Connection

База MainConnection находится на локальном жестком диске
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380543
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чтобы обойти, можно проверять либо счетчик " i ", либо идентификатор последней записи.

А чтобы понять.....
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380548
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
adLockPessimistic 
замените на
Код: plaintext
adLockBatchOptimistic


Код: plaintext
Do Until RsetFrom.EOF
на
Код: plaintext
Do While Not RsetFrom.EOF

и добавьте:

Код: plaintext
1.
2.
3.
    
    [color=orange]RSetTo.UpdateBatch[/color]
    RSetFrom.Close
    RSetTo.Close

и ошибки обработайте с помощью обработчика конечно.
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380639
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: plaintext
Do Until RsetFrom.EOF
на
Код: plaintext
Do While Not RsetFrom.EOF


Я все понимаю, но вот это-то зачем????
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380643
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привычка и логически понятнее
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380656
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отнюдь. Зачем городить лишнюю логическую операцию, когда есть замечательная конструкция "Until". И понятнее - ДЕЛАТЬ ДО ТЕХ ПОР, КОГДА БУДЕТ КОНЕЦ ФАЙЛА.
...
Рейтинг: 0 / 0
ADO и MS Jet не реагируют на нехватку места на диске
    #36380713
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
Все сработало! Благодарю за подсказку.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO и MS Jet не реагируют на нехватку места на диске
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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