Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не передается строка из Фокса / 25 сообщений из 27, страница 1 из 2
06.10.2012, 00:10
    #37986192
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Очень странная история. В Фоксе 9 есть запрос, который показывает 19 строк. В Access 2003 есть связанная с этим запросом таблица. При открытии запроса в Аксе получаю 18 строк. Как такое может быть?! И лечить как?
...
Рейтинг: 0 / 0
06.10.2012, 00:13
    #37986194
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Запрос привязывается c помощью ODBC Microsoft driver.
...
Рейтинг: 0 / 0
06.10.2012, 13:02
    #37986361
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Выбирай какой вариант твой:
1. Есть помеченные на удаление записи и один из способов выборки это не учитывает.
2. Разные запросы - сравни синтаксис
3. Разные данные. Возможно у тебя несколько копий одной базы.

Я бы начал с той 19-й записи и для начала бы ответил на вопрос должна ли она быть в конечной выборке? Тогда будет понятно где неправильная выборка, там и искать ошибку.
...
Рейтинг: 0 / 0
06.10.2012, 13:05
    #37986363
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
1. Среди отбираемых записей есть записи, помеченные как удаленные? Какая настройка SET DELETED в среде FoxPro и в строке подключения Access?
2. Какая кодовая страница исходных таблиц FoxPro? Это таблицы, созданные в FoxPro for DOS или в VFP9?
3. Для подключения к "родным" таблица VFP9 следует пользоваться родным же драйвером OLE DB для VFP9. Драйвер ODBC был создан для версии VFP6 (хотя подходит и для VFP7). Для версий VFP8 и VFP9 работает только при определенных структурах таблиц.
...
Рейтинг: 0 / 0
06.10.2012, 20:34
    #37986595
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Dima T,

1. Смотрел в Fox. Помеченных на удаление записей нет (черная метка слева). Тем более что я произвел PACK над всеми таблицами и базой.
2. В том то и дело, что используется один и тот же запрос(View) в Fox. Наверное плохо объяснил в начале. Есть сохраненная View в Фоксе (а не таблица). Я сравниваю то, что это представление дает в Фоксе и то, что открывает связь в Access. View содержит несколько связанных Join таблиц той же БД Fox.
3. Этого не м.б.. Нет других БД. И см. п.2..
4. Запись есть в выборке в Фоксе. В Access ее нет, а должна быть. Как будто Access ее отсеивает. Пробовал продублировать строку в Фоксе. Но ни дубликат, ни обе записи не появились.
...
Рейтинг: 0 / 0
06.10.2012, 20:43
    #37986603
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
ВладимирМ,

1. См.предыдущий ответ.
2. Кодировка Windows, все отображается корректно в окнах. Таблицы созданы в приложении Fox. Но это неважно, т.к. на количестве возвращаемых записей это не должно сказаться. Ведь с точки зрения Access эта связанная таблица - просто таблица с какими-то там УЖЕ СФОРМИРОВАННЫМИ в Фоксе записями.
3. Где их найти. Вообще-то Фокс 9 стоит нап том же ПК, на котором я открываю Access.Если он установил компоненты, то они уже в системе.
...
Рейтинг: 0 / 0
06.10.2012, 20:51
    #37986613
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
И кстати, это не только особенность Access. Тоn же самый результат в MS Visual Studio 2008.
...
Рейтинг: 0 / 0
07.10.2012, 00:23
    #37986772
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
serg02652. Кодировка Windows, все отображается корректно в окнах. Таблицы созданы в приложении Fox.
"Кодировка Windows" - это не ответ. Нужен конкретный номер кодовой страницы, которую можно получить в среде FoxPro через функцию CPDBF(). И тот факт, что они были созданы в среде FoxPro тоже ни о чем не говорит. У Вас ведь проблема не в FoxPro, а во внешнем доступе к данным FoxPro.

