![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка с функцией 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), обрати внимание что их во втором вдвое больше чем в первом (на вторую таблицу тоже, ведь форейн связь идет по двум таблицам), а ты их вместо увеличения совсем выкинул...