Createoleobject('access.application')

  • Автор темы Dixich
  • Дата начала
D

Dixich

#1
{Мне очень понравился способ для юзания Экселя, есть ли такой же способ для Аксеса? Использовать лицензионный офис на работе не проблема, версия 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');

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

Dixich

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

Dixich

#5
А иначе зачем с ней работать через зад, если есть прямые дороги? ;)
Может это и зад, но он мне понятен))) если есть другие варианты и Вы можете написать их реализацию то милости просим :blink: Сколько талмутов не смотрел столько воды просто ппц, нет четкого списка функций и чего они делают...
 
E
#6
Нафик я еще буду писать, то что уже сто лет как написано.
Аксес это субд, и работать с ней надо как с субд, в помощь вам АДО, родная технология аксеса.
Там не только талмуды, там даже в демосах куча примеров лежит.
 
D

Dixich

#7
Нафик я еще буду писать, то что уже сто лет как написано.
Аксес это субд, и работать с ней надо как с субд, в помощь вам АДО, родная технология аксеса.
Там не только талмуды, там даже в демосах куча примеров лежит.
Замечательно, может тогда дадите ссылку почитать на то что действительно поможет?
 
E
#8
Какую ссылку?
У вас delphi есть? {Delphi}\Demos каталог присутствует? Там есть подкаталог Ado, так вот в нем много много разных примеров как работать с базами по технологии ADO, с картинками.
 
D

Dixich

#9
Какую ссылку?
У вас delphi есть? {Delphi}\Demos каталог присутствует? Там есть подкаталог Ado, так вот в нем много много разных примеров как работать с базами по технологии ADO, с картинками.
Мдя, может мой способ был и через задницу, но по нему не приходилось лапатить инфу... Все равно спасибо
 
E
#10
но по нему не приходилось лапатить инфу...
Программироование, оно ваще фиговое занятие, тут и читать надо и лапатить инфу ... короче, блин работать приходиться.
Полный беспредел ... бросайте вы это, оно не для вас.
 

Titan

Well-known member
10.06.2004
105
0
#11
Мдя, может мой способ был и через задницу, но по нему не приходилось лапатить инфу.
'Весомый' аргумент чтобы не делать как надо :wacko:

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

Dixich

#12
Главное, что человек похоже все-таки разобрался с ADO. Это главное :)
Пока еще нет, времени мало, работа... но видимо придется над этим посидеть :) Вызвался на свою голову улучшить работу бухгалтерии))) ну ниче, тут рядом с работой есть неплохой книжный магазинчик, найду что нибудь. Не люблю в электронке книги ;)
 
E
#13
Dixich Еще прикол, с екселем тоже можно через адо работать. :wacko: правда для этого тоже надо лапатить.
 
D

Dixich

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

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

Dixich

#16
Яж вам говорил, что программирование не ваше, кидайте.
Хоть убей не помню, а работу кидать грусно. Я любитель долбится головой об стену.
К чему пришел:
Код:
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;
Так уже приятней. Но вернулся к тому что нужно все равно указывать имена таблиц...
 
E
#17
Этого и не требуется, можно просто посмотреть на пред. посты.

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

Но вернулся к тому что нужно все равно указывать имена таблиц...
А как иначе? астрально если только ... ну да это не на этом форуме, вам туда где всякие ведьмы, они через астрал умеют.
 
D

Dixich

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

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