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

Вниз

Упорядочение по возрастанию в IBTable   Найти похожие ветки 

 
grav   (2008-05-15 12:03) [0]

Есть таблица с примари ключом ID. С помощью IBTable данные грузятся в DBGrid. Записи в гриде отображаются по убыванию ID, т.е. 9, 8,7,6...
А хотелось бы 1,2,3,...


 
Sergey13 ©   (2008-05-15 12:12) [1]

> [0] grav   (15.05.08 12:03)
> С помощью IBTable

Что заставляет использовать сей компонент? Есть и более продвинутые, например IBDataSet. Заботать с SQL сервером значительно удобнее и правильнее через этот SQL.


 
grav   (2008-05-15 12:46) [2]


> Sergey13 ©   (15.05.08 12:12) [1]

мастер-детайл заставляет, удобно.
Неужеле так плохо все и нет возможности упорядочить по возрастанию?


 
Mery   (2008-05-15 13:13) [3]

>мастер-детайл заставляет, удобно.
Как раз  с помощью IBDataSet это удобнее. И его запросе можно прописать
order by ....., который и отсортирует как надо. А с IBTable прийдётся создавать индексы.


 
grav   (2008-05-15 14:50) [4]


> Как раз  с помощью IBDataSet это удобнее

Уж больно много запросов писать надо.
Я бы лучше индексы создал, вот только не знаю куда их прикрутить.
Поле IndexName занято, т.к. используется IndexFieldName для мастер-детайл.


 
Sergey13 ©   (2008-05-15 14:53) [5]

> [4] grav   (15.05.08 14:50)
> Уж больно много запросов писать надо.

Это если книг никаких и прочей литературы перед этим не читать. 8-)


 
grav   (2008-05-15 15:01) [6]

Читаю справку по DefaultIndex

Description

When this property is set to false, an ORDER BY clause is not used when opening a table on the server. When DefaultIndex is true, the data is ordered based on the primary key or a unique index when opening the table. DefaultIndex defaults to true.

Удаляю примари кей. Отображает в гриде вообще фигню, типа 9,10,8. Откуда?
Снова создал примари кей. То же самое, не поменялось ничего. Почему?


 
grav   (2008-05-15 15:03) [7]


> Sergey13 ©   (15.05.08 14:53) [5]

Написать запросы на выборку мастер-детайл я и без книг могу. Но надо еще и на вставку, обновление и удаление. Лениво как то, если есть готовые компоненты.


 
Sergey13 ©   (2008-05-15 15:06) [8]

> [6] grav   (15.05.08 15:01)
> Почему?

Потому что предпочитаешь сомнительные эксперименты чтению литературы.
Твой ТТабл фактически транслируется в запрос
select * from table
(просто сервер ничего другого не понимает)
Это запрос БЕЗ сортировки. Порядок записей при таком запросе ВОБЩЕ непредсказуем, потому что случаен. То, что он повторяется - частный случай.


 
Sergey13 ©   (2008-05-15 15:07) [9]

> [7] grav   (15.05.08 15:03)
> Лениво как то

Это серьезный аргумент. Только обычно, если самому что-то делать ЛЕНИВО, надо другим за выполняемую за тебя работу ПЛАТИТЬ.


 
Sergey13 ©   (2008-05-15 15:09) [10]

> [7] grav   (15.05.08 15:03)
> Но надо еще и на вставку, обновление и удаление.

Это опять же говорит о нелюбви к чтению. Эти запросы генерируются автоматически с минимальным участием программиста (на уровне 2-3 кликов мышкой).


 
grav   (2008-05-15 15:14) [11]


> Sergey13 ©   (15.05.08 15:06) [8]


> Твой ТТабл фактически транслируется в запрос
> select * from table

В IBExpert такой запрос выдает нормальный порядок 1,2,3,4,5.... Хотя бы потому, что вводились они последовательно с использованием генератора. И 5 никак не может попасть вперед 2 или 3. И уж тем более 1 не может отобразится после 5.


 
Sergey13 ©   (2008-05-15 16:30) [12]

> [11] grav   (15.05.08 15:14)
> И 5 никак не может попасть вперед 2 или 3.

Ну если там всего 5 записей, то может и так - они все будут лежать на одной странице (вроде так это называется - что-то запамятовал) файла БД. Как только этих страниц станет больше - уже не так все очевидно. А если с таблицей идет интенсивная работа с удалением/вставкой - шансы еще более уменьшаются.


 
grav   (2008-05-15 16:52) [13]

Вообщем нашел компромис. У меня было 8 IBTable для трех гридов и кучи DBEdit"ов в двух группах. Три IBTable заменил на IBDataSet, три IBTable стали  не нужны (были поля lookup, стали JOIN). Два IBTable осталось.
В итоге один грид и DBEdit"ы можно редактировать, еще с двумя завтра разберусь :)
Спасибо


 
antoxa2005   (2008-05-15 18:07) [14]

ЕСЛИ БУДЕШЬ ИСПОЛЬЗОВАТЬ IBTABLE, ТО КОНЕЦ ТВОИМ РАЗРАБОТКАМ!!!

ИСПОЛЬЗУЙ ТОЛЬКО IBDataSet !!!

Никаких запросов там писать не надо, выбирай из конструктора, а когда поймешь, что ручками, в данном случае, удобнее, легче и больше возможностей, вот тогда и попрет!!!

весь запрос TTable-> IBDataSet это: select * from table1

мастер-детайл - пожалуйста, order by - пожалуйста и запросы Insert? UpDate, Delete формируются автоматически и генераторы ID опрашиваются автоматически... Что же тебе еще надо???


 
MsGuns ©   (2008-05-16 08:15) [15]

>grav

Надо еще в бубен побить,- тогда точно заработает


 
grav   (2008-05-16 14:33) [16]

простенький запрос в InsertSQL
insert into tbl1 (ID_ORG,KOD,NAME) values (:ID_ORG,:KOD,:NAME)
В таблице есть еще поле ID, но оно гнератор, с ним все ок.
Поле ID_ORG - это поле по которому идет связь мастер-детайл. Откуда его брать для вставки записей? Что поменять в запросе?


 
Sergey13 ©   (2008-05-16 14:41) [17]

> [16] grav   (16.05.08 14:33)
> Откуда его брать для вставки записей?

Из того датасета, на который ссылаешься естественно.


 
grav   (2008-05-16 14:53) [18]


> Из того датасета, на который ссылаешься естественно.

Это понятно, а как его вписать (если пользоваться встроенным в компонент редактором)? Или в какое место, если через параметры?


 
grav   (2008-05-16 16:14) [19]


> grav   (16.05.08 14:33) [16]

Ничего не выходит.
Пытался этот ID_ORG в событие BeforeInsert вставить
BuildDS.ParamByName("ID_ORG").AsString:=OrganDS.fieldByName("ID").AsString;
Пишет поле ID_ORG не найдено.
Где его задать то?


 
Sergey13 ©   (2008-05-16 16:22) [20]

> [19] grav   (16.05.08 16:14)

Давай нормальный код. Что за кусочки! Давай всю процедуру.


 
grav   (2008-05-16 16:31) [21]

insertSQL в BuildDS (detail)
insert into tbl1 (ID,ID_ORG,KOD,NAME) values (:ID,:ID_ORG,:KOD,:NAME)
Поля KOD и NAME в таблице, с ними все ОК, поле ID генератор. С ним тоже все ок.
ID_ORG - поле ID в OrganDS (master)

Вопрос: как вставить ID_ORG?


 
Sergey13 ©   (2008-05-16 16:39) [22]

> [21] grav   (16.05.08 16:31)

Я тебе говорю код настоящий давай, а не его описание.


 
grav   (2008-05-16 16:47) [23]

Это и есть настоящий. Нет там ничего больше.


 
Виталий Панасенко(дом)   (2008-05-16 19:32) [24]

понтов то....


 
grav   (2008-05-16 20:16) [25]


> Виталий Панасенко(дом)   (16.05.08 19:32) [24]

Это вы к чему?


 
Виталий Панасенко(дом)   (2008-05-16 23:28) [26]


> grav   (16.05.08 20:16) [25]
>
>
> > Виталий Панасенко(дом)   (16.05.08 19:32) [24]
>
> Это вы к чему?

к этому

> grav   (15.05.08 15:03) [7]
>
>
> > Sergey13 ©   (15.05.08 14:53) [5]
>
> Написать запросы на выборку мастер-детайл я и без книг могу.
>  Но надо еще и на вставку, обновление и удаление. Лениво
> как то, если есть готовые компоненты.


 
Amoeba ©   (2008-05-18 00:45) [27]


> grav   (16.05.08 20:16) [25]

Мать-перемать! Тебе уже все разжевали и в рот положили, дубина (да простят меня модераторы!), в
> antoxa2005   (15.05.08 18:07) [14]


 
Mery   (2008-05-19 08:30) [28]

>grav
Про организацию  мастер-деталь связей в IBDataSet очень доступно изложено на Ibase.ru


 
grav   (2008-05-19 15:00) [29]


> Mery   (19.05.08 08:30) [28]

Читал уже. Там и вычитал, что параметры в insertSQL ссылаются на поля в selectSQL.
Как мне при вставке вставить в SQL запрос (insertSQL) поле ID из мастер таблицы?


 
grav   (2008-05-19 15:02) [30]


> Amoeba ©   (18.05.08 00:45) [27]

Где уж разжевали то?
Ну напишите для примера запрос для InsertSQL в котом показана вставка значения из другого IBDataSet


 
Sergey13 ©   (2008-05-20 08:04) [31]

> [30] grav   (19.05.08 15:02)
> Ну напишите для примера запрос для InsertSQL в котом показана
> вставка значения из другого IBDataSet

Для запроса в InsertSQL абсолютно фиолетово откуда берутся вставляемые данные. Ты должен работать методами ДАТАСЕТА INSERT, DELETE, EDIT и POST. А датасет САМ подставит все что нужно куда надо.


 
grav   (2008-05-20 09:32) [32]

Я другую тему заведу. Эту ветку закроем. Спасибо всем.


 
Виталий Панасенко   (2008-05-20 21:57) [33]


> grav   (20.05.08 09:32) [32]
> Я другую тему заведу. Эту ветку закроем. Спасибо всем.

А смысл ? заводить...если все равно, окромя понту....



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

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

Наверх





Память: 0.52 MB
Время: 0.007 c
15-1223143647
Германн
2008-10-04 22:07
2008.12.14
Пополнение кошелька на WebMoney


11-1196116498
Донской
2007-11-27 01:34
2008.12.14
BOLD + KOL


15-1223422467
Real
2008-10-08 03:34
2008.12.14
TEmbeddedWB - ошибка установки


15-1223848139
KilkennyCat
2008-10-13 01:48
2008.12.14
Семен Сорокин, урррра!


1-1203606195
Chysti
2008-02-21 18:03
2008.12.14
Требуется сменить названия кнопок in MessageDLG();





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский