Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Вниз

Пронумеровать строки в ДБГриде, причем когда я делаю сортировку..   Найти похожие ветки 

 
Relaxxx   (2003-09-03 14:48) [0]

Пронумеровать строки в ДБГриде, причем когда я делаю сортировку по какому то полю это поле не сортируется как все остальные. Да и RowNum не подходит у веня версия оракла старовата и он неправельно работает когда используеш ордер бай


 
Vlad   (2003-09-03 14:56) [1]

select rownum, a.* from (select ......... order by.....) a
и версия оракла тут не причем.


 
DenK_vrtz   (2003-09-03 14:58) [2]

Как так <RowNum не подходит>?
Какая версия Oracle?
Запрос?


 
Relaxxx   (2003-09-03 15:12) [3]

Версия Оракл 8.0.5, что RowNum сдесь с вложеным запросом не пашет ет точно, я спрашивал на sql.ru в форуме Оракл, прявельно RowNum работает в 8,5 и выше, а у меня когда я пишу

select rownum, a.* from (select Date_chet FROM mon Date_chet ORDER BY Date_chet) a
мне пишет ошибку перед ORDER BY, мол отсутствует правая скобка, так что РоуНум я думаю отпадает


 
Relaxxx   (2003-09-03 15:19) [4]

Так как мне обойтись без роунум, я как то в Делфи дтнамически создавать поле которое нумеруется??


 
Relaxxx   (2003-09-03 16:16) [5]

АУ народ, вы что незнаете????????????????????


 
DenK_vrtz   (2003-09-03 16:24) [6]

Много данных в запросе?
Если нет, сделай временную таблицу, что ли, такой же структуры + поле "№ п/п" и перекинь в нее данные с заполнением этого поля.
А лучше версию Oracle другую поставь :-)


 
Relaxxx   (2003-09-03 16:26) [7]

Ясно, данных ДОФИГА, а нащет новой версии Оракл, то в ближайшем будущем я так и сделаю, но все равно жаль что динамически это никак нельзя реализовать :-(


 
Sergey13   (2003-09-04 10:32) [8]

2Relaxxx © (03.09.03 16:26) [7]
>Ясно, данных ДОФИГА, а нащет новой версии Оракл, то в ближайшем будущем я так и сделаю,
И ничего не добьешся. Rownum показывает номер строки при ВЫБОРЕ записей ДО сортировки. И версия тут ни при чем. На 8.1.6 тока щас проверил.

>но все равно жаль что динамически это никак нельзя реализовать :-(
Почему? Vlad © (03.09.03 14:56) [1] правильно сказал, а свой запрос исправь
>select rownum, a.* from (select Date_chet FROM mon Date_chet ORDER BY Date_chet) a
и все будет ОК.
Тока остается вопрос - а нафига это все надо? В смысле зачем вообще этот номер?


 
Vlad   (2003-09-04 10:44) [9]

Sergey13 ©, что-то не понятно, что конкретно ему нужно исправить ?
Ты вроде тот же запрос написал что и он ?
А по поводу RowNum, если мне не изменяет память, я его еще на семерке использовал и вроде глюков не наблюдал...


 
DenK_vrtz   (2003-09-04 10:51) [10]

Sergey13 ©,
Vlad ©,
собственно говоря сам не понимаю почему, но в 8.0.5 на такую конструкцию действительно ругается, а 8.1.6 все работает без вопросов


 
Vlad   (2003-09-04 10:56) [11]

DenK_vrtz © (04.09.03 10:51) [10]
К сож. нет под рукой 8.0.5.
A ты не мог бы проверить тоже, но без RowNum, будет работать ? Т.е. хотелось бы понять, в чем ошибка - в самой конструкции или в использовании RowNum ?


 
DenK_vrtz   (2003-09-04 11:07) [12]

Vlad ©, все дело похоже в order by

Написал запросы вида:
(все в 8.0.5)
select rownum, поле from (select поле from таблица) - работает,
select поле from (select поле from таблица) - работает,
select rownum, поле from (select поле from таблица order by поле) - не работает
select поле from (select поле from таблица order by поле) - не работает


 
Sergey13   (2003-09-04 11:09) [13]

2Vlad © (04.09.03 10:44) [9]
>что-то не понятно, что конкретно ему нужно исправить ?
Удалить из запроса выделенное мной Date_chet. Или пояснить мне что это такое. 8-)


 
Vlad   (2003-09-04 11:15) [14]

Sergey13 © (04.09.03 11:09) [13]
Зачем ? Это простой алиас таблицы, что тут такого ?
А то что он совпадает с именем поля - так это ничего страшного.


 
Vlad   (2003-09-04 11:26) [15]

>DenK_vrtz © (04.09.03 11:07) [12]
А если попробовать индекс вместо ORDER BY использовать ? (если он есть конечно)
select rownum, a.* from (select /*+index(mon By_Date_CHET)*/ Date_chet
FROM mon) a
Как думаешь, сработает ?


 
Sergey13   (2003-09-04 11:34) [16]

Vlad © (04.09.03 11:15) [14]
>А то что он совпадает с именем поля - так это ничего страшного.
Совпадающий с именем поля? Странный алиас, ИМХО.
Хотя.... щас попробовал - на 8.1.6 отработало. Странно. 8-( Может на эту "странность" 8.0.5 и ругается? Проверить не начем.

Блин, DenK_vrtz © (04.09.03 11:07) [12] уже попробовал. 8-)


 
Sergey13   (2003-09-04 11:43) [17]

2Vlad © (04.09.03 11:26) [15]
>Как думаешь, сработает ?
ИМХО, может помочь, но гарантии никто не даст. Помню обсуждение (не здесь) о сортировках внутри веток в дереве. Тогда сошлись на этом.
Остается вопрос - зачем все это надо, причем с такими извратами.


 
Vlad   (2003-09-04 11:43) [18]

Sergey13 © (04.09.03 11:34) [16]
Ну да, нехорошо конечно давать такие алиасы. Я бы так не делал.
Но тем не менее, Оракл проглатывает.
Вобщем, Relaxxx ©, уважаемый, сдается мне что тебе нужно создать индекс по полю Date_chet (если такового нет) и использовать конструкцию, приведенную мной в [15]. Должно работать.


 
Vlad   (2003-09-04 11:45) [19]

>Sergey13 © (04.09.03 11:43) [17]
Хинты в оракле, конечно скользкая штука....
Но если есть гарантия что никто не удалит индекс, то должно работать корректно.


 
DenK_vrtz   (2003-09-04 11:51) [20]

Vlad ©,
Sergey13 ©,
попробовал я конструкцию вида
select rownum, a.* from (select /*+index(mon By_Date_CHET)*/ Date_chet
FROM mon) a, в 8.0.5 работает, но
записи почему то не сортирует

Почему?


 
Vlad   (2003-09-04 11:56) [21]

>DenK_vrtz © (04.09.03 11:51) [20]
Думаю что нет индекса с именем By_Date_Chet


 
DenK_vrtz   (2003-09-04 11:59) [22]

Индекс есть, НО, записи в запросе сортируются по значению primary key


 
Vlad   (2003-09-04 12:04) [23]

Гы :) Думаю что-то в настройках оптимизатора...
А если просто попробовать:
select /*+index(mon By_Date_CHET)*/ Date_chet FROM mon
Тоже не будет сортировать ?
План запроса что говорит ?


 
Vlad   (2003-09-04 12:06) [24]

