Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Никак не могу найти пример работы с ADO 
:(
    Опции темы
Gunslinger
Дата 11.1.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В гугле нашел примеры только под vb, net и делфи. С базами никогда до этого не сталкивался. Где есть инфа по описанию, как работать с ADO? Какой день уже с ним морочаюсь.
Почитал здесь, оказывается, для чтения, записи, модификации нужно различные параметры прописывать.
из компоентов кинул: ADOConnection, ADOQuery
для примера база: отдельный дбф на пару полей id - автоинкрементное, name, fam - строковые.
нужно читать-писать-модифицировать, + возможность изменять путь к дбф (из меню в самой проге).
PM MAIL   Вверх
Rodman
Дата 11.1.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Лови пример...
Он тоже на делфи.. по сути все точки на стрелочки поменять надо...

а остальные методы описаны...

задавай вопросы по ним...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Данкинг
Дата 11.1.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  11.1.2009,  14:29 Найти цитируемый пост)
делфи

И в чём разница с Билдером? smile 

Цитата(Gunslinger @  11.1.2009,  14:29 Найти цитируемый пост)
писать-модифицировать

С dbf сиё возможно только запросами, т.е. AdoTable.Edit....AdoTable.Post не прокатит.


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


Опытный
**


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

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



Цитата(Rodman @  11.1.2009,  21:44 Найти цитируемый пост)
Лови пример...

поймал, но...
 
Цитата(Данкинг @  11.1.2009,  23:45 Найти цитируемый пост)
С dbf сиё возможно только запросами, т.е. AdoTable.Edit....AdoTable.Post не прокатит. 

мне друг как-то код набросал:
Код

  ADOQuery1->Insert();
   ADOQuery1NAME->Value="Серега"; 
  ADOQuery1FAM->Value="Иванов";
  ADOQuery1DATE->Value=StrToDateDef("d/m/y", Date());

только через драйвер джетовский под аксесс работал. Я сделал также, но под vfp-драйвер - не работает. 
Так каким образом можно с рботать с dbf?
PM MAIL   Вверх
Данкинг
Дата 12.1.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  12.1.2009,  09:55 Найти цитируемый пост)
Так каким образом можно с рботать с dbf? 

Я же говорю - запросами. Update, Insert.


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


Опытный
**


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

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



Цитата(Данкинг @  12.1.2009,  11:43 Найти цитируемый пост)
Я же говорю - запросами. Update, Insert

куда их писать? в свойство sql ADOQuery? Но я там написал селект на всю таблицу, чтобы в квери все поля добавить можно было. Для каждого запроса своя ADOQuery?

Это сообщение отредактировал(а) Gunslinger - 12.1.2009, 12:24
PM MAIL   Вверх
Данкинг
Дата 12.1.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  12.1.2009,  12:24 Найти цитируемый пост)
в свойство sql ADOQuery?

Угу.

Цитата(Gunslinger @  12.1.2009,  12:24 Найти цитируемый пост)
Но я там написал селект на всю таблицу, чтобы в квери все поля добавить можно было.

В данном случае удобнее было бы использовать AdoTable для отображения данных таблицы. А так - ну да, вторую кверю заюзай. smile Или же сначала добавь поля, а потом уже делай select...

Это сообщение отредактировал(а) Данкинг - 12.1.2009, 12:31


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


Опытный
**


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

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



Цитата(Данкинг @  12.1.2009,  12:30 Найти цитируемый пост)
Или же сначала добавь поля, а потом уже делай select...

если ты про Add all fields, то без зпаписи селекта в sql ADOConnection'а выводится сообщение об ошибки проперти sql... 
Ладно, буду на каждый запрос свою квери делать со своей sql. Тогда:
1. В чем разница, если писать запрос в проперть или в коде, как у Rodman'a? Ты говорил, что с dbf'ами нужно запросами. Получается, такое разнообразие потому, что ADO - компонент для работы с различными бд, из-за его универсальности?
2. Как в sql-коде указать переменную программы, которую нужно записать?
PM MAIL   Вверх
Данкинг
Дата 12.1.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  12.1.2009,  13:09 Найти цитируемый пост)
1. В чем разница, если писать запрос в проперть или в коде, как у Rodman'a? 

