Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Как запросом скопировать из одной базы в другую все содержимое справочника (число прочтений - 6781 )
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Как запросом скопировать из одной базы в другую все содержимое справочника
11. Июля 2009 :: 07:23
Печать  
Добрый день. Можно ли запросом скопировать из одной базы в другую все содержимое справочника номенклатура, со всеми уровнями и т.д.
Может как то через OLE запрос?

  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #1 - 11. Июля 2009 :: 08:56
Печать  
хм, а вчем проблема-то?
Код
Выбрать все
insert into <ДругаяБаза>..<ДругаяТаблица>
select
*
from
 scXXX 

  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #2 - 11. Июля 2009 :: 11:41
Печать  
Можно по подробнее?
Две точки там обязательно?
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #3 - 13. Июля 2009 :: 17:32
Печать  
Не кто не знает?
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #4 - 13. Июля 2009 :: 17:56
Печать  
Синтаксис:
database.owner.object_name

owner можно не задавать, тогда:
database..object_name
  
Наверх
 
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #5 - 14. Июля 2009 :: 01:05
Печать  
А зачем в таком случае вообще какие-то запросы писать? Вместе с SQL-ем есть DTS Import/Export Wizard. Запускай его, тыкай мышкой из какой базы в какую, ставь галочки на нужных таблицах и копируй. Заодно можешь на будующее получившийся запрос сохранить.
Или речь про какую-то другую СУБД?
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #6 - 14. Июля 2009 :: 10:24
Печать  
(5) Можно. При полном совпадении DDS в двух базах.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #7 - 15. Июля 2009 :: 07:15
Печать  
VoditelKobyly писал(а) 14. Июля 2009 :: 01:05:
А зачем в таком случае вообще какие-то запросы писать? Вместе с SQL-ем есть DTS Import/Export Wizard. Запускай его, тыкай мышкой из какой базы в какую, ставь галочки на нужных таблицах и копируй. Заодно можешь на будующее получившийся запрос сохранить.
Или речь про какую-то другую СУБД?

Речть идет как скопировать из одной базы в другую программно. Но код не менять в другой базе. Хочу сделать это автоматический. Буду проверять по дате изменения файла .DBF. файла справочника номенклатуры другой базы.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #8 - 15. Июля 2009 :: 07:20
Печать  
val писал(а) 14. Июля 2009 :: 10:24:
(5) Можно. При полном совпадении DDS в двух базах.

Расскажи пожалуйста по подробнее ,а лучше покажи как сделать это на примере.   Подмигивание  
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #9 - 15. Июля 2009 :: 07:25
Печать  
Как же сделать это все через OLE запрос?
  
Наверх
 
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #10 - 16. Июля 2009 :: 09:05
Печать  
Опиши задачу более подробно, пока мало чего понятно, что требуется.
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #11 - 16. Июля 2009 :: 15:20
Печать  
(7) "Но код не менять в другой базе".
Это меняет все. "Одним запросом" не получится. И DTS не поможет.
Да еще и базы DBF. Пиши все ручками или используй готовые обработки. Их много.  Поиском найдешь.
  
Наверх
 
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #12 - 17. Июля 2009 :: 00:47
Печать  
(7) "Но код не менять в другой базе".
То есть скопировать все остальные столбцы таблицы для тех элементов справочника, которые уже есть в одной из баз?
Стоит задача переписать реквизиты для уже имеющихся элементов? А если элемента с таким кодом нет, то добавить записи?

Можно ещё раз постановку задачи по подробней?
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #13 - 17. Июля 2009 :: 13:23
Печать  
(12) Да, со всей иерархией, пометками на удаление, изменением родителя, ссылками на другие справочники, перечисления, счета, которые тоже надо подтягивать (со всей иерархией,  пометками на удаление ... - далее по кругу с начала) Улыбка
  
