|
|
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Многоуважаемые, помогите плиз с такой проблемой. Есть БД на Oracle. Под нее делается интерфейс на Access 2000. Данные из Оracle представлены в виде связаных таблиц. Проблема: Насколько я понял в Oracle есть возможность использовать поле и как Unique Key и одновременно поставить ему свойство Nullable. То есть (как я пока дотумкал), повторений значений в этом поле Oracle не допустит, но одновременно разрешает заносить туда Null значения. В Access такое не проходит, поскольку он не разрешает создавать ключевое поле с Null значениями (транспарант выскакивает в полэкрана :-). Поскольку таблица связанная, все свойства полей беруться от источника, но перевираются страшным образом (ключевого поля уже нету). При открытии этой таблицы все данные соответственно отображаются неправильно. При ближайшем рассмотрении все записи где по идее в одном поле должен быть Null (ну просто надо так) одинаковы (ВСЕ ПОЛЯ !!!) и повторяют первую, где этот долбаный Null встречается. Вопрос: Че делать то ? Как сделать, чтоб данные в таблице были правильно представлены ? Может как-нибудь без таблицы обойтись ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 11:40 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Начнем с самого начала... 1) Зачем нужен ключ с пустыми значениями? 2) Null = Null, т.е. Null в качестве ключа можно занести только ОДИН раз? см. п.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 13:15 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
2 Темный Однако Null <> Null О чем в свое время уже было обсуждение. Как раз применительно к уникальным индексам. Правда, там обсуждался не оракл, а аксес и MS SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 13:21 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
ЛП, швырни, плиз, ссылкой в меня! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:08 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Нда... Равнется ли один кусок Великое ничто другому куску Великого ничто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:09 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Null <> Null на мс скуль сервере по моему можно выставить чтоб Null = Null, или ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:20 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
В MS SQL - можно. Что для меня явилось откровением. В аксесе - нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:23 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
ЛП, ловлю!! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:24 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Да не нашел я.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:33 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
2 Темный На вопрос, зачем в Оракловой БД Unique Key со свойством Nullable был дан простой ответ, типа не помню, но надо, и менять ничо низзя, иначе софт который с этой БД работает будет глючить (наверное). В свободное от работы время сам лично убрал свойство Key, эффект потрясающий, таблица в Аксесе линкуется как надо, определяет совершенно другой ключ (Primary), соотвессно все путем, радость без границ (как будто я этого не знал :-). Но пришлось вернуть все взад. Начальство знаете ли :-( 2 ЛП Вопрос наверное надо поставить так: Есть ли возможность прилинковать таблицы, чтоб все данные отображались нормально ? А если нет, то какие методы стоит использовать. Если есть желание и возможность - ссылочку пожаллста дайте, уважьте :-) 2 ALL Могу привести для примера более подробные данные. В Оракле таблица OFFICE: ID_OFFICE ID_PARENT_OFFICE PHONE MEMO 1 Null 9999999 Офис 1 2 1 Null Подофис 1-1 3 1 Null Подофис 1-2 4 Null 8888888 Офис 2 5 4 Null Подофис 2-1 ....... ну и т.д. ID_OFFICE - Primary Key, Non Nullable (обычный первичный ключ, не повторяется, Null быть не может. Access преобразует его как обычное ключевое поле) PHONE - Unique Key, Nullable (уникальный ключ, не повторяется, но может быть Null, кстати сколько угодно раз. Если такое свойство есть, то Access преобразует как первичный ключ, естессно убирая автоматом свойство Nullable, отсюда видимо проблема с отображением данных, ID_OFFICE ключом уже не делается !) ID_PARENT_OFFICE - Foreign Key, Nullable (хз, что за свойство, но точно знаю, что несуществующее в этой таблице значение не вставляется, что то типа проверки. Access ваще его не преобразовывает ни в какой ключ, получается простое поле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:40 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
в MS SQL так [SRC] SET ANSI_NULLS ON SET ANSI_NULLS OFF можно и по умолчанию сделать еще замечены некоторые траблы без установленной опции правил сложения строки с значениями NULL - CONCAT_NULL_YIELDS_NULL qwer + Null = Null или qwer + Null = qwer как у ораклистов не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:47 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
FK - еесно не преобразует PHONE - Unique Key - зачем, если есть PK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:51 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Если в оракловой таблице есть первичный ключ (ID_OFFICE), то аксес и должен его цеплять в качестве первичного ключа. И на всякие там PHONE и прочую лабуду должен покласть с пробором. Если это не так - проверьте наличие всех сервиспаков на все что только можно. Далее. При линковке таблиц через ОДБЦ (а к ораклу по другому и не выйдет) сам аксес спрашивает - какое поле (комбинацию полей) считать ключевым. Вот и укажите ему ID_OFFICE Далее. Если указанные при линковке ключевые поля все-таки слетели (такое бывает, например, при обновлении связанных таблиц) - то есть способ повторно указать аксесу уникальную комбинацию. Для этого надо внутри аксеса (не внутри оракла!) выполнить запрос типа такого: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:53 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
ЛП вещалДалее. При линковке таблиц через ОДБЦ (а к ораклу по другому и не выйдет) сам аксес спрашивает - какое поле (комбинацию полей) считать ключевым. Вот и укажите ему ID_OFFICE Аксес спрашивает про индекс только тогда, когда не находит сущ. ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:55 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Например, на неиндексированной View ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 14:55 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
Подключись прогрммно. При этом он не умничает - делает только то, что сказали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 18:12 |
|
||
|
Access 2000 & Oracle. Null key (+)
|
|||
|---|---|---|---|
|
#18+
f2f заявилПодключись прогрммно. При этом он не умничает - делает только то, что сказали. Только если в TableDefs добавлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 18:45 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32374303&tid=1677204]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
212ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 555ms |

| 0 / 0 |
