Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять про ошибки преобразования из Ac2000 в Ac97. / 15 сообщений из 15, страница 1 из 1
12.06.2004, 12:11
    #32559217
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Посмотрите, пожалуйста, на вскидку, почему не работает строка:
Код: plaintext
DefaultPath = CurrentDb.Path & "\Data\" & DBFileName


Не буду выкладывать весь модуль, но это примерно относится к этой строке:
авторDim DefaultPath As String
Const INI_FileName As String = "Application.ini"
PathToINI = CurrentDb.Path & "\" & INI_FileName
Const INI_FileName As String = "Application.ini"
PathToINI = App.Path & "\" & INI_FileName

Подскажите, пожалуйста, в чем примерно может быть ошибка?
...
Рейтинг: 0 / 0
12.06.2004, 12:18
    #32559219
N_A
N_A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
CurrentDb.Name
...
Рейтинг: 0 / 0
12.06.2004, 12:43
    #32559227
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
автор
Посмотрите, пожалуйста, на вскидку, почему не работает строка:
DefaultPath = CurrentDb.Path & "\Data\" & DBFileName

а в чем состоит "не работает"
что выдает сейчас и что должна по твоему мнению выдавать
...
Рейтинг: 0 / 0
12.06.2004, 12:46
    #32559230
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
2 N_A:
авторCurrentDb.Name - супер, помогло, ОГРОМНОЕ спасибо.


Возникла еще проблеика.

Не работает процедура Write INI, а я в API ни ухом ни брюхом, т.е. вообще ничего не понимаю. Даже с хорошими комментариями не могу понять в чем здесь проблема ? ? ?
Посмотрите PLS в чем примерно ошибка при конвертировании для Ac97.


Код: 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.
 '   тут то что происходит при запуске априкации
 
 '   (вынесено в отдельный модуль для наглядности и удобства)
 
 '============================================================
 

Public Const DBFileName As String = "DB.mdb"   'Константа имени подключемого файла
 
 '(... Public - т.к. используется и тут  и в форме натройки = SetUpProgram)
 

Public Function StartConnection() As Long
 'Функция подключения всего набора внешних данных (какой есть)
 
 'При ошибке возвращает ее код
 
 '(запускается из модуля формы 0Load по таймеру, интервал таймера = 100 (0,1 сек))
 
 '============================================================
 
Dim DefaultPath As String      'Путь к базе по умолчанию
 
Dim str As String              'строка переменного назначения
 
 '=============================================================
 
On Error GoTo StartConnectionErr

 'Получаем путь по умолчанию ( внутри папки откуда запустились)
 
    DefaultPath = CurrentDb.Name & "\Data\" & DBFileName

 'Пытаемся получить заданный путь из INI файла - если не получается то _
 
    применяем и записываем (в INI) путь по умолчанию
    str = ReadINI("Main", "DB Name", DefaultPath)  'см функц. в модуле modReadWriteINI
 

 'Проверяем верен ли полученный из INI файла путь
 
    If Dir(str) = "" Then    'если НЕТ то
 
       str = DefaultPath     'употребляем путь из текущей папки
 
       WriteINI "Main", "DB Path", str  'Запись нового пути в INI файл
 
    End If

 'Подключаем все таблицы из указанного файла
 
    StartConnection = jsConnectAllTables(str)  'см функц. в модуле modDataConnection
 
  
StartConnectionBye:
    Exit Function
    
StartConnectionErr:  '
 
    Debug.Print Err.Description & vbCrLf & " Err#" & Err.Number
    StartConnection = Err.Number
    Err.Clear
    Resume StartConnectionBye
End Function

