|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Код для обмена данными в приложении Добрый день, помогите набросать код, если не сложно) Итак приложение с бд Access, в ней таблица zakaz в которой куча полей, которые заполняет пользователь id,surname,info и т.д. их около 15-ти (среди них есть поле name в которое при добавлении заказа автоматически ставится знак # ) хочу чтобы при нажатии на button1 все записи из бд на которых проставлен знак # записывались в какой нибудь файлик например в xml документ, после чего на всех этих записях был проставлен знак ## и похожий код чтобы другой пользователь мог загрузить все эти данные себе в бд собственно своего рода это будет обмен данными между приложениями, бд идентичные по всем полям. Буду благодарен за помощь! | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Совершенно непонятно, зачем все эти фокусы с символом "#". Ничто ведь не мешает перекидывать данные как есть, без дополнительных символов. Сделайте логическое (Boolean) поле вместо этой "решётки", с ней лишний гемор. Выделить записи по любому признаку проще всего с помощью свойств Filter/Filtered. Например, если Вы создадите Boolean-поле new_order, то для фильтрации набора данных по состоянию этого поля нужно написать (в Вашем случае в обработчике Button1): Код: zakaz.Filter := 'new_order = true'; zakaz.Filtered := true; Если фильтровать по символам ("#" или другим) внутри поля, то тут зависит от механизма. Я работал с Access через ADO, и честно говоря уже не помню все нюансы, но кажется мне, что для таких случаев свойство Filter недостаточно функционально (могу и ошибаться). Такого рода фильтрацию я делал, используя компоненты TQuery + динамически формируемый SQL-запрос. Так что, повторюсь, символами в полях вот так выделять записи - плохой тон, лишняя работа. Такие вещи делаются с использование Boolean-полей. Если таблицы полностью идентичны - то вообще нет проблем при переброске данных. Кстати, ещё один метод выделения новых записей - два поля, оба типа DateTime: дата создания записи (записывается в событии AfterInsert) и дата последней правки (в BeforePost). Перекинули данные, потом сортировкой по полям даты/времени легко нашли нужные записи. Последний раз редактировалось Guaho, 31.08.2018 в 19:06. | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   С фильтром все понятно и сделать его не проблема) Приложение стоить на двух разных компьютерах, более того в двух разных городах, вопрос больше не в том как отсортировать данные а как их передавать с одного приложения в другое. Вот в чем был вопрос | 
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|   Ну, простейший пример - выгрузить нужные записи в файл, передать его каким-либо образом (тут зависит от того, какая связь есть) и потом во второй программе загрузить. В свое время мы делали через xml, но можно и попроще, особенно если это всего одна таблица. Нынче модно поднимать где-нить REST-сервис и работать через него. | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   Так через XML же проще всего. Есть такой модуль XmlDoc, в нем есть класс TXmlDocument, который работает с XML.  На одном компе выгружаем записи в XML, на другом - читаем из этого XML и записываем в БД. | 
| 
			 
			#6  
			
			
			
			
		 | |||
| 
 | |||
|   А можно пример кода на выгрузку и загрузку? в xml | 
| 
			 
			#7  
			
			
			
			
		 | ||||
| 
 | ||||
|   В таблице есть поле id? Тогда проще во времянку скидывать его значение по мере поступления новых записей, а на момент передачи в удалёнку считывать по этим номерам нужные из основной таблички в носитель (*.xml или, для уменьшения объёма передаваемого файла, обычный *.txt) и затем чистить tmp для новых заказов. Определитесь с "носителем" - текст кстати можно сжать архиватором, да ещё и с паролем: и меньше весить будет, и защита от "чужих глаз" небольшая будет, когда-то сам так делал | 
| 
			 
			#8  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   Заработал серевер, вот набросок, поскольку используется база акцесс, "передачу" можно осуществить и промежуточной базой (здесь это Носитель.mdb), а как её наполнять и чем - про энто в сборке и бир Последний раз редактировалось Alegun, 03.09.2018 в 11:19. |