Форум: "Базы";
Текущий архив: 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