Самое интересное что у меня на девятке такая конструкция пашет :)


 
DenK_vrtz   (2003-09-04 13:49) [25]

Vlad ©, продолжаем разговор :-)
Так вот. Я вот одного не могу понять почему на девятке это пашет?
Спросил у администратора базы и вместе с ним литературу глянули.
Конструкция или хинт /*+index(tablename index)*/, говорит о том, чтобы просматривать таблицу с помощью установленного индекса, но не упорядочивать данные в зависимости от него!
Может в девятке, что-то поменялось?!
План ничего дельного не показывает, типа выбрал все и все!

Да, еще. У тебя случайно нет литературы в электронном виде (желательно на русском) с примерами по работе с DOA?
Если есть, скинь на мыло, пожалуйста, очень надо!


 
Sergey13   (2003-09-04 13:49) [26]

2Vlad © (04.09.03 12:04) [23]
А вот интересно - если по умолчанию стоит RULE, то хинты вообще работать будут? Ини же вроде только для стоимостного предназначены. Или я ошибаюсь?


 
Sergey13   (2003-09-04 13:58) [27]

2DenK_vrtz © (04.09.03 13:49) [25]
Я тебе выслал доку по v3.4. Придет попозже - почта у меня так работает. 8-(

А вот еще интересно, а в случае с одинаковым значением индексного поля порядок чем будет задаваться? И будет ли он постоянным?

А вообще мой вопрос к автору остается в силе - НА ФИГА?

ЗЫ: А Relaxxx наверное расслабляется. 8-)


 
DenK_vrtz   (2003-09-04 14:03) [28]

Sergey13 ©, спасибо огромное!!!


 
Vlad   (2003-09-04 14:03) [29]

>DenK_vrtz © (04.09.03 13:49) [25]
Чесно сказать, я не был уверен что в восьмерке это запашет.
Но в девятке сортирует именно в порядке индекса. А план должен показать - подцепил он этот индекс или нет.
А насчет DOA, спец. литературы никакой нет, все осваивал по хелпу. Тут вобщем достаточно подробно все описано. Одна беда - open source нет !
Но если найду чего - пришлю.

