Как лучше организовать импорт данных xls?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 01.03.2012 (Чт) 17:42

Хочу делать копирования через буфер обмена область данных из экселя (точнее накладные, счет-фактура, тех.документы и т.д.) в форму в какой-то элемент, что бы сохранялась (копировалась) структура ячейковая - что я мог далее назначить столбцам их предназначение.
Какой элемент для этого мне лучше использовать (если конечно такой существует)?
Кто ищет, тот всегда найдет ...

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Как лучше организовать импорт данных xls?

Сообщение FireFenix » 01.03.2012 (Чт) 18:29

Сформулируйте по лучше задачу - что есть и что требуется получить во всех деталях
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: Как лучше организовать импорт данных xls?

Сообщение Sirik » 01.03.2012 (Чт) 19:24

лучше не через буфер, а написать макрос импорта и действительно задача какая-то мутная
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 02.03.2012 (Пт) 11:58

Проще у меня данные в екселе.
Я хочу делать захват данных от туда, допустим 5 столбцов и 100 строк (в определенной зоне таблицы) (количество столбцов и строк может меняться)
Я раньше делал так, копировал то что мне нужно в акцесс в таблицу заранее сформированную под копируемый объект по кол-ву столбцов.
Писал запросы по обработки таблицы и вставлял обработанные данные в рабочую таблицу с которой легко работать.
Но это работа трубоемкая, + для пользователя который не владеет акцессом требует дополнительных навыков.
Хочу организовать через буфер обмена, скопировал из экселя, далее в форме указал количество строк и столбцов, далее скопировал куда-то (?) в форме, и увидел например в MSFlexGrid то что скопировал. Такое реально?
А далее я уже назначаю столбцам их истенное предназначение и корректирую какие-то ячейки если они не корректные - но это я уже вижу как я сделаю.
Для меня главное скопировать нужную область из екселя в базу, что бы это мог бы просто сделать обычный посльзователь.
?
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 02.03.2012 (Пт) 12:45

Я здесь немнго поковырялся нашел контрал RichTextBox
Когда копируешь в него из екселя, он вставляет структуру из екселя даже с разграничением полей (как например копировать в ворд).
Я когда ввожу внутри контрола таб, он переходит к следующему полю.
RichTextBox.Text имеет структуру обычного текста, как понять в нем где табуляция? Я примерно понял что это 2 пустых значения.
Но как перехватить это не могу понять.
Кто разбирается в этом котрале помогите.
Кто ищет, тот всегда найдет ...

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: Как лучше организовать импорт данных xls?

Сообщение Sirik » 02.03.2012 (Пт) 13:01

почему не сделать в самом документе процедуру импорта?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 02.03.2012 (Пт) 13:08

все решил спасибо.
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 02.03.2012 (Пт) 13:13

Как сделать в самом документе процедуру импорта? Не совсем понял - опиши пожалуйста суть.

Я просто хочу что бы мои менеджеры копировали данные из екселя "тупо", вставляли в форму, указывали столбцы те что надо импортировать и их назначение, и база сама перерабатывала их. А дальше они будут структурированы как нужно и их легко можно будет обрабатывать.
Кто ищет, тот всегда найдет ...

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: Как лучше организовать импорт данных xls?

Сообщение Sirik » 02.03.2012 (Пт) 13:48

если не трудно и если это не секретно, прикрепи пример. и укажи что надо импортировать
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Как лучше организовать импорт данных xls?

Сообщение Sam777e » 03.03.2012 (Сб) 4:27

Sirik писал(а):если не трудно и если это не секретно, прикрепи пример. и укажи что надо импортировать

+1

А ещё не забудь про Автоматизацию - зачем user' у что-то откуда-то куда-то копировать руками?
Руками надо только указывать, ЧТО делать, а остальное - программно . . .

[ Да, хорошо бы /* некоторым */ авторам пользоваться проверкой орфографии - сейчас это легко делается . . . ]
Здоровья и удачи

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 05.03.2012 (Пн) 11:22

