Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.14;
Скачать: CL | DM;

Вниз

Упорядочение по возрастанию в 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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.021 c
15-1223538701
shlst
2008-10-09 11:51
2008.12.14
ACHI boot manager - что бы работал, подскажите)


15-1223818673
Eraser
2008-10-12 17:37
2008.12.14
Как обойти баг в Delphi XML Documentation?


2-1226048524
Костик
2008-11-07 12:02
2008.12.14
Консольное приложение


2-1225530092
Проходящий
2008-11-01 12:01
2008.12.14
Использование агр.ф-ций на временных таблицах в IB


2-1225881533
J.S.
2008-11-05 13:38
2008.12.14
упорядочить строки массива