Наверх
 
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #14 - 20. Июля 2009 :: 00:27
Печать  
У меня директор тоже хочет одну большую кнопку вместо всех компьютеров: нажал - и деньги сами начали печататься.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #15 - 21. Июля 2009 :: 11:16
Печать  
Есть еще экспорт-импорт, все делается в два клика в ЕМ (при условии что один из справочников пустой, ну или если допустимо все удалить и перезалить заново)
Иначе надо синхронизироваться
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #16 - 22. Июля 2009 :: 07:58
Печать  
В общем сделял я через OLE. Программа теперь сама значет что нужно обновить справочник. Если кому интересно, могу выслать на почту код программы сделаная на Delphi
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #17 - 22. Июля 2009 :: 07:58
Печать  
Как сделать запросом, пока не знаю..
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #18 - 23. Июля 2009 :: 04:49
Печать  
Выложите здесь исходники.. поглядеть.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #19 - 03. Августа 2009 :: 10:49
Печать  
Код
Выбрать все
	 OleBase:=Ole1CBase.CreateObject('Справочник.Номенклатура'); //6
		  OleBase1:=Ole1CBase.CreateObject('Справочник.Номенклатура'); //6
		OleTorg:=Ole1CTorg.CreateObject('Справочник.Номенклатура'); //6

				//	end
				    //	finally
				    //	begin
//ListBox1.Items.Add('Ошибка');
//Application.ProcessMessages;
//end   ;




     i := 0;
	     strStatus.Caption := 'Выполняется проверка элементов';
  OleTorg.selectitems(1); //Открываем выборку элементов справочника
  while OleTorg.GetItem(1)>0 do //Выбираем все элементы
  begin



  AutoRunScan := 0;
	i := i +1;
			   if Stop = 1 then
			   begin
			     Stop := 0;
				    AutoRunScan := 1;
					  Break;

				     end;



  StatusBar1.SimpleText := OleTorg.Description ;
  Application.ProcessMessages;


   Prodolit := 1;
for r := 0  to IgnorList.Lines.Count -1  do
begin
if Pos(IgnorList.Lines.Strings[r],OleTorg.FullDescr) <> 0 then
 Prodolit := 0;

end;
if Prodolit = 1 then
begin






  if OleTorg.IsGroup = 1 then  //Если это группа
    begin

     if OleBase.FindByCode(OleTorg.FullCode,2) = 0 then	//Такой группы нет в базе.
	     begin

	     if OleTorg.Level > 1  then
		   begin

		     if OleBase.FindByCode(OleTorg.Parent.Code,0) = 1 then
			 begin
			  OleBase.UseParent(OleBase);
			  OleBase.NewGroup;
			  OleBase.Code := OleTorg.Code;
			  OleBase.Description := OleTorg.Description;
			  OleBase.Write;
			  ListBox1.Items.Add('Новая группа: ' + OleTorg.FullDescr) ;
			  end;

		   end
		   else
		   begin
			 OleBase.UseParent('');
			 OleBase.NewGroup;
			 OleBase.Code := OleTorg.Code;
			 OleBase.Description := OleTorg.Description;
			 OleBase.Write;
			 ListBox1.Items.Add('Новая группа: ' + OleTorg.FullDescr) ;
		   end;  //Это первый лвл??

		end;   //Это поиск группы

		   end; //Это группа?
		   // break;
		  //   Break;
end
			  end; //Перебор элементов


	   AdvProgressBar1.Max := i;
	  AdvProgressBar1.Position := 0;
		strStatus.Caption := 'Выполняется синхронизация элементов';
  OleTorg.selectitems(1); //Открываем выборку элементов справочника
  while OleTorg.GetItem(1)>0 do //Выбираем все элементы
  begin
	    AutoRunScan := 0;
   AdvProgressBar1.Position := AdvProgressBar1.Position +1;
			   if Stop = 1 then
			   begin
			     Stop := 0;
			     Break;
					 AutoRunScan := 1;
			   end;



  StatusBar1.SimpleText := OleTorg.Description ;
  Application.ProcessMessages;



    Prodolit := 1;
for r := 0  to IgnorList.Lines.Count -1  do
begin
if Pos(IgnorList.Lines.Strings[r],OleTorg.FullDescr) <> 0 then
 Prodolit := 0;