Код: 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.
 'Модуль Записи|Чтения INI файла
 
 '=======================================================================
 
 'Декларация API ......
 
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
    (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
    (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Private Function PathToINI() As String
 'Возвращает путь к файлу INI
 
 '=======================================================================
 
Const INI_FileName As String = "Application.ini"
     'PathToINI = App.Path & "\" & INI_FileName             'Для VB
 
    PathToINI = CurrentDb.Name & "\" & INI_FileName   'Для VBA (2000+)
 
End Function


Public Sub WriteINI(sPart As String, sName As String, val As String)
 'Запись данных в INI файл - аргументы:
 
 '   sPart  = Название раздела
 
 '   sName  = Название параметра
 
 '   val    = Значение параметра
 
 '=======================================================================
 
Dim filePath As String
Dim intRet As Integer
On Error GoTo WriteINIErr
 'Получаем путь ....
 
    filePath = PathToINI
 'Пишем значения
 
    intRet = WritePrivateProfileString(sPart, sName, val, filePath)
 'Проверка результата записи
 
    If intRet <>  1  Then  'Неудачное завершение
 
        MsgBox "Процедура WriteINI не смогла записать параметр INI Файла:" & vbCrLf & _
        filePath & vbCrLf & _
        "-----------------------------------------------------------------" & vbCrLf & _
        "[" & sPart & "]" & vbCrLf & sName & "=" & val
    End If
    Exit Sub
WriteINIErr:
    MsgBox "Процедура WriteINI привела к ошибке:" & vbCrLf & _
    "#" & Err.Number & " " & Err.Description, vbCritical
End Sub


Public Function ReadINI(sPart As String, sName As String, Optional DefVal As String = "") As String
 'Чтение данных из файла INI - с возможностью записи значения по умолчанию где аргументы:
 
 '   sPart  = Название раздела
 
 '   sName  = Название параметра
 
 '   DefVal = Значение по умолчанию (на случай его отсутствия)
 
 '=======================================================================
 
 'Значение возвращаемое функцией GetPrivateProfileString если искомое значение параметра не найдено
 
Const strNoValue As String = ""
 '
 
Dim filePath As String    'Путь к INI файлу
 
Dim intRet As Integer     'Длина возвращаемой строки (функцией GetPrivateProfileString)
 
Dim strRet As String      'Возвращаемая строка
 
On Error GoTo ReadINIErr
 'Получаем путь ....
 
    filePath = PathToINI

 'Получаем значение из файла - если его нет будет возвращен 3й аргумент = strNoValue
 
    strRet = String( 255 , Chr( 0 ))
    intRet = GetPrivateProfileString(sPart, sName, strNoValue, strRet,  255 , filePath)
    strRet = Left$(strRet, intRet)

 'Определяем было найдено значение или нет (если возвращено знач. константы strNoValue то = НЕТ)
 
    If strRet = strNoValue Then             'Значение не было найдено
 
        If DefVal <> "" Then                'Если знач по умолчанию задано
 
            WriteINI sPart, sName, DefVal   'Записываем заданное аргументом DefVal значение по умолчанию
 
            strRet = DefVal                 'и возвращаем его же
 
        End If
    End If
 'Возвращаем найденное
 
    ReadINI = strRet
    Exit Function
ReadINIErr:
    MsgBox "Функция ReadINI привела к ошибке:" & vbCrLf & _
    "#" & Err.Number & " " & Err.Description, vbCritical
End Function
...
Рейтинг: 0 / 0
12.06.2004, 13:13
    #32559240
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
автора в чем состоит "не работает"
Спасибо, в общем-то заработало.
А проблемка состояла в том, что не прописывался путь к Б.Д.
...
Рейтинг: 0 / 0
12.06.2004, 13:20
    #32559246
N_A
N_A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
CurrentDb.Name не помогло т.к. вы его напрямую вставили вместо CurrentDb.Path, а надо откинуть имя файла и расширение.
Например
?CurrentDb.Name
вернет
C:\Documents and Settings\N_A\Мои документы\db6.mdb
а вам надо
C:\Documents and Settings\N_A\Мои документы
Процедуру откидывания искать и писать лень, должна быть в форуме.
В 2002 есть свойство CurrentProject.Path. про 97 не знаю давно не пользуюсь
...
Рейтинг: 0 / 0
12.06.2004, 13:25
    #32559252
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
    iPos2 =  1 
    iPos1 = InStr(iPos2, dbs_name, "\")
    While iPos2 < iPos1
        iPos2 = iPos1 +  1 
        iPos1 = InStr(iPos2, dbs_name, "\")
    Wend
    sPath = Left(dbs_name, iPos2 -  1 )
...
Рейтинг: 0 / 0
12.06.2004, 14:00
    #32559291
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
ТемныйПримерно так
А вместо чего это писать и в какое место?
Подскажите PLS.
...
Рейтинг: 0 / 0
12.06.2004, 14:03
    #32559294
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Gyslik.А вместо чего это писать и в какое место?
Гусары, молчать...

Это решение проблемы, которую указал N_A в 13:20.
...
Рейтинг: 0 / 0
12.06.2004, 14:11
    #32559301
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Гусарские полки Её Величества молчат. Но скоро не смогут сдерживаться.
...
Рейтинг: 0 / 0
12.06.2004, 14:11
    #32559302
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
с 16 по 30 строчку
анекдот
звонок в скорую помощь(Саныч это у нас 911)
- срочно приезжайте машиной сбит человек
- "скорая" - дайте адрес
- диктуем Ленинский дом 1 3 5 7
...
Рейтинг: 0 / 0
12.06.2004, 14:12
    #32559303
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Мне кажется, что Саныч знает, что такое Скорая помощь
...
Рейтинг: 0 / 0
12.06.2004, 14:14
    #32559306
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
Это не машиной сбит, это попал под каток...
...
Рейтинг: 0 / 0
12.06.2004, 14:25
    #32559315
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
ТемныйМне кажется, что Саныч знает, что такое Скорая помощь

дай постебаться
ты от работы маешься,а я вчера сел резюме рассылать - ещё тот кураж!
...
Рейтинг: 0 / 0
14.06.2004, 04:04
    #32559985
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про ошибки преобразования из Ac2000 в Ac97.
2 Темный:
Спасибо, большое - разобрался, получилось!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять про ошибки преобразования из Ac2000 в Ac97. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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