|
|
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
Мне нужно линковать таблицы из SQLserver и mdb, т.к. приложение должно работать с разными БД. 1. Есть прилинкованные таблицы из mdb-файла. Через link-manager можно переключится на те же таблицы в SQL-server. Наоборот - нельзя, всё время хочет ODBC. Аналогичная ситуация с .RefreshLink. Что делать? 2. При линковке таблиц из SQLserver Access всё время спрашивает поле для индекса (хотя оно есть в SQLserver). Если его не указать - таблица только для чтения. Что делать, если линкую таблицу через .RefreshLink? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 10:26 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
1. Навскидку - програмно убивай связь и делай заново. 2. После .RefreshLink делай CurrentDb.Execute "Create Unique Index IndexName On TableName (FieldName Asc/Desc)". В синтаксисе мог ошибиться, но смысл такой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 10:37 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
Если индексы есть, то проще не перелинковывать, а снести старые таблы и занова подлинковаться - по умолчанию существующие ключи должны найтись. Для этого надо иметь таблицу "прилинковываемых таблиц". Реализацию ( некоего SSY ) правда видел не для MSSQL, но для PosgreSQL (Access97). Что не принципиально. Сделано разумно. Обобщить на случай возможности выбора произвольного драйвера (ODBC/isam/Jet) в процессе подключения не сложно. Что важно - при переопределении структуры таблиц не возникает проблем. А для таблиц, не имеющих встроенных ключей можно при прилинковке задавать "свои" (в табличке описаний предусмотрено поле/поля), но это чревато странностями поведения при попытках вводить/редактировать/удалять записи с дублирующимися значениями псевдоключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 11:18 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
1. ключи по умолчанию для ODBC-линка НЕ находятся, только для mdb. 2. я не знаю как программно убить прилинкованную таблицу 3. спасибо за ссылки, но в них описано именно то, что я пользую. Трабл состоит в том, что при перелинковке таблиц из ODBC в mdb Access продолжает спрашивать DNS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 12:10 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
Если бы вы не поленились заглянуть в пример приложения, к которому отсылает страничка, вы б увидели в нем к примеру такие строчки: Код: plaintext 1. В первой из которой табличный объект программно сносится, при условии своего наличия в семействе. А все-таки она вертится(с) (ключи находятся. в Постгре - по крайней мере. Может быть это и не верно с мсскл, но это странно. Имеются в виду именно не индексы,а Primary Key). А на случай отсутствия, там (в примере) предлагались такие меры: Код: plaintext 1. 2. 3. 4. 5. 6. (KeyFieldName - передаваемый опционально параметр "насильно навязываемого первичного ключа). __ * примечание IsTableExist - распространенного типа ф-я, в данном примере имеет вид: Код: 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. еще раз рекомендую присмотреться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 12:49 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет "присмотреться" и терпение в объяснении. Удалось добиться линкования таблиц через их удаление. Таблицы, в которых есть PrimaryKey, редактируемы. Где Primary нет (а есть индекс по повторяющимся значениям) - только на чтение. Команда "create index" создаёт индекс (хотя он и существует в SQLserver), таблица начинает редактироваться, но работает это очень медленно (вместо 1 секунды - минуты 3), и неправильно сортирует другие поля. SQLserver создавать индекс по полю не даёт, т.к. есть одинаковые значения. Создать поле GUID тоже не может - не заполняет, а ругается на Null. Вообще-то мне надо просто редактировать таблицы, прилинкованные от SQLserver. Уже замонался с этим SQLserver. В Access таких заморочек просто нет, индексы - любые, связи - любые, обновления - любые, создание GUID - запросто. Всё, что хочешь и без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 18:49 |
|
||
|
AccessXP+SQLserver2000
|
|||
|---|---|---|---|
|
#18+
это проблема именно Аксеса. (работы с внешними данными). "Создание индекса" создает не индекс в таблице SQL а некую параллельную структуру в аксесе (? точное расположение не знаю. гуру напомнят) и он уже пытается пользоваться ей, а не реальными индексами таблиц SQL. Поэтому если "задать" в качестве уникального "индекса " неуникальное значение, получишь заморочки. Если есть права на SQL - пополни таблицы PrimaryKey-ями, и не выеживайся. Если нет - попробуй отыскать действительно уникальную комбинацию полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 19:21 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32281753&tid=1679096]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 333ms |

| 0 / 0 |
