TADOTable | MS Access | Master - details |
Помилка: "Аргументи мають невірний тип, виходять за межі допустимого діапазону або вступають в конфлікт один з одним"
Створена база даних в MS Access XP, що містить дві таблиці, одна заснована, одну секунду (Таблиця Відділи і таблиця Співробітники, основна і додаткова відповідно). Управління базою зробив за допомогою ADO в Delphi 7. Підключив базу через ADO Connection, створив DataSource, ADO Table і DBGrid для кожної таблиці. І при спробі встановити Master Source і MAster Fields (для того щоб в DBGrid додаткової таблиці переглядати співробітників тільки опереденного відділу) у додатковій таблиці видає вище написану помилку. В Access зв'язку не встановлював.
Може хто підкаже як з цим боротися? Заздалегідь дякую!
Відстежувати відповіді на це питання по RSS
Розумію, що тема стара, але відповім, так би мовити, для себе)
1. Назвати поля і таблиці в Access по-англійськи, звичайно, бажано, але не обов'язково.
2. Коли встановлюєте зв'язку MasterSource і MasterFields зробіть таблицю Active = false. Зв'язок буде створена, а так само автоматом заповниться властивість IndexFieldNames. Ось його то і треба обнулити і після цього тільки зробити таблицю Active = true. Тоді описана вище помилка не виникне.
>>> все таки Delphi за допомогою MasterSource і MasterFields створює зв'язку
Працювати то звичайно працює, але не так. Коли ви встановлюєте "зв'язку" в Delphi, це не впливає ніяк на тібліци, тому при бажанні можна внести некорректіние дані - Detail, що посилається на неіснуючий Master наприклад. Якщо ж Ви вкажете зв'язку в Access, то тим самим ГАРАНТОВАНО отримаєте коректні дані, так як за цим стежитиме тепер сам сервер.
Python, спасибо огромное за допомогу! Зробив все імена полів і таблиця англійською мовою і все запрацювало. Цікавий факт: все працює як зі створенням зв'язків в схемі даних Access, так і без створення зв'язків. Тобто виходить, що все таки Delphi за допомогою MasterSource і MasterFields створює зв'язку, а не Access.