|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Очень странная история. В Фоксе 9 есть запрос, который показывает 19 строк. В Access 2003 есть связанная с этим запросом таблица. При открытии запроса в Аксе получаю 18 строк. Как такое может быть?! И лечить как? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 00:10 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Запрос привязывается c помощью ODBC Microsoft driver. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 00:13 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Выбирай какой вариант твой: 1. Есть помеченные на удаление записи и один из способов выборки это не учитывает. 2. Разные запросы - сравни синтаксис 3. Разные данные. Возможно у тебя несколько копий одной базы. Я бы начал с той 19-й записи и для начала бы ответил на вопрос должна ли она быть в конечной выборке? Тогда будет понятно где неправильная выборка, там и искать ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 13:02 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
1. Среди отбираемых записей есть записи, помеченные как удаленные? Какая настройка SET DELETED в среде FoxPro и в строке подключения Access? 2. Какая кодовая страница исходных таблиц FoxPro? Это таблицы, созданные в FoxPro for DOS или в VFP9? 3. Для подключения к "родным" таблица VFP9 следует пользоваться родным же драйвером OLE DB для VFP9. Драйвер ODBC был создан для версии VFP6 (хотя подходит и для VFP7). Для версий VFP8 и VFP9 работает только при определенных структурах таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 13:05 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Dima T, 1. Смотрел в Fox. Помеченных на удаление записей нет (черная метка слева). Тем более что я произвел PACK над всеми таблицами и базой. 2. В том то и дело, что используется один и тот же запрос(View) в Fox. Наверное плохо объяснил в начале. Есть сохраненная View в Фоксе (а не таблица). Я сравниваю то, что это представление дает в Фоксе и то, что открывает связь в Access. View содержит несколько связанных Join таблиц той же БД Fox. 3. Этого не м.б.. Нет других БД. И см. п.2.. 4. Запись есть в выборке в Фоксе. В Access ее нет, а должна быть. Как будто Access ее отсеивает. Пробовал продублировать строку в Фоксе. Но ни дубликат, ни обе записи не появились. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 20:34 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
ВладимирМ, 1. См.предыдущий ответ. 2. Кодировка Windows, все отображается корректно в окнах. Таблицы созданы в приложении Fox. Но это неважно, т.к. на количестве возвращаемых записей это не должно сказаться. Ведь с точки зрения Access эта связанная таблица - просто таблица с какими-то там УЖЕ СФОРМИРОВАННЫМИ в Фоксе записями. 3. Где их найти. Вообще-то Фокс 9 стоит нап том же ПК, на котором я открываю Access.Если он установил компоненты, то они уже в системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 20:43 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
И кстати, это не только особенность Access. Тоn же самый результат в MS Visual Studio 2008. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2012, 20:51 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
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, а напрямую к таблице-источнику и выберите именно эту конкретную запись, которую "потеряли". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 00:23 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
ВладимирМ, 1. CPDBF() выдает для таблиц, которые вызываются представлением, кодировку 1251 2. Можно ли управлять оптимизатором? 3. Через OLEDB невозможно в Access 2003 сделать связанным представление, чтобы посмотреть результат. Или я не знаю как. Подскажите. 4. Попробовал сделать в Access запрос, основанный не на представлении Фокса, а на таблицах, которые он использует (с аналогичным SELECT привязал их в Access). Выдает все 19 записей. К сожалению этот обходной путь крайне нежелателен, т.к. при этом время отработки запроса гораздо больше, чем с представлением. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 16:54 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Приведите команду Select-SQL на основании которой построен View. Только не то, что Вам кажется должно быть, а то, что есть на самом деле. В среде FoxPro в дизайнере View выберите пункт меню Query \ View SQL. Скопируйте все, что будет отображено в открывшемся окне. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 18:26 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
ВладимирМ, 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 ) ) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 11:01 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
ВладимирМ, Запрос не мой, потому не судите строго. Я бы использовал Join. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 11:02 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Начни с наименьшего. Выкинь все доп.справочники из запроса. Оставь только то что фильтрует выборку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Если так будет 19 записей - добавляй справочники по одному пока 18 не станет. Если будет 18 - бери поля из WHERE и смотри что не так в 19-й строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:18 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Dima T, Суть предложения в том, чтобы найти условие, которое срабатывает не так, как мы ожидаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:43 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Dima T, Виновато это условие: Mexrstrn.scodnasl = Nasl.codnasl; ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 13:59 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
serg0265, Что дальше предпринять? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:01 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
serg0265Dima T, Виновато это условие: Mexrstrn.scodnasl = Nasl.codnasl; возьми значение Mexrstrn.scodnasl и поищи в Nasl.codnasl и разберись почему для фокса оно "равно" а для ацесса "неравно" тип поля Mexrstrn.scodnas кстати какой? Если символьное, тогда смотри размеры поля и может фокс большие и маленькие буквы считает одинаковыми. Может битый индекс, сделай REINDEX для Nasl и для Mexrstrn (на всякий случай) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:10 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Dima T, Mexrstrn.scodnas=30041046 Nasl.codnasl - такое же. Переиндексирование не помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:23 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
А тип поля какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 16:02 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
serg0265Dima T, Mexrstrn.scodnas=30041046 Nasl.codnasl - такое же. Переиндексирование не помогло. Ничего мистического в этой цифре не просматривается. Разве что типы полей какие-то нестандартные и разные. Напиши типы полей с размерностью Mexrstrn.scodnas и Nasl.codnasl - возможно размерность слишком большая и округления какие-то срабатывают неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 16:16 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Dima T, Тип данных в Access для этих полей одинаков, назначается автоматически и является Текстовым с длиной 8 символов. Проверял, это максимальная длина значений, содержащихся в колонках в Фоксе. В Фоксе типы обеих колонок объявлены аналогично - Character 8. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 16:46 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Код: sql 1.
Так не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 17:42 |
|
Не передается строка из Фокса
|
|||
---|---|---|---|
#18+
Ffffffffffffffff, Не помогает :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 18:00 |
|
|
start [/forum/topic.php?fid=41&msg=37988179&tid=1583405]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 143ms |
0 / 0 |