Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Начинаю работать с ADO 
:(
    Опции темы
Sliva
Дата 7.2.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Добрый день! Я пробую работать с компонентами вкладки ADO для бд Access. 
Скажите пожалуйста, с чего начать? С чем связывать DBGrid и TDataSet и что прописывать в ADOConnection?
 smile 
До этого я использовала компоненты TQuery, TTable. В чем отличие? 
PM   Вверх
Rodman
Дата 7.2.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



разбери. а если че то не понятно - спрашивай
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Savek
Дата 7.2.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



Если нет литературы, посмотри хотя бы что в гугле есть справка ADO
PM MAIL   Вверх
Exai1e
Дата 7.2.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Цитата

Работаете с базами данных? Забыли как правильно прописать connection string к вашей базе?
Специальный сайт-справочник-шпаргалка созданный как раз для такого случая:
http://www.connectionstrings.com/

© Delphilab.ru


Это сообщение отредактировал(а) Exai1e - 7.2.2008, 20:57


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Данкинг
Дата 7.2.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Код

procedure TForm1.FormCreate(Sender: TObject);
var p,pp:string;
 
begin
p:=extractfilepath(application.ExeName)+'\sidi.mdb';
pp:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+p+';Persist Security Info=False';
conn.ConnectionString:=pp;
conn.Connected:=true;
ado1.TableName :='spisok';
ado2.TableName :='infa';
ado3.TableName :='disks';
ado1.Active:=true;
ado2.Active:=true;
ado3.Active:=true;
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
belousov
Дата 7.2.2008, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: нет
Всего: 6



а еще можно создать к проекту файл типа DataModule и все эти блоки таблиц и запросов поместить туда, так значительно удобнее


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
Sliva
Дата 8.2.2008, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



 smile  smile  smile 
На самом деле мне надо по-хорошему в одной программе работать с двумя БД. Одна - Sybase, другая - Access. Из Sybase данные беру и ими надо заполнить таблички в Access. Сначала хотела делать через ADO. Но мне кажется, можно как-то попрще сделать. 
Есть компоненты, которые связывают 2 БД?  smile 
PM   Вверх
Sliva
Дата 10.2.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



 smile 
Какие компоненты мне надо использвать? Подскажите, пожалуйста
PM   Вверх
Данкинг
Дата 10.2.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Куда уж проще, чем ADO?  smile 
Для открытия двух баз нужно два tAdoConnection. Ну и две (как минимум) tAdoTable.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sliva
Дата 11.2.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Данкинг
Я последовала вашему совету. Все подсоединила, все замечательно. На кнопку поставила 
событие:
Код

DBGrid.DataSet:=DataSet_Access;
ADOTable_Access.Active:=true;

(изначально стояло):
Код

DBGrid.DataSet:=DataSet_Sybase;
ADOTable_Sybase.Active:=true;


А как организовать доступ к извлечению данных из Sybase в Access? 
Я хочу извлекать данные из Sybase и тут же их вставлять в Access, но не знаю как это делать  smile 

PM   Вверх
Данкинг
Дата 11.2.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Конкретно про Sybase ничего сказать не могу, ибо ни разу с ней не работал, но суть в том, что если через ADO подключаешься к какой бы то ни было БД, то остальная работа уже стандартна, т.е.:

Код

ado1.fieldvalues['pole1']:=ado2.fieldvalues['pole2'];



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sliva
Дата 11.2.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Данкинг
Надо же как-то цикл организовать? Это в данной ситуации можно сделать вот так:
Код

 ADOQuery.First;
  while not ADOQuery.Eof do
  begin
    .....
     ADOQuery.Next;
  end;


?????

Уточнить  smile 

Код

ado1.fieldvalues['pole1']:=ado2.fieldvalues['pole2'];

В ['pole1'] должно быть имя столбца таблицы Access или поле, которое я сама назвала в ADOTable?

Это сообщение отредактировал(а) Sliva - 11.2.2008, 11:52
PM   Вверх
Данкинг
Дата 11.2.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Sliva @ 11.2.2008,  11:41)
В ['pole1'] должно быть имя столбца таблицы Access или поле, которое я сама назвала в ADOTable?

А это не одно и то же? smile Название поля - так, как оно называется в исходной таблице, т.е. в данном случае в Access у тебя есть поле, тоже названное pole1.

А проход по датасету я делаю обычно при помощи for, но и так нормально, конечно.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sliva
Дата 11.2.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Данкинг
Код

ADOQuery.First;
  while not ADOQuery.Eof do
  begin
   ADO_Ac.FieldValues['period_id']:=ADO_Sy.FieldValues['num'];
   ADO_Ac.FieldValues['date_beg']:=ADO_Sy.FieldValues['begdate'];
    ADO_Sy.FieldValues['empl_id']:=ADO_Ac.FieldValues['num'];
     ADOQuery.Next;
  end;

а ошибка такая:
  dataset not edit or insert mod
В цикле надо заполнять insert'ом поля таблицы Access  smile 
а тут присваивание
PM   Вверх
Данкинг
Дата 11.2.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Sliva @ 11.2.2008,  12:38)
  dataset not edit or insert mod

Ну да, разумеется. Перед добавлением данным делаем:

Код

ado.append;


(именно для добавления новой записи). А для изменения уже существующей пишем:

Код

ado.edit;


(перед этим встав на нужную строку таблицы). В конце же (как после append, так и после edit) для внесения изменений в таблицу пишем:

Код

ado.post;


Только зачем ты в запросе меняешь данные? Может быть, так тоже будет работать, но я всегда меняю в самой таблице (т.е. tAdoTable), а не в запросе.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1095 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.