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

Есть большая проблема, которая никак не хочет сдаваться.

Пишу следующий код на VB :

Sub test_1()
Dim l_adors As New ADODB.Recordset

l_adors.Open "CREATE TABLE test_dbf (a long, b long)", _
"Provider=MSDASQL.1;" & _
"Extended Properties=;" & _
"DRIVER=Microsoft dBase " & _
"Driver (*.dbf);" & _
"DefaultDir=c:\" & _
";DriverId=21;" & _
"FIL=dBase IV;" & _
"MaxBufferSize=2048;" & _
"PageTimeout=600;UID=admin;", adOpenUnspecified, adLockUnspecified, -1

set l_adors = nothing
set l_adors = new ADODB.RecordSet
l_adors.Open "Select * from test_dbf", _
"Provider=MSDASQL.1;" & _
"Extended Properties=;" & _
"DRIVER=Microsoft dBase " & _
"Driver (*.dbf);" & _
"DefaultDir=c:\" & _
";DriverId=21;" & _
"FIL=dBase IV;" & _
"MaxBufferSize=2048;" & _
"PageTimeout=600;UID=admin;", adOpenUnspecified, adLockUnspecified, -1


l_adors.AddNew
l_adors(0).Value = 1
l_adors(1).Value = 1
l_adors.Update ' <----- тут ругается
End Sub

Ругается следующим образом : [Microsoft][ODBC dBase Driver] Cannot update. Database or object is read-only.

Эта ошибка проявляется только на win-98. На 2000-ах и XP все в порядке.
Файл dbf создается, но записи в него через ADO добавить не удается. У файла не стоит атрибута, что он ReadOnly. Этот файл удается редактировать и добавлять записи через другие редакторы dbf. Если этот файл перенести на комп с win2000 или XP то там он работает нормально. Плиз... подскажите кто что может.
...
Рейтинг: 0 / 0
Проблемы с формированием dbf файла на Win98
    #32204209
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой опыт:
Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
Работа в Microsoft с различными источниками данных.
====================================================
DB файлы - разные версии Paradox, DBF файлы - foxpro2. 6  dos
Среда: Win2K ( или Win98SE + MsJetSP3 ) + MDAC2. 6 (MDAC2. 7 ) + MsOffice2K+SP1+SP2
       Если BDE, то BDE5. 1 

 1 . Если стоит BDE ( Внимание! БДЕ не деинсталируется )
 -----------------------------------------------------
 

 1 . 1  При попытке привязки внешних баз через меню Аксес :

  DB файлов  - Paradox (db):
                успешно пишет и читает в разделяемом режиме
             - ODBC :
                сообщение  "Не допускается использование  ODBC для импорта , экспорта или присоединенния таблицы из внешнеей базы данных Microsoft Jet или базы данных ISAM" 

  DBF файлов - DBaseIV: устанавливает из меню Аксеса связь с отказом от индексов
                но  1 ) - только в монопольном доступе, при разделяемом сообщение
                     "Блокировка таблицы Kart невозможна;она используется пользователем '(нет данных)' на машине '(нет данных)'" 
                и   2 ) - да она и ВСЕ-РАВНО НЕ РАБОТАЕТ при попытке открыть привязанную таблицу
                       в Аксес ( "Индекс не найден" )
             - ODBC   : 
                Нужно обязательно для записи задать ключевые поля!
                при использовании файлового DSN :                
                   "Зарезервированная ошибка (-7778 );.Сообщение для данной ошибки отсутствует"
                при использовании системного(пользовательского) DSN (причем его имя может совпадать с именем файлового DSN) :                
                 - ВСЕ ОК и чтение и запись !

 1 . 1 . 2  При попытке привязки из программы ( в общем почти как и через меню Аксес)

  DB файлов  - Paradox (db) (  "Paradox 3 .X;HDR=NO;IMEX= 2 ;DATABASE=" ) :
                успешно пишет и читает в разделяемом режиме , Но очень медленно!
             - ODBC :
                сообщение  "Не допускается использование  ODBC для импорта , экспорта или присоединенния таблицы из внешнеей базы данных Microsoft Jet или базы данных ISAM" 

  DBF файлов - DBaseIV ISAM:  при некоторых таблицах только монопольный доступ и чтение и запись 
                              и  ( не разобрался в индексах дело или еще в чем ), 
                              при некоторых таблицах при разделяемом вообще не работает:  "Индекс не найден" 
                              а при других и чтение и запись в разделяемом допускает!!!
замечание: - индексы DTOC(поле, 1 ) следует заменить на DTOS(поле) ; кроме того, обязательно рядом с DBF файлом 
             должен быть его CDX, иначе при привязке - 'индекс не найден'
              
  DBF файлов - ODBC(через пользовательский или системный DSN возможно ,
                    через файловый StrCnn =  "ODBC;DSN=HBI_EKSP;"  -   "Runtime error 3146  ODBC ошибка вызова", 
                    а без DSN -  "невозможно найти устанавливаемый ISAM"  ):
   непосредственно при привязке невозможно установить ключевое поле и ,
   как следствие - невозможно обеспечить запись данных - ТОЛЬКО ЧТЕНИЕ!
