Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 08:57   #1
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию Access + Delphi работа с таблицами

Задавствуйте!
У меня вот такой вопрос.

На Access пять таблиц.
Таблица_1
Таблица_2
Таблица_3
Таблица_4
Таблица_5

На делфи 2009 :
DBListBox , DBGrid соеденил ADOConnection , ADOTable и DataSource к базе Access baza.mdb

в DBListBox отображаются все пять таблиц
в DBGrid отображается содержимое выбранной таблици
в ComboBox названия таблиц Таблица_1, Таблица_2 и так далее

Вопрос
Кат перенести написанное из Таблица_1 к примеру в Таблица_2 или наоборот с помошью ComboBox
Dotha вне форума Ответить с цитированием
Старый 26.10.2009, 09:12   #2
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

что значит?
Цитата:
Кат перенести написанное из Таблица_1 к примеру в Таблица_2 или наоборот с помошью ComboBox
Какая структура таблиц?
S@fer вне форума Ответить с цитированием
Старый 26.10.2009, 09:26   #3
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Во всех таблицах одна и та же структура (имя, фамилия)
В Таблица_1 (имя - Вася, фамилия - Петров)
В Таблица_2 пока пусто но структура таже (имя, фамилия)
Надо из Таблица_1 (имя - Вася, фамилия - Петров) перенести в Таблица_2.
Что бы (имя - Вася, фамилия - Петров) переместилось из Таблица_1 в Таблица_2

Таблица_1 и Таблица_2 это названия таблиц в бд Access

Последний раз редактировалось Stilet; 26.10.2009 в 09:33.
Dotha вне форума Ответить с цитированием
Старый 26.10.2009, 09:39   #4
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Один из способов: закинь на форму еще лдин ADOTable. свяжи его с таблица_2
затем если нужно перенести все записи, то перебираешь в цикле все записи Таблица_1
Код:
AdoTable1.first
While Not AdoTable1.eof do
begin
  AdoTable2.Insert;
  AdoTable2.Edit;
  AdoTable2.Fields[0].AsString:=AdoTable1.Fields[0].AsString;
  AdoTable2.Fields[1].AsString:=AdoTable1.Fields[1].AsString;
  AdoTable2.Append;
  AdoTable1.next
end;
S@fer вне форума Ответить с цитированием
Старый 26.10.2009, 15:35   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

а разве запросом нельзя...
что то типо insert into table2 (имя, фамилия) values (select имя, фамилия from table1)
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 26.10.2009, 18:43   #6
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Можно и запросом. Вариантов много. ТС должен выбрать для своей задачи наиболее оптимальный вариант.
S@fer вне форума Ответить с цитированием
Старый 27.10.2009, 09:33   #7
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
а разве запросом нельзя...
что то типо insert into table2 (имя, фамилия) values (select имя, фамилия from table1)
а можно по подробнее а то я в программировании не силен
Dotha вне форума Ответить с цитированием
Старый 27.10.2009, 09:56   #8
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

да это не программирование это sql

Я написал готовый запрос , подставляй значения и будет вам перенос из таблицы 1 в таблицу 2.

что то типо
Код:
adoQuery.sql.text:='insert into table2 (имя, фамилия) values (select имя, фамилия from table1)';
adoQuery.execSql;
советую почитать про
Код:
insert into
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 27.10.2009, 11:50   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
что то типо
Код:
adoQuery.sql.text:='insert into table2 (имя, фамилия) values (select имя, фамилия from table1)';
adoQuery.execSql;
скорее что-то типа
Код:
adoQuery.sql.text:='insert into table2 (имя, фамилия) select имя, фамилия from table1';
adoQuery.execSql;
soleil@mmc вне форума Ответить с цитированием
Старый 29.10.2009, 07:28   #10
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

я сделал так:

Код:
procedure TForm1.N1Click(Sender: TObject);
var
s1,s2,s3,s4:string;
begin
  s1 := ADOTable1.Fields.Fields[1].AsString;
  s2 := ADOTable1.Fields.Fields[2].AsString;
  s3 := ADOTable1.Fields.Fields[3].AsString;
  s4 := ADOTable1.Fields.Fields[4].AsString;
ADOTable2.Insert;
ADOTable2.FieldByName('Имя').AsString := s1;
ADOTable2.FieldByName('Фамилия').AsString := s2;
ADOTable2.FieldByName('Отчество').AsString := s3;
ADOTable2.FieldByName('Дата рождения').AsString := s4;


end;
Все работает.
Только вот у меня один DBAdvGrid1 один DataSourse1 и три ADOTable (ADOTable1, ADOTable2, ADOTable3)

переход между ADOTable - ми такой:


Код:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
case ListBox1.ItemIndex of

0: DataSource1.DataSet:= ADOTable1;
1: DataSource1.DataSet:= ADOTable2;
2: DataSource1.DataSet:= ADOTable3;
end;
end;
Как можно узнать какая из трех ADOTable активна
Код:
procedure TForm1.N1Click(Sender: TObject);
var
s1,s2,s3,s4:string;
begin
  s1 := ADOTable1.Fields.Fields[1].AsString;   // здесь надо поменять на активную ADOTable
  s2 := ADOTable1.Fields.Fields[2].AsString;   //к примеру если активна ADOTable2 то в место
  s3 := ADOTable1.Fields.Fields[3].AsString;  // s1 := ADOTable1.Fields.Fields[1].AsString;
  s4 := ADOTable1.Fields.Fields[4].AsString;  //было s1 := ADOTable2.Fields.Fields[1].AsString;
ADOTable3.Insert;
ADOTable3.FieldByName('Имя').AsString := s1;
ADOTable3.FieldByName('Фамилия').AsString := s2;
ADOTable3.FieldByName('Отчество').AsString := s3;
ADOTable3.FieldByName('Дата рождения').AsString := s4;
 
end;
Dotha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таблицами в Delphi Olga5 БД в Delphi 13 04.04.2012 17:58
работа с таблицами Petruha-nsk Общие вопросы C/C++ 2 26.04.2009 13:31
Удаление связи между таблицами в Access sashaslam БД в Delphi 3 23.07.2008 09:44
работа с таблицами Sexyprogrammist Общие вопросы Delphi 1 15.06.2007 01:00