end;
if Prodolit = 1 then
begin





  if OleTorg.IsGroup = 0 then  //Если это группа
    begin
		 Code :=  OleTorg.Code;
     if OleBase.FindByCode(Code,0) = 1 then	//Такой элемента нет в базе.
	     begin

		    if    OleBase.Description <> OleTorg.Description then
			 begin
			   ListBox1.Items.Add('Переименованили элемент: ' + OleBase.Description + ' => ' + OleTorg.Description) ;
			  OleBase.Description := OleTorg.Description;
				OleBase.Write;
			 end;



	  if OleTorg.Level > 1 then
		  begin
			  Code :=  OleTorg.Parent.Code;
		     if OleBase1.FindByCode(Code,0) = 1 then
			 begin
			 if OleBase1.Level > 1 then
			 begin
			 Code1 :=  VarToStr(OleTorg.Parent.FullCode);
			 Code2 :=  VarToStr(OleBase.Parent.FullCode);

			   if   Code1 <>  Code2 then
			   begin
			   try

			     begin

				   ListBox1.Items.Add('Переместили элемент:  (было) ' + OleBase.Code + ' '  + OleBase.FullDescr) ;
				   ListBox1.Items.Add('Переместили элемент: (стало) ' + OleTorg.Code + ' ' + OleTorg.FullDescr) ;



			     OleBase.Parent := OleBase1;
				 OleBase.Write;
				  end
				   finally
				   begin
				    Ole1CBase := Unassigned;
				    Ole1CTorg := Unassigned;
				    Ole1CTorg := '';
				    Ole1CBase := '';

				   end


			   end;

			   end;

			 end;





			  end;
		  end;





		end
else

  

  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #20 - 03. Августа 2009 :: 10:49
Печать  
Код
Выбрать все
  begin



	   if OleTorg.Level > 1  then
		   begin
		    if OleBase1.FindByCode(OleTorg.Parent.Code,0) = 1 then
			 begin
			  OleBase.UseParent(OleBase1);
			  OleBase.New;
			  OleBase.Code := OleTorg.Code;
		     //   ShowMessage( OleTorg.FullDescr);
			  OleBase.Description := OleTorg.Description;
		     OleBase.Write;
			  ListBox1.Items.Add('Новая элемент: ' + OleTorg.FullDescr) ;
			  end;

		   end
		   else
		   begin
			 OleBase.UseParent('');
			 OleBase.New;
			 OleBase.Code := OleTorg.Code;
			 OleBase.Description := OleTorg.Description;
			OleBase.Write;
		     ListBox1.Items.Add('Новая элемент: ' + OleTorg.FullDescr) ;
		   end;  //Это первый лвл??




end;





			    end;
			 //Если элемент есть, то проверим родителя....

			   end;

		   end;  //Это первый лвл??


				   AutoRunScan := 1;

						 strStatus.Caption := 'Ожидания изменений...';
				   Button2.Click; //Запишем в реест что бы 1С обновилась!

	     

  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #21 - 03. Августа 2009 :: 10:51
Печать  
Это не весь код...
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #22 - 03. Августа 2009 :: 11:13
Печать  
Так наверное не кто и не знает, как все сделать это ввиде запроса...
  
Наверх
 
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #23 - 04. Августа 2009 :: 01:13
Печать  
Судя по твоему алгоритму тебе надо вопрос поставить по другому:
Как запросами скопировать из одной базы в другую все содержимое справочника?
Либо поменяй постановку вопроса либо постановку задачи. Тяжело написать один запрос, который бы менял данные в базе и одновременно куда-нибудь записывал, что на что он изменил.
Похоже в справочнике нет ссылок на другие метаданные, это очень упрощает задачу.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Как запросом скопировать из одной базы в другую все содержимое справочника
Ответ #24 - 04. Августа 2009 :: 07:45
Печать  
Тему уже можно закрыть. т.к. сделал я на delphi. просто интересно, реально ли все это сделать запросом.
В одной базе есть код и наименование, а в другой базе есть код, наименование и куча других реквизитов. Я думал из начально, сделать это запросом.. ну как я не селен в запросах, сделал на delphi.
Огромное всем спасибо! Кстате, если будут у Вас вопросы с Delphi. пишите: admin@te.spb.su  - тоже помогу, чем смогу)

С уважением, Константин

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать