powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы при связывании таблиц через VFP Driver
20 сообщений из 20, страница 1 из 1
Проблемы при связывании таблиц через VFP Driver
    #39272984
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! На одном из компьютеров стала зависать программа при вычислении
DCount("полис", "пересеч", "полис='" & polis & "' and timport.dspc=datevalue('" & DSPC & "') and timport.dfpc=datevalue('" & DFPC & "')")
пересеч - запрос, в котором участвует связанная через ODBC таблица VFP
Причем ранее все работало, сейчас может для одной записи вычислить, а на другой зависнуть так, что приходится аварийно закрывать access, Ctrl+Break не помогает. На другом компьютере программа работает.
У меня через odbcad32 создан пользовательский DNS, использующий Microsoft Visual FoxPro Driver. Со вчерашнего дня на одной из машин он стал глючить, причем связанная через этот DNS таблица, открывается, запрос "пересеч" - открывается, а вот когда в запрос вставляешь условия из Dcount, начинает зависать. Пробовала заменять файл vfpodbc.dll, пробовала удалять и создавать заново DNS - не помогает. Если заменить связанную таблицу на локальную, все начинает работать. Но мне нужна именно связанная таблица, поскольку я не только считываю оттуда данные, но и редактирую, добавляю, использую эту таблицу во многих запросах. Всё же работало! Теперь на одном компьютере (основном) работа встала!!!
Помогите мне, пожалуйста, разобраться.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273021
zenanaDCount("полис", "пересеч", "полис='" & polis & "' and timport.dspc=datevalue('" & DSPC & "') and timport.dfpc=datevalue('" & DFPC & "')") В условии функции должны использоваться поля, возвращаемые указанной таблицей/запросом. Если запрос возвращает поля dspc и dfpc, то зачем вы указываете timport, а если не возвращает (т.е. прямое обращение к полям таблицы, входящей в запрос), то если функция и работает - такое поведение не документировано.
Кроме того рекомендую вместо datevalue использовать дату в формате MM.DD.YY с помощью функции Format.
Где используется функция и что такое DFPC и DSPC?
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273044
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ), запрос пересеч:
Код: sql
1.
2.
3.
SELECT IIf([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc],True,False) AS Выражение1, timport.полис, timport.DSPC, timport.DFPC, gapu.dspc, gapu.dfpc, gapu.cd_lpu
FROM timport INNER JOIN gapu ON timport.полис = gapu.sn_pol
WHERE (((IIf([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc],True,False))=True) AND ((gapu.cd_lpu)=79));

В запросе DFPC и DSPC - поля, которые присутствуют в обеих таблицах, поэтому указываю timport.dfpc
В функции DCount DFPC и DSPC - это даты
Вообще у меня создана пользовательская функция, которая выводит какие имеются ошибки для записи таблицы
Код: vbnet
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.
Public Function err_com(Optional DSPC, Optional DFPC, Optional CD_SMO, _
                        Optional polis, Optional FAM, Optional NAM, Optional SEX, _
                        Optional DRPC, Optional CD_MKB, Optional Q_recp, _
                        Optional vrach, Optional RSLT, Optional ISHOD, _
                        Optional NK, Optional ino, Optional napr, Optional dnapr) As String
ms = ""
On Error GoTo 1

If IsNull(DFPC) Then ms = ms & "нет даты выписки; "
If IsNull(DSPC) Then ms = ms & "нет даты поступления; "

If ino <> -1 Then
    If Nz(polis) = "" Then
       ms = ms & "не указан полис; "
    Else: If Not (Len(polis) = 16 Or Len(polis) = 9) Then ms = ms & "неправильная длина полиса; "
    End If
    If IsNull(CD_SMO) And Nz(polis) <> "" Then ms = ms & "не Саратовский полис; "
Else: ms = ms & "иногородний; "
End If
If Nz(FAM) = "" Then ms = ms & "не указана фамилия; "
If Nz(NAM) = "" Then ms = ms & "не указано имя; "
If SEX <> "м" And SEX <> "ж" Then ms = ms & "не указан пол; "
If IsNull(DRPC) Then ms = ms & "не указана дата рождения; "
If Nz(CD_MKB) = "" Then ms = ms & "не указан диагноз; "
If Q_recp = 0 Then ms = ms & "неверно кол-во посещений; "
If Nz(vrach) = "" Then ms = ms & "не указан врач; "
If Nz(RSLT) = "" Then ms = ms & "не указан результат; "
If Nz(ISHOD) = "" Then ms = ms & "не указан исход; "
If Nz(NK) = "" Then ms = ms & "не указан №карты; "
If RSLT = 305 And Nz(napr) = "" Then ms = ms & "для результата 305 должен быть указано отделение направления; "
If RSLT = 305 And IsNull(dnapr) Then ms = ms & "для результата 305 должна быть указана дата направления; "
If RSLT <> 305 And (Nz(napr) <> "" Or Not IsNull(dnapr)) Then ms = ms & "для указаных данных по госпитализации результат должен быть 305; "
'If rslt = 304 Then ms = ms & "результат 304 - лечение продолжено; "
If Not IsNull(DSPC) And Not IsNull(DFPC) Then If DCount("полис", "пересеч", "полис='" & polis & "' and timport.dspc=datevalue('" & DSPC & "') and timport.dfpc=datevalue('" & DFPC & "')") > 0 Then ms = ms & "пересечение периодов; "
If ms <> "" Then
   err_com = Left(ms, Len(ms) - 2)
Else: err_com = ""
End If
Exit Function
1: If Err.Number = 2424 Then
      Exit Function
   Else: MsgBox Err.Description, vbCritical
   End If
'MsgBox err_com
End Function
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273074
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenana,

А что это за дичь, простите)))
Код: sql
1.
WHERE (((IIf([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc],True,False))=True) AND ...

?
Может быть, так
Код: sql
1.
WHERE ([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc]) AND ...

?
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273099
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой смысл вычислять в запросе Выражение1,
если это идентично одному из условий условию отбора WHERE со значением True,
то есть заведомо всегда будет только True?
Код: sql
1.
2.
3.
SELECT IIf([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc],True,False) AS Выражение1, ......
FROM .....
WHERE (((IIf([gapu].[dspc]<=[timport].[dfpc] And [gapu].[dfpc]>=[timport].[dspc],True,False))=True) AND ....;
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273101
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, это не принципиально ))
Просто сначала был создан запрос, который выводил все записи с отметкой есть пересечение или нет, а потом в процессе работы был использован этот старый запрос для вывода только тех, для которых есть пересечение.
Согласитесь в моем случае проблема не в этом ) А я соглашусь, что по-Вашему выглядит красивее ))
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273108
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кошмар...
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273119
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ), попробовала не выводить в запросе "пересеч" DFPC и DSPC для одной из таблиц и убрать timport. (оставила просто dfpc и dspc ) из Dcount. Не помогло. Сейчас вообще стал зависать на выполнении запроса "пересеч", причем иногда срабатывает, но чем больше выполняешь, тем реже срабатывает. Вчера на выполнении запроса "пересеч" ни разу не завис. Вместо datevalue пробовала format тоже не помогло. Какая-то ерунда со связанной таблицей. Жаль нет возможности откатить систему. Я полагаю, что-то с пользовательским DSN происходит или с VFP Driver
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273121
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уберите, хотя бы, помеченное красным
Код: vbnet
1.
DCount("полис", "пересеч", "полис='" & polis & "' and timport.dspc=.... and timport.dfpc=....
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273128
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, запрос "пересеч" возвращает поля dfpc,dspc из таблиц timport и gapu, поэтому требуется указать к каким именно dfpc,dspc обращаться. Я убирала уже из запроса "пересеч" dfpc,dspc одной из таблиц и убирала выделенное Вами красным, это не помогло для решения моей проблемы
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273142
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня vfpodbc.dll версии 6.01.8629.1. Может имеет смысл попробывать заменить на более раннюю версию, например, имеется еще версия 6.0.8167.0
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273155
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenana,

Из самого запроса убирать детализирующие имена таблиц не надо, а вот из DCount надо.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273165
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Ваш запрос в "облегченном" виде
Код: sql
1.
2.
3.
SELECT timport.полис, timport.DSPC, timport.DFPC, gapu.dspc, gapu.dfpc, gapu.cd_lpu
FROM timport INNER JOIN gapu ON timport.полис = gapu.sn_pol
WHERE ([gapu].[dspc]<=[timport].[dfpc]) And ([gapu].[dfpc]>=[timport].[dspc]) AND (gapu.cd_lpu=79);
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273251
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, но ведь запрос возвращает два поля dfpc и два поля dspc (из разных таблиц), Dcount не понимает на какое поле ставить условие и выдает ошибку. Это тогда надо переименовывать поля, чтоб не было одинаковых имен. Но сейчас моя проблема не в этом
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273270
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenana,

Да, точно, одинаковые имена как-то ускользнули.
Я понимаю, что проблема в другом, но с этим помочь не могу, к сожалению.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273343
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А таблицы-то какие? Почему вы такой драйвер используете?
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273566
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F, таблицы .dbf от программы, написанной на VFP.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273570
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока справилась с проблемой заменой библиотеки vfpodbc.dll версии 6.01.8629.1 на более раннюю версию 6.0.8167.0 и избавлением от запроса "пересчет" (дописала в DCount побольше условий и вместо запроса взяла таблицу). Что именно помогло, нет времени разбираться (компьютер, на котором возникли проблемы, постоянно занят, работают в авральном режиме ). Говорю "пока справилась", поскольку проблема была плавающей, то работало, то нет, сейчас ПОКА (тьфу-тьфу-тьфу) стабильно работает.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39273674
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenanaF, таблицы .dbf от программы, написанной на VFP.
Тогда надо использовать VFP Oledbprovider, поскольку VFP odbc-driver корректно работает только с таблицами dbf, созданными в версии не старше FoxPro 6.
...
Рейтинг: 0 / 0
Проблемы при связывании таблиц через VFP Driver
    #39274294
zenana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F, да, я частенько пользуюсь OLE DB Provider for Visual FoxPro, но только когда удобно работать с таблицей как рекордсетом. А когда нужна связанная таблица, которая участвует во многих запросах, мне удобнее использовать драйвер. Наверное не хватает знаний ))
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы при связывании таблиц через VFP Driver
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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