Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка с функцией OpenSchema [D5, Access]


Iova ©   (2004-12-16 18:54:00) 

Помогите пожалуйста мастера научиться пользоваться данную функцию
  form1.ADOConnection1.OpenSchema(siForeignKeys,EmptyParam,EmptyParam,AdoDataSet1);
моя почему-то не работает и выдает ошибку "Access violation".

PS:В одной статье этупроблему решали следующим образом:

ADOConnection1.OpenSchema(siPrimaryKey, VarArrayOf(Null, Null, ['mytable']), EmptyParam, ADODataSet(ADOTable1));

но мне нужно не siPrimaryKey, а siForeignKeys по всем таблицам.


Iova   (2004-12-17 09:43:00) [1]

На счет большего количества параметров я понял:
 form1.ADOConnection1.OpenSchema(siForeignKeys,VarArrayOf([Null, Null, Null, Null, Null, s1]),EmptyParam,AdoDataSet1);
Но все таки можно ли использовать s1:String?


Iova   (2004-12-17 09:23:00) [2]

Я только что попробовал
 
s1:=Table_Name_;
form1.ADOConnection1.OpenSchema(siForeignKeys,VarArrayOf([Null, Null, s1]),EmptyParam,AdoDataSet1);

Ошибка все равно возникает.
Можно ли было записатьв таком виде присваивая величину типа String?

А нельзя ли вообще обойтись без ограничений?


sniknik   (2004-12-17 08:55:00) [3]

ну если написано то тогда наверное.
про siProviderSpecific (3й параметр - SchemaID) разговора нет (или его имел в виду под siForeignKeys?), ты второе поле "обрубил" а там в данном случае должен быть вариантный масив с 6-ю параметрами (в 2 раза больше чем при siPrimaryKey).


Iova   (2004-12-17 08:40:00) [4]

В хелпе по делфи написано, что 3-е поле должно заполнятся когда Schema = siProviderSpecific.
Или я ошибаюсь?


sniknik   (2004-12-16 21:17:00) [5]

это не проблема и не решение (просто вызов функции, что в этом проблемного?)

а "Access violation" выдает потому что используеш какойто несозданный/уничтоженный обьект... (видимо статью не сначала читал, а вырвал только с конца "нужное" как показалось, да не все)

по параметрам процедуры, они и в статье какието "странные"
(ну зачем скажите тип приводить разве нормальный датасет взять нельзя? понятно если бы по месту в коде, но для статьи... странновато,
вариантный массив тоже, понятно былобы если так
VarArrayOf([Null, Null, 'mytable'])
или  так
VarArrayOf([Null, Null, '[mytable]'])
но приведенное странно)
но да ладно не будем обсуждать (просто сомнения что это даже компилируется не то что работает, а значит автор не даже пробовал...)

> но мне нужно не siPrimaryKey, а siForeignKeys по всем таблицам.
ну так и бери что нужно, только с параметрами разберись (в Restrictions), обрати внимание что их во втором вдвое больше чем в первом (на вторую таблицу тоже, ведь форейн связь идет по двум таблицам), а ты их вместо увеличения совсем выкинул...


Наверх

Титульная страница Поиск, карта сайта Написать письмо