powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перекрестный запрос
25 сообщений из 31, страница 1 из 2
Перекрестный запрос
    #38710352
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Прошу помочь, есть таблица с столбцами: ID_код, Тип, Период, Выручка. Нужно сделать перекрестный запрос по двум условиям, чтобы содержание столбцов было следующее: ID_код - заголовок строк, Тип и Период - заголовок столбца, Выручка - значение, т.е. вместо 4 столбцов, должно получиться 2,столбец - ID_код, столбец -Тип и Период. Форум пролистал ничего похожего не нашел
Вроде ничего сложного, да ни как не выходит..(
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38710367
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал, сцепил поля Тип и Период в запросе! Может кому пригодится
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721274
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый знатоки!
Прошу помочь, советом. В форме подчиненная таблица. Источник подчиненной таблицы перекрестный запрос (Запрос3).
С помощью запроса (в поле формы) отображаются указанный код или клиент :
s = "select * from [Запрос3]"
If Not IsNull(Me.код) Then w = w & " AND [код клиента] LIKE " & Me.код & " "
If Not IsNull(Me.Клиент1) Then w = w & " AND [Клиент] = " & Me.Клиент1 & ""

If Not w = "" Then s = s & " where" & Mid(w, 5)
Me.подчиненная.Form.RecordSource = s

Данный запрос выполняется где-то 10-12 сек., можно изменить данный запрос чтобы уменьшить время поиска?

PS Насколько я понимаю, причина в перекрестном запросе (Запрос3), т.к. пробовал его изменить на выборку, обновляется сразу.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721323
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
s = "select * from [Запрос3]"
w=""

'непонятно , зачем like. если у вас код
If Not IsNull(Me.код) Then w = w & " AND [код клиента] LIKE " & Me.код & " "

'кавычек нет, видимо тоже число 
If Not IsNull(Me.Клиент1) Then w = w & " AND [Клиент] = " & Me.Клиент1 & ""

If Not w = "" Then s = s & " where" & Mid(w, 5)
Me.подчиненная.Form.RecordSource = s
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721355
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Заменив Like на равно, по времени обработки будет также(хотя согласен, корректно ставить равно ), про кавычки в курсе.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721561
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уже ли никто не сталкивался, как обновлять перекрестный запрос в форме??
Может на основе временной таблицы, только мне не понятно, как её обновлять на основе перекрестного запроса?
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721588
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,

автортолько мне не понятно, как её обновлять на основе перекрестного запроса?
увы, совсе не понимаю

--что у вас на входе
--и что надо получить
--зачем нужен перекрестный запрос при 1-м то столбце
====
например пустили запрос за февраль --28 столбцов+3 группировочных(цех-участок-изделие)
затем по цеху за 1 неделю марта

сменилось все от группировочных столбцов до итоговых
======
вижу 1 вариант
запустить , переписать модулем в постоянную рабочую таблицу, которую и смотреть в форме

--
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721589
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,

да и итоги более высокого уровня можно добавить
кодом естественно, чтобы округление не повлияло на суммы
и можно добавить дополнительные столбцы(например итоги за квартал,проценты)
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721816
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Спасибо, но проблема в другом.

В форме есть подчиненная таблица, на основе перекрестного запроса. Перекрестный запрос необходим, чтобы в одном столбце были данные период/тип и значение сумма (важно, что в таком формате должны быть данные в подчиненной таблице). Вопрос: Поиск в форме очень долго обновляет (10-12 сек.), как можно данный процесс улучшить? Пробовал вставить обычный запрос (выборка), обновляет мгновенно.

Вставил пример,для наглядности.

PS В примере поиск в форме корректно работает, но вот если заполнить "итого база" и "справочник" данными (более 100тыс.строк), то появляются тормоза при поиске.

Заранее благодарен
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721881
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,
Какие задачи выполняет Ваша БД-не понял для чего создается эта база
Убедительная просьба опишите задачи которые Вы решаете типа:
-вести учет клиентов
-их займы
-учет их платежей (как производится оплата)
-и т.д
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721882
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если четко не определить задачи БД создавать таблицы и формы рано
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721890
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Есть итого база, где ведется учет по клиентам и вся доп. инфо. о клиентах(вообщем оч. много столбцов)))
Есть справочник, где храниться только история о платежах клиента тип/период/сумма.
Есть форма, куда для удобства изменения данных в справочнике, заносятся данные по изменению суммы/периода/типа. Обязательно, в форме нужна таблица со столбцами из итого база и справочника и для удобства восприятия информация и экономии места в таблице нужно чтобы в названии столбца было инфо по периоду и типу (2009карта, 2009наличные, 2010карта и т.д.), а значение стояла сумма.

Все это сделано, все работает, НО т.к. перекрестный запрос используется в качестве источника данных для формы, форма работает ОЧЕНЬ МЕДЛЕННО. Как в таком случае быть?
Я уже всю голову сломал, пока вижу один выход сводная таблица, но там визуализация данных хуже, хочется сделать так как в примере и без тормозов. Есть какие-нибудь идеи?

Заранее благодарю за совет
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721896
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,
Вы про индексы и ключевые поля чего-нибудь слышали?
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721900
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nord-woolf,
Слышал, прошу прощение. Конечно, в примере который выложил забыл поставить, в итого базе ключевое поле на код и индекс. В справочнике помимо индекса тип/код/период, стоит еще отдельно на код.

ВСЕ РАВНО, форма ТОРМОЗИТ(((
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721901
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А про типы данных полей?
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721904
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nord-woolf,
Можно пояснить?
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721905
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С какой целью в таблице "Справочник" поля "период" и "сумма" имеют тип данных "Двойное с плавающей точкой"?
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721912
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nord-woolf,

Согласен, не нужно! Изменил на "Длинное целое", тормоза остались. Итого база и справочник имеют более 100тыс. строк. К сожалению, но проблему не решило.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721917
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,
-в справочниках ничего исправлять не надо крайне нежелательно
-списки значений в поляхСоСписком желательно заменить на таблицы-справочники (разберитесь что такое справочник)
-к тому что набросал добавьте поиск по клиенту или по договору. В таблицу платежи, на день платежа, можно добавлять запись с задолженностью (добавить в таблицу поле "долг" и заносить в него автоматически подсчитанную задолженность,если выплата не ежемесячная, то отражать это в договоре, добавив в соответствующую таблицу нужное поле-всяких нюансов много и они известны только разработчику-Вам) Не исправляйте существующие записи-лишаетесь истории. Рекомендую задуматься-форма работает медленно не потому ли, что структура какая-то левая (нахвиг при нормальной структуре в подчиненной форме источник перекрестный запрос)
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721918
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если предположить, что все типы данных полей таблиц обрели свои "кошерные" значения,
индексы и ключи наложены должным образом,
следующим этапом ускорения будет перенос наложения условий ограничения выборки
из перекрестного запроса в базовый запрос - источник для перекрестного запроса.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721919
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721922
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nord-woolf,
Не совсем понял,"следующим этапом ускорения будет перенос наложения условий ограничения выборки
из перекрестного запроса в базовый запрос - источник для перекрестного запроса."
Как это можно реализовать на моем примере? Можно привезти пример в прикрепленном файле или по конкретней описать.

Заранее благодарю
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721925
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вашем примере вы применяете условия ограничения выборки к результату работы перекрестного запроса (Sub show_result).
Я же предлагаю сначала отобрать нужные записи в "Запрос1" ( ... FROM <здесь запрос с WHERE> ... ),
а затем, ограниченный набор трансформировать.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721932
Pashy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nord-woolf,

Прошу прошение, не понимаю, как это можно реализовать на практике
Получается сначала нужно делать запрос, что-то типо:
1."select * from [Запрос1] where [Запрос1].[Период] =" & Me.Период1.Value & " and [Запрос1].[Тип] ='" & Me.Тип1.Value & "'"
а потом, типо
2. TRANSFORM Sum(Справочник.Сумма) AS [Sum-Сумма]
SELECT [итого база].[Код клиента], [итого база].Клиент, [итого база].Регион, [итого база].поле4, [итого база].поле5
FROM [итого база] LEFT JOIN Справочник ON [итого база].[Код клиента] = Справочник.[Код клиента]
GROUP BY [итого база].[Код клиента], [итого база].Клиент, [итого база].Регион, [итого база].поле4, [итого база].поле5
PIVOT [период] & [тип];

Если не верно, можно поправить мой запрос.
...
Рейтинг: 0 / 0
Перекрестный запрос
    #38721952
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashy,

подозреваю, что у вас 100т превращаются в 500т

пристыковка по 1 полю,[Код клиента]

Код: sql
1.
FROM [итого база] LEFT JOIN Справочник ON [итого база].[Код клиента] = Справочник.[Код клиента]



группировка по 5 полям

Код: sql
1.
GROUP BY [итого база].[Код клиента], [итого база].Клиент, [итого база].Регион, [итого база].поле4, [итого база].поле5



или [итого база].Регион, [итого база].поле4, [итого база].поле5 однозначны по коду клиента
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перекрестный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]