замечание: уникальный ключ следует устанавливать после привязки командой
  CREATE UNIQUE INDEX <Имя ключа> ON <Имя таблицы> (<имя поля1>,<имя поля2>,...)
  Тогда становится возможной и ЗАПИСЬ !

Внимание! На каждый привязывемый каталог нужно свой DSN иметь  

' Замечание по многопользовательской конкурентной работе :
' Внимание!
' При "Connection: dBase IV;HDR=NO;IMEX=2;DATABASE="
'  Конкурент может ЗАПРЕТИТЬ обработку dbf таблицы только открыв ее в EXCLUSIVE режиме!
'   При добавлении( результаты добаления и,кстати, модификации проявляются в любом случае
'    не ранее, чем после Rs.close )  если эта таблица заблокирована в fpd26(vfp60,...)
'    перед этим добавлением командой flock(), то добавление все-равно проходит
'    успешно, а кокурентному foxpro приложению, чтобы его увидеть бесполезно
'    делать unlock,flush, двигать указатель - нужно вновь переоткрыть таблицу в shared режиме.
'   При модификации записи блокировка конкурентом flock(),rlock() тоже не спасает от модификации,
'    результаты конкуренту видны уже при перемещении указателя или обновлении browse окна.
' При  "Connection:  ODBC;DSN=pConv/s,Microsoft Visual FoxPro Driver;Description=Текущий Журнал Событий на проходных;SourceType=DBF;Exclusive=No;"  & _
'                   "BackgroundFetch=Yes;Collate=Machine;Null=No;Deleted=Yes;SourceDB="
'  Здесь вроде все OK!Только тормоза!
'   При блокировке rlock(),flock() конкурентом при любой MADO на Rs.Update будет exception :
'     "ODBC - Ошибка обновления присоединенной(связанной) таблицы <имя таблицы>" 
'   видны новые или модифицированные записи конкуренту уже при Rs.Update

 1 . 2  При прямом коннекте из программы без привязки через Аксес :

 DSN LESS Connection :
  DB файлы :
    Успешно все (см пробел!)
    Conn.Open  "Driver={Microsoft Paradox Driver (*.db )};"  & _
                       "DriverID=538 ;" & _
                       "Fil=Paradox 5 .X;" & _
                       "DefaultDir=c:\dbpath\;"  & _
                       "Dbq=c:\dbpath\;"  & _
                       "CollatingSequence=ASCII;"  
  DBF файлы:
   не при любых индексах в DBF успешно (так же как и при привязке):
    Conn.Open  "Driver={Microsoft dBASE Driver (*.dbf)};"  & _
               "DriverID=277 ;" & _
               "Dbq=\somepath;" 
    Примечание: Задайте имя файла в запросе SQL. Например:
                Rs.Open  "Select * From user.dbf" , Conn, , ,adCmdText

Резюме по использованию коннекта в программе при BDE:
 ----------------------------------------------------
 
 DB - driver ISAM Paradox (db):
 DBF- ODBC(только чтение); 
      или не при любых индексах привязка через ISAM dBaseIV, 
          что при этих нелюбых индексах для монопольного доступа позволяет 
          и читать и писать
 XLS - привязка к Аксес через  "Excel 5 . 0 ;HDR=YES;IMEX= 2 ;DATABASE=C:\Dvlp\ 1 \остатки.xls" через ADOX 
       при использовании ODBC:  "Не допускается использование  ODBC для импорта , экспорта или присоединенния таблицы из внешнеей базы данных Microsoft Jet или базы данных ISAM" 

Резюме по использованию коннекта (привязки) из меню Access при BDE:
 ------------------------------------------------------------------
 
 DB - driver ISAM Paradox (db):
 DBF- ODBC и чтение и запись при выбранных ключевых полях


 2 . Если не стоит BDE 
 --------------------
 

  2 . 1  При попытке привязки внешних баз через меню Аксес :

  DB файлы - или для некоторых версий DB  "Внешняя таблица не имеет предполагаемый формат" 
             или для других некоторых версий только для монопольного ВСЕ OK и чтение и запись !

  DBF - как и при BDE, 
        с тем отличием, что при привязке из программы при dBaseIV (DAO,ADOX)
        и разделяемый доступ на чтение и запись возможен!  

  2 . 2  При прямом коннекте из программы без привязки через Аксес :

 DSN LESS Connection :

  DB файлы - или для некоторых версий DB  "Внешняя таблица не имеет предполагаемый формат" 
             или для других некоторых версий только для монопольного ВСЕ OK и чтение и запись !

  DBF - работает и DBaseIV и ODBC( ODBC из программы запись только при монопольном) 
  

...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблемы с формированием dbf файла на Win98
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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