powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как такое сделать? (вопрос про crosstab)
24 сообщений из 24, страница 1 из 1
Как такое сделать? (вопрос про crosstab)
    #32536444
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня данные в запросе представлены вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Гуппа1  Данные1
Гуппа1  Данные2
Гуппа1  Данные3
Гуппа1  Данные4
Гуппа2  Данные1
Гуппа2  Данные2
Гуппа2  Данные3

А нужно сделать так:

Код: plaintext
1.
2.
Группа1  Данные1  Данные2  Данные3  Данные4
Группа2  Данные1  Данные2  Данные3

Как такое осуществить?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536451
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crosstab Queries тебе в руки ;)
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536477
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в MSSQL такое сделать можно, а можно ли в Аксе - не знаю :(

Хотя и в аксе можно :)

в модуле:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function myF(byval g as string) as string
Dim ret as String
Dim rs as RecordSet
Dim strsql as string
  strsql = "Select f2 from tbl1 where f1 = '" & g & "';"
  Set rs = CurrentDB.Openrecordset(strsql)

  ret = ""
  while not rs.eof
     ret = ret & " " & rs("f2")
     rs.movenext
  wend

  rs.close
  set rs = nothing

  myF = TRIM(ret)
End Function

Запрос:
Код: plaintext
1.
2.
Select f1, myF(f1) as s_f2
from tbl1
group by f1

?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536480
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или я что-то не так понял?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536527
Alexander Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там все проще (хотя для кого как мне кажется что Case оператор в SQL удобнее) построителем запросов делаеш перекрестный запрос.
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536532
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
папаримский. ты меня иногда удивляишь отсталыми понятиями.
давно уже (4 года назад еще) сделали рекордсет в одну строку

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT DISTINCT Клиент FROM Клиенты ORDER BY Клиент;", CurrentProject.Connection
Список1.RowSource = rst.GetString(adClipString, , ";", ";")
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536534
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для перекрестного запроса требуется три поля, а у меня только два есть
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536536
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпапаримский. ты меня иногда удивляишь отсталыми понятиями.
давно уже (4 года назад еще) сделали рекордсет в одну строку

4 года назад я как раз в Армии служил, мож что и пропустил :)
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536656
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome

Акцес завис нафиг, в запросе по второму полю #Ошибка

2 ищ

в списке только один столбец
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536686
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторАкцес завис нафиг, в запросе по второму полю #Ошибка
Усе прекрасно работает (проверил на Аске 97)

Кстати:
- версия Акса?
- есть ли ключ в таблице?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536688
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да - и типы полей плиз?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536698
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поля текстовые, ключа нет
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536709
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторключа нет
Ага - и поди туева хуча записей?
А помочь СУБД, ключик сделать?
Что за странная привычка делать таблы без ключей, а потом на призводительность жаловаться?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536714
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица пробная была, я на ней просто проверял.
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536728
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А пробный таблицы, что не "люди", им на ключи по барабану?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536742
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похожий топик:
/topic/84412
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32536748
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица вот такая была, может чуть поболее, ни какой хучи записей

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Гуппа1  Данные1
Гуппа1  Данные2
Гуппа1  Данные3
Гуппа1  Данные4
Гуппа2  Данные1
Гуппа2  Данные2
Гуппа2  Данные3


...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537216
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал перекрестным запросом. На его основе сделал подчиненную форму.
Теперь беда она не хочет связываться с главной. Это наверное из-за запроса.
Пишет ошибку:
'Forms!frmFirst![OKPO]' не распознается ядром базы данных Microsoft Jet как допустимое имя поля или выражение.

А запрос такой был у меня:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TRANSFORM Max(OKVED.KOD_OKVED) AS LL
SELECT OKPODBF.OKPO
FROM ((OKPODBF INNER JOIN REGEGRUL ON OKPODBF.REGN = REGEGRUL.OGRN_N)
INNER JOIN UL ON REGEGRUL.ID_NIK = UL.ID_NIK) INNER JOIN OKVED ON UL.ID_NIK = OKVED.ID_NIK
WHERE (((OKPODBF.OKPO)=[Forms]![frmFirst]![OKPO]))
GROUP BY OKPODBF.OKPO
PIVOT OKVED.KOD_OKVED;

...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537239
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PARAMETERS [Forms]![ИмяФормы]![ИмяКонтрола] Text, ... ;

и далее по тексту. Скопировано из: /topic/45634&pg=4
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537276
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, а что в данном случае Text?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537289
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это тип данных. Возможно, этот пример годится только приблизительно.
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537295
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не работает
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537407
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какую функцию можно написать для передачи параметра?
...
Рейтинг: 0 / 0
Как такое сделать? (вопрос про crosstab)
    #32537416
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Любую функцию. Пишем в модуле:

function XXX()
XXX=Forms!frmFirstOKPO
end function

- и после этого в запросе вместо Forms!frmFirstOKPO можно ставить XXX().
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как такое сделать? (вопрос про crosstab)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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