serg0265 Но это неважно, т.к. на количестве возвращаемых записей это не должно сказаться. Ведь с точки зрения Access эта связанная таблица - просто таблица с какими-то там УЖЕ СФОРМИРОВАННЫМИ в Фоксе записями.
Это Вам так кажется.

Во-первых, Local View в FoxPro физически представляет собой некую обертку над командой Select-SQL. Это значит, что обращаясь в View Вы каждый раз заново делаете выборку. А какие записи при этом выбираются зависит от текущих настроек среды FoxPro, которые как раз и устанавливаются при установке соединения.

Во-вторых, если Вы используете драйвер ODBC и кодовые страницы отличны от 1251, то часть данных может быть потеряна из-за глюков оптимизатора запросов. Например, насколько я помню, при кодовой странице 866 "терялись" записи, если выборка шла по целочисленному полю со значением 22.

serg02653. Где их найти. Вообще-то Фокс 9 стоит нап том же ПК, на котором я открываю Access.Если он установил компоненты, то они уже в системе.
Драйвер VFPOLEDB поставляется вместе с FoxPro и устанавливается при установке FoxPro. Но Вы можете его бесплатно скачать с сайта Microsoft. Или Вы не можете установить соединение не через драйвер ODBC, а через OLE DB (ADO)?

Попробуйте сделать отдельный запрос, который будет обращаться не к View, а напрямую к таблице-источнику и выберите именно эту конкретную запись, которую "потеряли".
...
Рейтинг: 0 / 0
07.10.2012, 16:54
    #37987129
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
ВладимирМ,

1. CPDBF() выдает для таблиц, которые вызываются представлением, кодировку 1251
2. Можно ли управлять оптимизатором?
3. Через OLEDB невозможно в Access 2003 сделать связанным представление, чтобы посмотреть результат. Или я не знаю как. Подскажите.
4. Попробовал сделать в Access запрос, основанный не на представлении Фокса, а на таблицах, которые он использует (с аналогичным SELECT привязал их в Access). Выдает все 19 записей. К сожалению этот обходной путь крайне нежелателен, т.к. при этом время отработки запроса гораздо больше, чем с представлением.
...
Рейтинг: 0 / 0
07.10.2012, 18:26
    #37987175
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Приведите команду Select-SQL на основании которой построен View. Только не то, что Вам кажется должно быть, а то, что есть на самом деле. В среде FoxPro в дизайнере View выберите пункт меню Query \ View SQL. Скопируйте все, что будет отображено в открывшемся окне.
...
Рейтинг: 0 / 0
08.10.2012, 11:01
    #37987693
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
ВладимирМ,
SELECT Mexruch.typgon, Mexruch.dateot, Mexruch.rmexcod, Mexruch.mexnom,;
Mexruch.nmalb, Mexrstr.snomstr, Mexrstr.codawt, Mexrstrn.snomnasl,;
Nasl.fionasl, Inf.otdvaap, Proizw.nmproiz, Mexrstrn.ssumnasl,;
Mexrstr.codpr, Mexruch.nameplat, Mexruch.ispoln, Mexruch.mexplat,;
Mexruch.nompac, Mexruch.datew, Mexruch.mexnoms, Mexruch.mexsum,;
Mexruch.mexsumd, Mexrstrn.scodnasl;
FROM ;
mexruch,;
mexrstr,;
inf,;
proizw,;
mexrstrn,;
nasl;
WHERE ( ( ( ( ( Mexruch.rmexcod = Mexrstr.srmexcod;
AND Mexrstr.codawt = Inf.codawt );
AND Mexrstrn.ssumnasl <> ( 0 ) );
AND Mexrstr.codpr = Proizw.codpr );
AND Mexrstrn.smexcod = Mexrstr.srmexcod );
AND Mexrstrn.scodstr = Mexrstr.scodstr );
AND ( ( Mexrstrn.scodnasl = Nasl.codnasl;
AND Mexruch.typgon = ( "АВП" ) );
AND ( Mexruch.dateot = ( 912 );
AND Mexrstr.codawt = ( 41046 ) ) )
...
Рейтинг: 0 / 0
08.10.2012, 11:02
    #37987698
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
ВладимирМ,
Запрос не мой, потому не судите строго. Я бы использовал Join.
...
Рейтинг: 0 / 0
08.10.2012, 12:18
    #37987894
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Начни с наименьшего. Выкинь все доп.справочники из запроса. Оставь только то что фильтрует выборку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT *;
FROM ;
mexruch,;
mexrstr,;
mexrstrn;
WHERE Mexruch.rmexcod = Mexrstr.srmexcod;
AND Mexrstrn.smexcod = Mexrstr.srmexcod;
AND Mexrstrn.scodstr = Mexrstr.scodstr;
AND Mexrstrn.ssumnasl <>  0 ;
AND Mexruch.typgon = "АВП";
AND Mexruch.dateot = 912;
AND Mexrstr.codawt = 41046


