|
|
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Не могу решить вопрос... В прикрепленном файле Excel несколько колонок с данными. С помощью мастера запросов SQL я извлекаю все данные в другую книгу. НО часть данных не извлекается. Причем есть какая то зависимость от 2ой строки. При определенных условиях извлекаются только числа при других только текст Мне необходимо чтобы вся информация и числа и текст и даты извлекались по запросу. И где можно почитать про это... Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2010, 19:49 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Нужно понять, что таблица Excel это не база данных и поэтому операции, применимые к базам данных применимы к нему только при определенных условиях. Поэтому, если хотите использовать запросы SQL, используйте в качестве хранилища данных СУБД, а не электронную таблицу. Вот и все, что можно по этому поводу прочитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2010, 20:57 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин Сочи, Вам нужно лист файла-источника преобразовать в таблицу БД. Насколько я понимаю, оставить только 1 строку , в кот-й будут названия столбцов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 07:03 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин СочиНе могу решить вопрос... В прикрепленном файле Excel несколько колонок с данными. С помощью мастера запросов SQL я извлекаю все данные в другую книгу. НО часть данных не извлекается. Причем есть какая то зависимость от 2ой строки. При определенных условиях извлекаются только числа при других только текст Мне необходимо чтобы вся информация и числа и текст и даты извлекались по запросу. И где можно почитать про это... Спасибо! Если извлекаемость зависит от содержимого, то у меня была аналогичная проблема. Суть проблемы в том, что при попытке извлечения данных из xls/csv заранее неизвестен тип поля содержащего данные, в частности число/не число и встроенный в винду JET, который и выполняет этот запрос, определяет тип содержимого по первым N записям. По умолчанию по 10 если я не ошибаюсь. Иными словами если первые 10 записей число, то тип поля воспринимается как числовое. И если в 11 строке будет текст, запрос "взорвется". Есть ключик в реестре, который позволяет этой глубиной управлять, беда в том, что он имеет ограничения по максимуму и мне лично игра с этим ключем не помогла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 09:47 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Кладовщик, дело в том, что мне необходимо при вызове обновления данных извлечь все что есть. А получается так: если во второй строке ,к примеру, находится число, то извлекаются с ряда только числа, если текст то извлекается текст. и.т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 12:54 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Так какой может быть здесь выход? Какие есть еще способы сплошного извлечения данных. Может быть макросом не открывая книгу-источник??? Или есть еще какие нибудь программы, приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 12:57 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Можно макросом открывать книгу, копировать все данный в нужную, и закрывать. При отключенном пересчете, обновлении экрана и на нормальном компе занимает не очень много времени. У меня 60 файлов по 3Мб открываются и закрываются менее чем за 20сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 13:32 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
У меня 27 колонок данных и около 2-4 тыс строк. = 100 тыс ячеек. Из закрытой книги когда извлекает данные макросом, компьютер виснет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 14:18 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
не понял к чему предыдущее? т.к. непонятно что вы делаете? Если нужна помощь опишите ситуацию, что нужно делать, что получить в итоге и что не получается. Приложите тестовый пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 14:30 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Вот результат запроса Select * from [ЗОЛОТО$], перед запуском удалил две верхние строки (или прибамбасы, или функциональность. Я всегда выбираю 2-е). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 19:05 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Прошу прощения. не тот файл прикрепил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 19:07 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Почему то в файле не заметил запроса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 19:41 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Это именно результат запроса. Для формирования текстов запросов и их запуска у меня есть специально написанное приложение (используется ADO). А текст запроса я привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 19:56 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Deggasad Проблема такая. Есть крупная база данных excel. Несколько лет работы... Так уж получилось что ряды данных содержат смешанные форматы (числа текст даты). Одни товары с артикулом - числом другие артикул-текст и.т.д. Переходить на реляционные базы не хочу. Поэтому проблема в том что запрос почемуто извлекает либо текст либо числа - в зависимости от содержания первых ячеек. Если средствами "query" это невозможно в принципе то как тогда??? Я других приложений не знаю. Макрос виснет после такого объема данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 21:52 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Ответил в дубликате темы: Запрос из внешнего источника xls Запросы не работают со смешанными типами данных, продолжать искать решение в этом направлении бесперспективно. Помогут только макросы. Если они есть и тормозят, то имеет смыл заняться из оптимизацией – выкладывайте код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 04:33 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин Сочи, создать первых 10 записей, которые потом фильтром из запроса убирать. Но эти 10 записей должны однозначно описывать тип поля. Либо если хронология не важна, отсортировать такие записи вверх и всего делов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 09:07 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Почти уверен что ваша проблема решается очень легко, но вы упорно пишете, что вам нужо чтобы правильно работал запрос, а я Вам говорю что запрос - всего лишь средство и прошу сделать тестовый пример: какие данные есть и какой результат должен получиться на выходе. Вам быстро помогут как только вы это сделаете и перестаните писать, что неработает запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 10:23 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин СочиDeggasad Проблема такая. Есть крупная база данных excel. Несколько лет работы... Так уж получилось что ряды данных содержат смешанные форматы (числа текст даты). Одни товары с артикулом - числом другие артикул-текст и.т.д. Переходить на реляционные базы не хочу. Поэтому проблема в том что запрос почемуто извлекает либо текст либо числа - в зависимости от содержания первых ячеек. Если средствами "query" это невозможно в принципе то как тогда??? Я других приложений не знаю. Макрос виснет после такого объема данных.ну, квери читает, как вы сами правильно заметили, лишь несколько полей, по которым пытается определять тип всего поля. я в своё вряемя тупо первую строку базы забивал строкой, в которой был текст, где текстовое поле или циферки, где числовое. попробуйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 10:33 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Хорошо выкладываю образец еще раз. Все числовые данные извлекаются нормально за исключением текстовых значений в 8 колонке J:J "Артикул".Тут текст заменяется на Null. Если первая строка "артикул" будет числом то последующие числа все отображаются но теперь пропадают текст. Как кто то уже упомянул, запросы не работают со смешанными данными, а если это так то и не стоит в этом направлении голову ломать., не так ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 14:54 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин СочиХорошо выкладываю образец еще раз.спасибо большое, Константин Сочи, за выложенный 21 сообщением в топике пример!! наконец, вам можно помочь.. поменяйте формат столбца с артикулом на текстовый в базе данных и будет вам счастье =)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 17:06 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Не целесообразно подстраиваться под разных поставщиков товаров. Одни выдают артикул цифровой другие текстовый. приходится их ставить в один ряд. Тысячи строк вводить потом менять форматы... А когда меняю форматы чисел на текст - перестают работать формулы подсчетов и.т.д. А вводить свой собственный формат, к примеру только числовой, тогда приходися печатать на товар этикетки с штрих-кодом внутренним. Вообщем это не решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 19:18 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин Сочи.... Как кто то уже упомянул, запросы не работают со смешанными данными, а если это так то и не стоит в этом направлении голову ломать., не так ли. Так стоит голову ломать или нет, я что-то не пойму? Вы в итоге опять написали какая есть проблема, но не указали желаемый результат? Вы наверное никогда не родите поэтому спрошу сам: Правильно ли я понимаю задачу, что по нажатию кнопки "обновить" в книге "Книга с запросом" все данные исходного листа в книге "база" должны перенестись на лист1 в книгу "Книга с запросом"? или может быть нужно чтобы запрос заработал правильно и другие варианты не рассматриваются? З.ы.: поле таки можно сделать текстовым полностью и все формулы сделать чтобы корректно работали и все остальное, если хотите это тоже можно отдельно обсудить, вы просто ничего не хотите толком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2010, 19:52 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Так как требуется импорт всех данных, аналогично запросу SELECT * FROM …, то для быстрого импорта смешанных типов данных из закрытого Excel файла можно воспользоваться комбинацией макроса и недокументированным свойством Excel-формул возвращать массив данных из внешнего источника. Пример приложен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 05:39 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Deggasad спасибо конечно но Я же уже скока раз повторил свою проблему. Запрос отсеивает половину данных, так как где то числа где то текст. Самому менять в источнике числа на текст или текст на числа это нецелесообразно, Да и сам замысел не тот чтобы подстраиваться под всех и под каждый случай. Вот ZVI решил эту проблему макросом четко. 1 секунда и все данные в книге (и неважно в каком они там виде записаны) ... Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 11:04 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVI, МегаКруть, не думал о таком (хотя давно хотел что-то подобное смастерить), не знаю насколько быстрее от всех остальных вариантов (например непрерывный массив формул сделать), но мне нравится сохраню для коллекции Единственное зачем вот эта строка? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 11:20 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин СочиDeggasad спасибо конечно но Я же уже скока раз повторил свою проблему... ... Вот ZVI решил эту проблему макросом четко... Товарисч, ZVI решил проблему обозначенную мной, на основании вымученного мной же примера, поэтому не очень понятно ваше ...,НО... в обращении ко мне. Константин Сочи... Спасибо всем. Приму это на свой счет, чтобы не думать о тебе плохо. З.ы.: единственный минус быстрого решения ZVI - ты так и не научился задавать вопрос :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 11:27 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVIТак как требуется импорт всех данных, аналогично запросу SELECT * FROM …, то для быстрого импорта смешанных типов данных из закрытого Excel файла можно воспользоваться комбинацией макроса и недокументированным свойством Excel-формул возвращать массив данных из внешнего источника. Пример приложен. А не сложно подсказать где в этом коде прописать путь к файлу "База1" если к примеру он на другом диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 12:13 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
DeggasadКонстантин СочиDeggasad спасибо конечно но Я же уже скока раз повторил свою проблему... ... Вот ZVI решил эту проблему макросом четко... Товарисч, ZVI решил проблему обозначенную мной, на основании вымученного мной же примера, поэтому не очень понятно ваше ...,НО... в обращении ко мне. Константин Сочи... Спасибо всем. Приму это на свой счет, чтобы не думать о тебе плохо. З.ы.: единственный минус быстрого решения ZVI - ты так и не научился задавать вопрос :( Ничего плохого ни кому не желаю. :) Наоборот Вы все - Светлые головы, спасибо Вам за общение... и помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 12:17 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Degassad, спасибо за «МегаКруть» :-) Тоже гадал дописывать или очищать и проч., но решил на основе Вашего видения задачи привести вариант без заморочек, чтобы показать сам принцип. Выравнивание ширины столбцов с помошью .Columns.AutoFit – это для удобства, не принципиально конечно. Константин, приложил вариант с переменой XlsFilePath, в которой можно прописать папку с XLS-файлом данных. Можно вызывать и диалоговое окно для выбора файла данных, но это уже нехитрое дело. Нужно учитывать, что форматирование ячеек, куда производится импорт приведенным методом, нужно делать самостоятельно либо вручную, как у меня в примере, либо кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 16:39 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVIDegassad, спасибо Извиняюсь за опечатку, Deggasad ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 16:41 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVIDegassad, спасибо за «МегаКруть» :-) Тоже гадал дописывать или очищать и проч., но решил на основе Вашего видения задачи привести вариант без заморочек, чтобы показать сам принцип. Выравнивание ширины столбцов с помошью .Columns.AutoFit – это для удобства, не принципиально конечно. Константин, приложил вариант с переменой XlsFilePath, в которой можно прописать папку с XLS-файлом данных. Можно вызывать и диалоговое окно для выбора файла данных, но это уже нехитрое дело. Нужно учитывать, что форматирование ячеек, куда производится импорт приведенным методом, нужно делать самостоятельно либо вручную, как у меня в примере, либо кодом. Опять вопрос? В книге с кодом импорта данных 2листа - соответсвенно нужно два модуля с разными запросами. т.е. на одном листе запрос с листа 1 книги, а на другом листе запрос с листа 2 книги. Что то сам добавляю модуль с кодом и перестает работать первый. И какой код прикреплен на кнопке "VBA code", и где он спрятан??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 17:51 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Чтобы задать лист, куда импортировать, достаточно было в строке с With ThisWorkbook.Sheets(1).UsedRange вместо единицы в круглых скобках вписать требуемый номер листа или имя листа в двойных кавычках. Для большей гибкости переписал процедуру с аргументами вместо констант - см. приложение. Теперь совершенно очевидно как изменить вызов процедуры под конкретные нужды. Константин, похвально, если Вы хотите научиться VBA. Но ошибки при этом неизбежны, и не нужно их стесняться, потому что разбор своих ошибок чуть ли не лучшая школа. Выкладывайте файл с кодом, показывайте, где что « перестает работать », и Вам помогут разобраться и исправить ошибки. Если же нет времени/желания/возможности/смысла изучать VBA, то тоже всё нормально - не всем это нужно в жизни. Но тогда лучше явно написать, что требуется не помощь в исправлении ошибок кода или формул, а полное решение такой-то проблемы. Часто и в этом случае кто-то «подрывается» решить проблему, в крайнем случае, подскажут, где её быстро могут решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2010, 03:07 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVI Если же нет времени/желания/возможности/смысла изучать VBA, то тоже всё нормально - не всем это нужно в жизни. Но тогда лучше явно написать, что требуется не помощь в исправлении ошибок кода или формул, а полное решение такой-то проблемы. Часто и в этом случае кто-то «подрывается» решить проблему, в крайнем случае, подскажут, где её быстро могут решить. Спасибо ZVI работает все быстро , но опять интересная проблемка. так как данных очень много, есть значения в виде текста типа "68E88" при импорте данных если в ячейке книги с запросом формат данных как "текст" то Excel читает как " 6,8Е+89" Если формат ячейки цифровой то отображается результат как 68 и 89 нолей...(6800000000000000000000000000000000000000000... Есть какие нибудь мысли по поводу такого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2010, 16:42 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин Сочи... так как данных очень много, есть значения в виде текста типа "68 E 88" при импорте данных если в ячейке книги с запросом формат данных как "текст" то Excel читает как " 6,8 Е +89"... Есть какие нибудь мысли по поводу такого Вы же сами хотели смешанных типов данных :-) В данном случае Excel по своим встроенным правилам определяет, что записано число в экспоненциальной форме, а не текст. Если использовать русскую букву Е вместо английской, или с двух строн ставить двойные кавычки, то воспримется как текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2010, 19:21 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Deggasad, Ваш вариант – супер! Сохранил в своей коллекции :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 02:43 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVIDeggasad, Ваш вариант – супер! Сохранил в своей коллекции :-) спасибо. надеюсь Ваша коллекция хранится лучше чем моя, а то я недавно похерил все нажитое непосильным трудом - разбился внешний жесткий диск, а копии не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 08:43 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
"='Z:\Files\[base1.xls]ОТЧЕТ'!$E$30" Есть вот такая формула ну и похожие на эту. Эти формулы извлекают данные из другой книги. И при открытии книги формула не может быть вычислена. Сначала открывается окно с поиском данного файла книги, затем прописываеш путь к книге. Вопрос: есть ли решение чтобы програмно формула обновлялась без моей помощи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 09:51 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин Сочи, юзайте поиск по фразе получение данных из закрытой книги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 10:18 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
ZVI MixedDataImport "=\\Pentium\Bases\", "Test.xls", "Лист1_Data", ThisWorkbook.Sheets(1). Range("A1") Подскажите пожалуйста: Где ошибка: файл находится на другом компе в единой рабочей группе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 12:20 |
|
||
|
кто подскажет очень нужно???
|
|||
|---|---|---|---|
|
#18+
Константин СочиZVI MixedDataImport "=\\Pentium\Bases\", "Test.xls", "Лист1_Data", ThisWorkbook.Sheets(1). Range("A1")Константин, знак равенства не нужен при вызове функции, т.е. вместо " = \\Pentium\Bases\" нужно "\\Pentium\Bases\" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2010, 15:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=61&tid=2177461]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 512ms |

| 0 / 0 |
