Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с ADO, Oracle --> Delphi 
V
    Опции темы
NetShadow
Дата 6.10.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди, уже неделю работаю с ADO не могу разобраться, проблема такая средствами Delphi делаем выборку из вьюшки одной базы, и вставляем в таблицу другой... smile За раннее всем спасибо
PM MAIL ICQ   Вверх
Rodman
Дата 6.10.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Чем делаешь выборку???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
NetShadow
Дата 6.10.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman Чем делаешь выборку???

Ну я так понял можно делать несколькими компонентами, код ниже:
Код

  ADOQuery1.Sql.Text:='select * from  epique_post_person';

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


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Код
ADOQuery1.Sql.Text:='insert into T1 (C1, C2) select C1, C2 from  epique_post_person';
ADOQuery1.ExecSQL;

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


Новичок



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

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



Mephisto писал...
Код

ADOQuery1.Sql.Text:='insert into T1 (C1, C2) select C1, C2 from  epique_post_person';
ADOQuery1.ExecSQL;


у меня два разных коннекта, одна база ADOConnection1 другая ADOConnection2

PM MAIL ICQ   Вверх
Rodman
Дата 6.10.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



допустим что  ADOQuery1  это ADOConnection1,  ADOQuery2 это ADOConnection2
Код

ADOQuery1.Sql.Text:='select * from  epique_post_person';
ADOQuery1.Open;
While not ADOQuery1.EOF do
begin
  ADOQuery2.Sql.Text:='insert into T1 (C1, C2, ...) VALUES ('+ADOQuery1.Fields[0].asstring+','+ADOQuery1.Fields[0].asstring+','+.....)';  
ADOQuery2.ExecSQL;
    ADOQuery1.next; 
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
NetShadow
Дата 6.10.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman писал...
допустим что  ADOQuery1  это ADOConnection1,  ADOQuery2 это ADOConnection2
Код

ADOQuery1.Sql.Text:='select * from  epique_post_person';
ADOQuery1.Open;
While not ADOQuery1.EOF do
begin
  ADOQuery2.Sql.Text:='insert into T1 (C1, C2, ...) VALUES ('+ADOQuery1.Fields[0].asstring+','+ADOQuery1.Fields[0].asstring+','+.....)';  
ADOQuery2.ExecSQL;
    ADOQuery1.next; 
end;


я правильно понимаю, что ADOQuery1.Fields[тут должно быть поле которое я вставляю?].asstring
PM MAIL ICQ   Вверх
Rodman
Дата 6.10.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Код

ADOQuery1.Sql.Text:='select * from  epique_post_person';
ADOQuery1.Open;
While not ADOQuery1.EOF do
begin
  ADOQuery2.Sql.Text:='insert into T1 (C1, C2, ...) VALUES ('+ADOQuery1.Fields[0].asstring+','+ADOQuery1.Fields[0].asstring+','+.....+')';  
ADOQuery2.ExecSQL;
    ADOQuery1.next; 
end;

ADOQuery1.Fields[тут должно быть поле которое я вставляю?].asstring  - это номер столбца, начиная с 0...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
NetShadow
Дата 6.10.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman, Mephisto спасибо за помощь, пришлось немного модернизировать запрос, т.к. MySql не хотел воспринимать вставляемые string записи без  кавычки '   smile 

Код

ADOQuery2.Sql.Text:='insert into tmp_person (surname) values ('+chr(39)+ADOQuery1.Fields[0].asstring+chr(39)+')';
ADOQuery2.ExecSQL;
ADOQuery1.Next;

PM MAIL ICQ   Вверх
Rodman
Дата 6.10.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Ну вот тебе еще подобный пример, ваяй...
Код

ADOQuery2.Sql.Text:='insert into tmp_person (name, surname) values (:PrmN, :PrmSN)';//двоеточие признак параметра
ADOQuery1.Sql.Text:='select * from  epique_post_person';
ADOQuery1.Open;
while not ADOQuery1.EOF do
begin
ADOQuery2.ParamByName('PrmN').Value:=ADOQuery1.Fields[1].Asstring;//ну номер филдов от фанаря
ADOQuery2.ParamByName('PrmSN').Value:=ADOQuery1.Fields[2].Asstring;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;


этот пример и MySQLи все остальные должны проглатывать...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
NetShadow
Дата 6.10.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rodman я так понимаю, что твой последний пример, для того, чтобы в одну строку не писать громоздкую конструкцию?

Это сообщение отредактировал(а) NetShadow - 12.10.2006, 11:58
PM MAIL ICQ   Вверх
Rodman
Дата 6.10.2006, 17:14 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Цитата(NetShadow @  6.10.2006,  16:04 Найти цитируемый пост)
громоздкую конструкцию?
 и это тоже, но он работает на любой СУБД.....

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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