-
Доброго дня! У кого есть пример кода Дельфи для подключения к Сибл через СОМ, дайте плиз, месяц мучаюсь, неполучается ничего :(
-
ответов нет
-
И не будет, пока ты не продемонстрируешь это самое "ничего", которое у тебя не получается.
-
тут сложно будет разобраться тем кто сибл незнает, а кто знает прошу лишь код подключения к серваку. начало пишу так, хотя можт и ошибаюсь SiebelDataControl1.Login('C:\sea752\client\BIN\ENU\FINS.cfg, serverdatasrc', 'sadmin', 'sadmin');
-
SiebelDataControl - это что, компонент-раппер COM-контроллера Сибл-сервера ? А где вызов метода Connect ? Или у тебя AutoConnect = True ? Тогда чему равно ConnectKind ?
-
> SiebelDataControl - это что, компонент-раппер COM-контроллера > Сибл-сервера ?
Да это так > А где вызов метода Connect ?
Вот я и незнаю когда вызывать коннект, и какие еще процедуры нужно еще вызвать. Есть пример кода на VB, но я в нем не силен, и не смогу перевести на Дельфи private void CreateConact()
{
SiebApp App = new SiebApp("d:\\sea752test\\client\\bin\\ENU\\finstst9.cfg, serverdatasrc", "sadmin", "admin");
using (SiebBusObj ContactBO = App.GetBusObj("Contact"))
{
using (SiebBusComp ContactBC = ContactBO.GetSiebelBusComp("Contact"))
{
ContactBC.ViewMode = ViewMode.AllView;
ContactBC.ActivateField("First Name", "Last Name", "Middle Name");
ContactBC.NewRecord();
ContactBC["First Name"] = String.Format("ТЕТТТТТТТТТТ");
ContactBC["Last Name"] = String.Format("ТЕТТТТТТТТТТ");
ContactBC["Middle Name"] = String.Format("ТЕТТТТТТТТТТ");
ContactBC.WriteRecord();
Компоненты импортированные из библиотеки в дельфи: TSiebelBusComp, TSiebelBusObject, TSiebelService, TSiebelPropertySet, TSiebelDataControl.
-
> я и незнаю когда вызывать коннект
Коннект - это первое, что ты должен сделать.
-
тогда я попробовал сделать так, анологично коду VB:
procedure TForm3.Button1Click(Sender: TObject);
var
ContactBO: ISiebelBusObject;
ContactBc: ISiebelBusComp;
begin
SiebelDataControl1.Connect;
SiebelDataControl1.Login('C:\sea752\client\BIN\ENU\FINS.cfg, serverdatasrc', 'sadmin', 'sa22092003');
contactBO:=SiebelDataControl1.GetBusObject('Contact') ;
ContactBc:=SiebelBusObject1.GetBusComp('Contact');
end;
но на строчке ContactBc:=SiebelBusObject1.GetBusComp('Contact'); выходит ошибка Требуемый класс отсутствует в ClassFactory, ClassID: {1E2DB324-15C4-11D2-9BCD-00805F49F976}.
-
> ContactBc:=SiebelBusObject1.GetBusComp('Contact'); >
Судя по VB-примеру должно быть так:
ContactBC := ContactBO.GetSiebelBusComp('Contact');
-
Да, вы правы только вот так ContactBC := ContactBO.GetBusComp('Contact'); но теперь аксесс виолейшн выходит. Видимо что то нужно еще проинициализировать
-
Почему GetBusComp-то ? В оригиральном VB-примере я вижу именно Get SiebelBusComp, а не GetBusComp .. > теперь аксесс виолейшн выходит
Значит в результате выполнения строчки contactBO:=SiebelDataControl1.GetBusObject('Contact'); переменная ContactBO не была инициализирована корректной ссылкой на объект
-
> Почему GetBusComp-то ?В оригиральном VB-примере я вижу именно > GetSiebelBusComp, а не GetBusComp ..
Видимо в дельфи Проперти импортировался именно так, так как на GetSiebelBusComp ругается Андекреаред индефинэр. > Значит в результате выполнения строчкиcontactBO:=SiebelDataControl1. > GetBusObject('Contact');переменная ContactBO не была инициализирована > корректной ссылкой на объект
Как же ее инициализировать?
-
> в дельфи Проперти импортировался именно так
Это не "Проперти", а метод. > Как же ее инициализировать?
Я не знаю логики работы метода GetBusObject, тебе она виднее, коль ты взялся за Сибл. Предполагаю лишь, что если метод GetBusObject не вызвал исключения, то он вернул nil , означающий несуществование или невозможность получения доступа к BusObject'у с именем 'Contact'.
|