Если так будет 19 записей - добавляй справочники по одному пока 18 не станет.
Если будет 18 - бери поля из WHERE и смотри что не так в 19-й строке.
...
Рейтинг: 0 / 0
08.10.2012, 12:43
    #37987967
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Dima T,

Суть предложения в том, чтобы найти условие, которое срабатывает не так, как мы ожидаем?
...
Рейтинг: 0 / 0
08.10.2012, 12:45
    #37987977
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
да
...
Рейтинг: 0 / 0
08.10.2012, 13:59
    #37988172
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Dima T,
Виновато это условие: Mexrstrn.scodnasl = Nasl.codnasl;
...
Рейтинг: 0 / 0
08.10.2012, 14:01
    #37988179
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
serg0265,
Что дальше предпринять?
...
Рейтинг: 0 / 0
08.10.2012, 14:10
    #37988206
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
serg0265Dima T,
Виновато это условие: Mexrstrn.scodnasl = Nasl.codnasl;
возьми значение Mexrstrn.scodnasl и поищи в Nasl.codnasl и разберись почему для фокса оно "равно" а для ацесса "неравно"
тип поля Mexrstrn.scodnas кстати какой? Если символьное, тогда смотри размеры поля и может фокс большие и маленькие буквы считает одинаковыми.

Может битый индекс, сделай REINDEX для Nasl и для Mexrstrn (на всякий случай)
...
Рейтинг: 0 / 0
08.10.2012, 14:23
    #37988242
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Dima T,
Mexrstrn.scodnas=30041046
Nasl.codnasl - такое же.
Переиндексирование не помогло.
...
Рейтинг: 0 / 0
08.10.2012, 16:02
    #37988542
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
А тип поля какой?
...
Рейтинг: 0 / 0
08.10.2012, 16:16
    #37988580
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
serg0265Dima T,
Mexrstrn.scodnas=30041046
Nasl.codnasl - такое же.
Переиндексирование не помогло.
Ничего мистического в этой цифре не просматривается. Разве что типы полей какие-то нестандартные и разные.
Напиши типы полей с размерностью Mexrstrn.scodnas и Nasl.codnasl - возможно размерность слишком большая и округления какие-то срабатывают неправильно.
...
Рейтинг: 0 / 0
08.10.2012, 16:46
    #37988645
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Dima T,
Тип данных в Access для этих полей одинаков, назначается автоматически и является Текстовым с длиной 8 символов. Проверял, это максимальная длина значений, содержащихся в колонках в Фоксе.
В Фоксе типы обеих колонок объявлены аналогично - Character 8.
...
Рейтинг: 0 / 0
08.10.2012, 17:42
    #37988806
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Код: sql
1.
Alltrim(Mexrstrn.scodnasl) = Alltrim(Nasl.codnasl)


Так не работает?
...
Рейтинг: 0 / 0
08.10.2012, 18:00
    #37988846
serg0265
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Ffffffffffffffff,
Не помогает :(
...
Рейтинг: 0 / 0
08.10.2012, 18:08
    #37988858
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не передается строка из Фокса
Ну, не знаю. Выкладывай таблицы.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не передается строка из Фокса / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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