А как там у него? Пример качать неохота. smile В любом случае, в .sql.text пишется запрос, а как ещё-то можно.

Цитата(Gunslinger @  12.1.2009,  13:09 Найти цитируемый пост)
Как в sql-коде указать переменную программы, которую нужно записать? 

Через параметры логичней всего.

Код

AdoQuery.Close;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add('insert into TABLE values(:par1, :par2)');
AdoQuery.Parameters.ParamByName('par1').Value:='aaaa';
AdoQuery.Parameters.ParamByName('par2').Value:='bbbb';


Это сообщение отредактировал(а) Данкинг - 12.1.2009, 23:06


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


Опытный
**


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

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



Цитата(Данкинг @  12.1.2009,  23:05 Найти цитируемый пост)
Через параметры логичней всего.

AdoQuery.Close;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add('insert into TABLE values(:par1, :par2)');
AdoQuery.Parameters.ParamByName('par1').Value:='aaaa';
AdoQuery.Parameters.ParamByName('par2').Value:='bbbb';


Вот, такой код у него. 
Попробовал - в таблицу ничего не добавляется:
Код

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("insert into MAIN values(:Name, :Fam)");
ADOQuery1->Parameters->ParamByName("Name")->Value="aaaa";
ADOQuery1->Parameters->ParamByName("Fam")->Value="bbbb";

Таблица Main.dbf; 
Поля: id (автоинк), Name (чар), Fam(чар).
Компоненты: ADOConnection (тест подключения проходит), ADOQuery (в проперти параметры видт названия полей; проперть SQL пустая).
Смотрю через фокс.

--------------
в проперти параметров квери названия полей пропали. можно добавить только цифры: 0, 1,2, ...

Это сообщение отредактировал(а) Gunslinger - 13.1.2009, 11:33
PM MAIL   Вверх
Данкинг
Дата 14.1.2009, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  13.1.2009,  11:27 Найти цитируемый пост)
Попробовал - в таблицу ничего не добавляется:

А ADOQuery1->ExecSQL сделал, надеюсь?


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


Опытный
**


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

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



Цитата(Данкинг @  14.1.2009,  01:07 Найти цитируемый пост)
А ADOQuery1->ExecSQL сделал, надеюсь?

Неаsmile По поиску смотрел - была тема, где эта команда проскакивала. Но я тогда прогнал. Сейчас:
Код

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("insert into MAIN values(:Name, :Fam)");
ADOQuery1->Parameters->ParamByName("Name")->Value="aaaa";
ADOQuery1->Parameters->ParamByName("Fam")->Value="bbbb";
ADOQuery1->ExecSQL

В проперти параметерс квери создал две переменные с именами Name и Fam - те поля таблицы, куда запись будет. Первый раз строка добавилась, на второй раз вылезла ошибка: Неправильно определен объект Parameter. Предоставлены несовместимые типы или неполные сведения. 



Это сообщение отредактировал(а) Gunslinger - 14.1.2009, 09:38
PM MAIL   Вверх
Данкинг
Дата 14.1.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  14.1.2009,  09:36 Найти цитируемый пост)
В проперти параметерс квери создал две переменные с именами Name и Fam - те поля таблицы, куда запись будет.

А зачем в проперти смамой квери что-то писать? Достаточно параметры указать в самом коде, т.е. как в примере.


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


Опытный
**


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

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



Цитата(Данкинг @  14.1.2009,  11:47 Найти цитируемый пост)
А зачем в проперти смамой квери что-то писать?

он такую ошибку выдавал - вот я и написал. Сейчас в проперти все стер - все равно такую ошибку пишет. Подсвечивает синим закрывающую скобку обработика нажатия кнопки, куда поместл код - как раз за ADOQuery1->ExecSQL();
PM MAIL   Вверх
Данкинг
Дата 14.1.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Gunslinger @  14.1.2009,  12:26 Найти цитируемый пост)
Сейчас в проперти все стер - все равно такую ошибку пишет. 

Не знаю тогда, я всё так же пишу, и работает. Попробуй на самом фоксе те же данные ввести.


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

Запрещается!

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

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

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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