Конференция "Corba" » Подключится к Siebel через COM [Delphi, Windows]
 
  • Программер (11.12.08 07:08) [0]
    Доброго дня!
    У кого есть пример кода Дельфи для подключения к Сибл через СОМ, дайте плиз, месяц мучаюсь, неполучается ничего :(
  • Программер (12.12.08 12:37) [1]
    ответов нет
  • Сергей М. © (12.12.08 12:40) [2]
    И не будет, пока ты не продемонстрируешь это самое "ничего", которое у тебя не получается.
  • Программер (12.12.08 12:45) [3]
    тут сложно будет разобраться тем кто сибл незнает, а кто знает прошу лишь код подключения к серваку.
    начало пишу так, хотя можт и ошибаюсь
    SiebelDataControl1.Login('C:\sea752\client\BIN\ENU\FINS.cfg, serverdatasrc', 'sadmin', 'sadmin');
  • Сергей М. © (12.12.08 13:56) [4]
    SiebelDataControl - это что, компонент-раппер COM-контроллера Сибл-сервера ?
    А где вызов метода Connect ?
    Или у тебя AutoConnect = True ?
    Тогда чему равно ConnectKind ?
  • Программер (15.12.08 06:52) [5]

    > 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");//, "BTA Unwanted Borrower Category",
                       //"BTA Unwanted Borrower Source", "BTA Unwanted Borrower UPK Information");

                           ContactBC.NewRecord();
                           ContactBC["First Name"] = String.Format("ТЕТТТТТТТТТТ");
                           ContactBC["Last Name"] = String.Format("ТЕТТТТТТТТТТ");
                           ContactBC["Middle Name"] = String.Format("ТЕТТТТТТТТТТ");
                           ContactBC.WriteRecord();



    Компоненты импортированные из библиотеки в дельфи: TSiebelBusComp, TSiebelBusObject, TSiebelService, TSiebelPropertySet, TSiebelDataControl.
  • Сергей М. © (15.12.08 08:30) [6]

    > я и незнаю когда вызывать коннект


    Коннект - это первое, что ты должен сделать.
  • Программер (15.12.08 08:52) [7]
    тогда я попробовал сделать так, анологично коду 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}.
  • Сергей М. © (15.12.08 09:00) [8]

    > ContactBc:=SiebelBusObject1.GetBusComp('Contact');
    >


    Судя по VB-примеру должно быть так:

    ContactBC := ContactBO.GetSiebelBusComp('Contact');
  • Программер (15.12.08 09:20) [9]
    Да, вы правы только вот так ContactBC := ContactBO.GetBusComp('Contact');
    но теперь аксесс виолейшн выходит.
    Видимо что то нужно еще проинициализировать
  • Сергей М. © (15.12.08 09:30) [10]
    Почему GetBusComp-то ?
    В оригиральном VB-примере я вижу именно GetSiebelBusComp, а не GetBusComp ..


    > теперь аксесс виолейшн выходит


    Значит в результате выполнения строчки

    contactBO:=SiebelDataControl1.GetBusObject('Contact');



    переменная ContactBO не была инициализирована корректной ссылкой на объект
  • Программер (15.12.08 11:18) [11]

    > Почему GetBusComp-то ?В оригиральном VB-примере я вижу именно
    > GetSiebelBusComp, а не GetBusComp ..

    Видимо в дельфи Проперти импортировался именно так, так как на GetSiebelBusComp ругается Андекреаред индефинэр.
    > Значит в результате выполнения строчкиcontactBO:=SiebelDataControl1.
    > GetBusObject('Contact');переменная ContactBO не была инициализирована
    > корректной ссылкой на объект

    Как же ее инициализировать?
  • Сергей М. © (15.12.08 11:36) [12]

    > в дельфи Проперти импортировался именно так


    Это не "Проперти", а метод.


    > Как же ее инициализировать?


    Я не знаю логики работы метода GetBusObject, тебе она виднее, коль ты взялся за Сибл.
    Предполагаю лишь, что если метод GetBusObject не вызвал исключения, то он вернул
    nil

    , означающий несуществование или невозможность получения доступа к BusObject'у с именем 'Contact'.
 
Конференция "Corba" » Подключится к Siebel через COM [Delphi, Windows]
Есть новые Нет новых   [134430   +3][b:0][p:0.003]