Пример для
_______
( Sirik » 02.03.2012 (Пт) 13:48
если не трудно и если это не секретно, прикрепи пример. и укажи что надо импортировать):
______
Есть счет-фактура и товарная накладная от поставщиков. Они присылают нам в Екселе, а потом в бумажном виде с товаром.
Что бы оприходовать товар на склад надо внести данные из документов (+ еще есть упаковочный лист - такой документ к поставке прилагается, в котором указано в какой коробке что находиться, что бы проще было разбирать и искать товар (то же получаем и в екселе)).
Давным-давно "в далекой галактике" мы вручную вводили данные, т.е. каждую позицю - очень трудоемкое занятие, т.к. с годами кол-во товара увеличилось в разы, я в акцесс разработал таблицы куда мы копировали из екселе в акцесс данные (определенный диапазон ячеек), потом через несколько запросов преобразования-объединения-дабавления, данные добавлялись в рабочую таблицу, по которой мы уже оприходовали товар на склад, и весь анализ закупок, складской учет и т.д. там происходил. То же трубоемко, + без меня если возникали вопросы или проблемы, никто ничего не мог сделать.
Сейчас я все перевожу на VB, и хочу что бы менеджер вставлял в форму диапазон из ЕКСЕЛЯ, например товарную накладную ТОРГ-12, и нажимал клавишу преобразовать, и программа сама вычленяла данные на основе алгоритма. Как в нормальном приложении, пользователю не обязательно знать акцесс и работать в нес с таблицами и запросами, сам пойми копировать и вставлять проще научить менеждера, чем Акцессу. Логично?

Я сейчас понимаю что ты имеешь ввиду написать импорт, т.е. подлючаем модуль Ексель в проекту, открываем файл *.xls указываю путь, далее программа импортирует ячйки. Но есть загвоздки которые мне не нравяться в этом моменте.
1.Таварные накладные (и счет-фактуры) в Екселе у всех поставщиков разные, т.е. первая ячейка для копирования не совпадает, получается все равно менеджеру придеться заходить и смотреть с какой ячейки начинать импорт и писать это для программы. Плюс с 2013 года формы каждая фирма может делать свои, главное что бы были основные реквизиты документа, и тогда это будет еще геморойнее.
2.В VB есть контрол по работе с паками, но он не поддерживает сетевой протокол, а у нас сеть, и мы сохраняем документы в папке обмена, что бы пользователи могли при необходимости смотртеть данные с разных компов.
3.Это не наглядно, менеджер будет видеть только то что взяла машина, а копируя он видет то что копирует и на этом этапе уже может увидеть какие-то проблемы, например документ не полностью сформирован у поставщика (не хватает части данных, каких-то обязательных столбцов и т.д.).
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 06.03.2012 (Вт) 11:19

Процесс идет нормально. Копирую в контрол RichTextBox диапазон из Екселя.
Запускаю цикл и все нормально формируется.
Перехватываю конец ячейки так (она равна табуляции):
If Mid(RichTextBox1.Text, A, 1) = vbTab Then
В этот момент перехожу к закоплению текста для следующей ячейки.

Но возникла проблема с концом записи, например я копирую даипазон из Екселя 12 столбцов и 40 строк.
Конец 12 ячейки то же табуляция, но последующие 2 знака в RichTextBox1.Text (Mid(RichTextBox1.Text, A+1, 1) и Mid(RichTextBox1.Text, A+2, 1))
они определяют конец диапазона по количеству столбцов, его я перехватить не могу и это не табуляция.
Подскажите что это или как это перехватить?
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 06.03.2012 (Вт) 11:43

Спасибо все нашел:
Mid(RichTextBox1.Text, A + 1, 2) = vbNewLine

Еще вопрос. Я организовал вручную таблицу под названием ТЕМР.
В ней создал 40 полей текстовый 255 символов.
Это рабочаю таблица для. Количество полей взял с запасом, т.к. больше 40 не потребуется.
Но что бы каждое новое поле вносилось я сделал специльную перемнную С которая определяет текущее поле в текущей записи, и как только я перехватил конец поля, я заношу его в таблицу и сооотвественно пишу (P = это накопленный результат всего поля):
If C = 1 Then
F1.RST100![1] = P
End If
If C = 2 Then
F1.RST100![2] = P
End If
...
и т.д. проверка идет до 40
А можно сделать типа того:
F1.RST100!['" & Format(C) & "'] = P
типа как пишем в опишание рекодрсет с внешней переменной, т.е. название поля в таблице будет браться от переменной?
Такое реально?
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: Как лучше организовать импорт данных xls?

Сообщение АндрейБ » 06.03.2012 (Вт) 12:12

:) ну меня сегодня прет, решил, правда через другое поля:
F1.RST100.Fields(C - 1) = P
Но это благодаря тому, что у меня считает переменная = название столбца (хитрость).
Но вопрос остался открытым, реально ли
опрделеять в рекодсет при изменение текущей записи, внесение новой записи,
название поля из какой-то переменно (Integer, String) (как я до этого писал и у меня не вышло):
RST![ переменная (т.е. не явное указание названия поля) ] = ...
Такое реально?
Кто ищет, тот всегда найдет ...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 26

    TopList  
cron