Sergey13 © (04.09.03 13:49) [26]
>Чесно говоря с оптимизатором не оч. знаком. Поэтому не могу сказать точно.


 
Sergey13   (2003-09-04 14:16) [30]

Vlad © (04.09.03 14:03) [29]
> Одна беда - open source нет !
Тебе open именно или просто source? 8-)
Глянь на http://oraclebones.narod.ru/


 
Vlad   (2003-09-04 14:18) [31]

Sergey13 © (04.09.03 14:16) [30]
Спасибо, посмотрю.
Нда.. кстати, я тут вспомнил о изначальном вопросе. Допустим сортировка с помощью индекса прокатит. Но кажись парню нужно сортировать по разным полям таблицы, возможно даже по всем. ИМХО, создавать индексы для всех полей - жирно будет... :-)
Резюмировав, могу предположить, что в ДатаСете без извращений нумеровать строчки не выйдет.
Т.е. можно конечно в SELECT"е дать фиктивное поле со значением Null, а на клиенте после открытия датасета в цикле проставить ему номера. Но это через "одно место".


 
Sergey13   (2003-09-04 14:27) [32]

2Vlad © (04.09.03 14:18) [31]
>Нда.. кстати, я тут вспомнил о изначальном вопросе.
Дык я уже раз пять спрашивал автора - НА ФИГА? Боюсь что ответ будет (если будет) - так юзер хочет "как в экселе", а зачем не говорит.


 
DenK_vrtz   (2003-09-04 14:28) [33]

Интересно, почему Relaxxx © молчит!? Думает наверно! :-)


 
Vlad   (2003-09-04 14:38) [34]

Sergey13 ©, ты Direct Oracle Access 3.4.6.4 пробовал ставить, скачанный с сайта, который ты привел ?
У меня при запуске инсталляции I/O error возникает.
А source я имел ввиду Oracle.pas и OracleData.pas
Вот в 3.4.3 их нет. Есть только *.DCU


 
Sergey13   (2003-09-04 14:53) [35]

2Vlad © (04.09.03 14:38) [34]
>ты Direct Oracle Access 3.4.6.4 пробовал ставить, скачанный с сайта, который ты привел ?
Нет. Она там только на Д6. У меня Д5 и я ставил 3.4.6.1.

>А source я имел ввиду Oracle.pas и OracleData.pas
У меня есть.


 
roottim   (2003-09-04 14:59) [36]

http://www.sql.ru/faq/faq_topic.aspx?fid=132
а order by в подзапросе действительно работает сравнительно недавно


 
DenK_vrtz   (2003-09-04 15:02) [37]

К вопросу о DOA.
Никак не могу понять(может совсем отупел), как пользоваться обычными методами Insert, Edit у OracleDataSet(или перевести его в эти состояния, постоянно пишет, что запрос в read-only)? или обратиться к таблице(представлению) как в TTable? Как выполнить функцию, которая возвращает курсор или работать с BLOB-полями?

Sergey13 ©, почта не пришла! :-(


 
Sergey13   (2003-09-04 15:06) [38]

2DenK_vrtz © (04.09.03 15:02) [37]
Добавь в строку запроса ROWID редактируемой таблицы типа
select a.*,a.rowid from tabla a
запрос станет редактируемым.


 
Vlad   (2003-09-04 15:09) [39]

>DenK_vrtz © (04.09.03 15:02) [37]
Чтобы датасет был НЕ ReadOnly нужно чтоб он имел rowid. Соотв. если запрос сложный, те. сост. из неск-ких таблиц, то такой набор не будет иметь rowid. И DOA сам не сможет определить какую именно запись нужно апдейтить. Поэтому на событие OnApplyRecord (см хелп) нужно явно указывать как и что апдейтить. И если сказать Applied:=true, то DOA понимает что ты сам задал условие апдейта, и убирает ReadOnly с датасета.
Немного коряво объяснил, ну ладно..


 
Vlad   (2003-09-04 15:11) [40]

Sergey13 © (04.09.03 15:06) [38]
А если запрос сложный, то rowid не будет.
Есть вариант добавить фиктивный rowid. Напр.
Select ChartoRowid(null) "rowid", .........



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.011 c
3-82124
kostik78ua
2003-09-04 11:50
2003.09.25
аналог gen_id в Interbase для MSSQL


1-82307
ikivio
2003-09-13 21:01
2003.09.25
Проблемы с SW_RESTORE.


1-82218
First_May
2003-09-15 16:07
2003.09.25
Свойство TComponent


7-82508
Jumbo
2003-07-13 14:26
2003.09.25
Windows RUS/ENG


4-82542
xZero
2003-07-23 23:28
2003.09.25
.LNK файлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский