Createoleobject('access.application')

Тема в разделе "Delphi - Базы данных", создана пользователем Dixich, 1 июл 2009.

  1. Dixich

    Dixich Гость

    {Мне очень понравился способ для юзания Экселя, есть ли такой же способ для Аксеса? Использовать лицензионный офис на работе не проблема, версия 2007. Вот пример как я работал с экселем и как бы хотел чтобы выглядел в аксесе:}

    E:=CreateOleObject('Excel.Application');
    if not OpenDialog1.Execute then exit;
    E.WorkBooks.Open(OpenDialog1.FileName);
    Sheets:=Form1.E.ActiveWorkBook.Sheets;
    sheet:=sheets.item[1].Activate;

    //Теперь для считывания нужной ячейки или записи в нее мона использовать:
    b:=E.ActiveWorkBook.ActiveSheet.Cells[1,1].Text;
    E.ActiveWorkBook.ActiveSheet.Cells[2,2]:=b;

    //Так вот я хочу узнать функции для считывания полей в БД, БД состоит из нескольких табличек, пока что наваял такое:
    Access:=CreateOleObject('Access.Application');
    if not OpenDialog1.Execute then exit;
    Access.OpenCurrentDatabase(OpenDialog1.FileName,True);
    Access.Visible:=true;
    Access.DoCmd.OpenTable('Таблица 1');

    //Что позволяет открыть нужный файл и нужную табличку... Единственное что мне нужно считать инфу со всех табличек в какой нить массив, все.
     
  2. etc

    etc Гость

    Чужую базу вскрываем?
     
  3. Dixich

    Dixich Гость

    А что, похоже? ;) Нет конечно, просто нужно сделать операции с данными, взять их с 3 файлов (1 в аксесе и 2 в экселе). После всего я их выброшу просто куда нить аля эксель и все. Если бы была чужая база данных и в ней что то хранилось важное она была бы запаролена... А если пасс до 12 символов и не только цифры то моя машинка подбирала пароль наверно, хм, столько наша планета наверно не существует. Так что это бессмысленно :blink: А переводить всю ту байду в аксесе в эксель мона и стандартными функциями аксеса, но проблема то в том что база все время обновляется, а пересаживать девочек за эксель нет возможности...
     
  4. etc

    etc Гость

    А иначе зачем с ней работать через зад, если есть прямые дороги? ;)
     
  5. Dixich

    Dixich Гость

    Может это и зад, но он мне понятен))) если есть другие варианты и Вы можете написать их реализацию то милости просим :blink: Сколько талмутов не смотрел столько воды просто ппц, нет четкого списка функций и чего они делают...
     
  6. etc

    etc Гость

    Нафик я еще буду писать, то что уже сто лет как написано.
    Аксес это субд, и работать с ней надо как с субд, в помощь вам АДО, родная технология аксеса.
    Там не только талмуды, там даже в демосах куча примеров лежит.
     
  7. Dixich

    Dixich Гость

    Замечательно, может тогда дадите ссылку почитать на то что действительно поможет?
     
  8. etc

    etc Гость

    Какую ссылку?
    У вас delphi есть? {Delphi}\Demos каталог присутствует? Там есть подкаталог Ado, так вот в нем много много разных примеров как работать с базами по технологии ADO, с картинками.
     
  9. Dixich

    Dixich Гость

    Мдя, может мой способ был и через задницу, но по нему не приходилось лапатить инфу... Все равно спасибо
     
  10. etc

    etc Гость

    Программироование, оно ваще фиговое занятие, тут и читать надо и лапатить инфу ... короче, блин работать приходиться.
    Полный беспредел ... бросайте вы это, оно не для вас.
     
  11. Titan

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    'Весомый' аргумент чтобы не делать как надо :wacko:

    Главное, что человек похоже все-таки разобрался с ADO. Это главное ;)
     
  12. Dixich

    Dixich Гость

    Пока еще нет, времени мало, работа... но видимо придется над этим посидеть :) Вызвался на свою голову улучшить работу бухгалтерии))) ну ниче, тут рядом с работой есть неплохой книжный магазинчик, найду что нибудь. Не люблю в электронке книги ;)
     
  13. etc

    etc Гость

    Dixich Еще прикол, с екселем тоже можно через адо работать. :wacko: правда для этого тоже надо лапатить.
     
  14. Dixich

    Dixich Гость

    Вот наконец нашел время все это лопатить. Нашел маленькую книжку, но чет с базами тут туговато. К примеру для каждой таблички в базе нужно создавать отдельные компоненты DataSource и ADOTable, выбирать там нужную табличку и все в поряде. Если таблиц 2-3 это не так уж печально, но что делать если таблиц штук 20? И причем периодично могут добавляться новые таблицы? Постоянно добавлять новые компоненты? Бред.

    Есть какой нить хороший человек который в аське может объяснить интересующие вопросы?
     
  15. etc

    etc Гость

    Яж вам говорил, что программирование не ваше, кидайте.
    В реальных проектах таблиц может быть в разы больше, т.е. не 20 (это мелоч) а 200 и более. И таких соурсов получается еще больше, т.к. соурсы в общем случае <> табица, это может быть и пол таблицы, и 1 поле из таблицы. и даже вовсе не таблица.
     
  16. Dixich

    Dixich Гость

    Хоть убей не помню, а работу кидать грусно. Я любитель долбится головой об стену.
    К чему пришел:
    Код (Text):
    ADOTable1 := TADOTable.Create(Self);
    with ADOTable1 do
    begin
    ConnectionString :=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\base.mdb;'+
    'Persist Security Info=False';
    TableName := 'Azov';
    Open;
    while not Eof do
    begin
    FieldByName('Наименование').AsString;
    Next;
    end;
    Close;
    Free
    end;
    Так уже приятней. Но вернулся к тому что нужно все равно указывать имена таблиц...
     
  17. etc

    etc Гость

    Этого и не требуется, можно просто посмотреть на пред. посты.

    Ваш код на твердый минус КОЛ.

    А как иначе? астрально если только ... ну да это не на этом форуме, вам туда где всякие ведьмы, они через астрал умеют.
     
  18. Dixich

    Dixich Гость

    И чем я вызвал такую неприязнь? Я прошу помощи, если бы я хотел чтобы меня оскорбляли я так бы и написал. Не стыдно? Бывает. Что касается кода, он работает и работает довольно шустро. Я делаю первые шаги в этом направлении и вполне очевидно что будут ошибки. На счет как иначе, к примеру при работе с Эксель таблицами не нужно было знать название страниц в книге, есть счетчик количества страниц и у каждой страницы свой номер 1..n, соответственно открытие нужных страниц можно написать в цикле. Вернуть имя текущей страницы тоже ничего не стоит. Я предположил что для Access в языке есть нечто подобное. Если у меня нет знаний по БД это еще не значит что я туп как пень. Плох тот кто ничего не знает и не стремится узнать, а не тот кто не знает и СТРЕМИТСЯ узнать. Я всегда предполагал что форумы по программированию созданы именно для того, чтобы делится информацией. Если на форуме отправляют читать книги, посылают куда подальше и оскорбляют, нафиг они тогда вообще нужны? Мазохистам?
    Очень рад оказанной тут помощи!
     
  19. etc

    etc Гость

    Вот именно, а вот вы пока ничего не знаете а уже бредом нарекли ... так у кого к кому неприязнь?
    вам уже сказали почитать про адо и даже указали где есть примеры, еще могу порекомендовать почитать ксавье и пачеку (такие авторы), они достаточно хорошо про базы написали.

    вы же хотите не шевеля пальцами чтобы усе заработало ....
     
  20. etc

    etc Гость

    Скажите что это:
    while not Eof do begin FieldByName('Наименование').AsString; Next; end;
    зачем оно, для чего тут написано итд?
    "Работает" оно может и быстро, только бестолково, положительной работы = 0 целых 0 десятых.
     

Поделиться этой страницей