Конференция "Базы" » Упорядочение по возрастанию в IBTable [D7, IB6.x, FireBird 1.5]
 
  • grav (15.05.08 12:03) [0]
    Есть таблица с примари ключом ID. С помощью IBTable данные грузятся в DBGrid. Записи в гриде отображаются по убыванию ID, т.е. 9, 8,7,6...
    А хотелось бы 1,2,3,...
  • Sergey13 © (15.05.08 12:12) [1]
    > [0] grav   (15.05.08 12:03)
    > С помощью IBTable

    Что заставляет использовать сей компонент? Есть и более продвинутые, например IBDataSet. Заботать с SQL сервером значительно удобнее и правильнее через этот SQL.
  • grav (15.05.08 12:46) [2]

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

    мастер-детайл заставляет, удобно.
    Неужеле так плохо все и нет возможности упорядочить по возрастанию?
  • Mery (15.05.08 13:13) [3]
    >мастер-детайл заставляет, удобно.
    Как раз  с помощью IBDataSet это удобнее. И его запросе можно прописать
    order by ....., который и отсортирует как надо. А с IBTable прийдётся создавать индексы.
  • grav (15.05.08 14:50) [4]

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

    Уж больно много запросов писать надо.
    Я бы лучше индексы создал, вот только не знаю куда их прикрутить.
    Поле IndexName занято, т.к. используется IndexFieldName для мастер-детайл.
  • Sergey13 © (15.05.08 14:53) [5]
    > [4] grav   (15.05.08 14:50)
    > Уж больно много запросов писать надо.

    Это если книг никаких и прочей литературы перед этим не читать. 8-)
  • grav (15.05.08 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 (15.05.08 15:03) [7]

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

    Написать запросы на выборку мастер-детайл я и без книг могу. Но надо еще и на вставку, обновление и удаление. Лениво как то, если есть готовые компоненты.
  • Sergey13 © (15.05.08 15:06) [8]
    > [6] grav   (15.05.08 15:01)
    > Почему?

    Потому что предпочитаешь сомнительные эксперименты чтению литературы.
    Твой ТТабл фактически транслируется в запрос
    select * from table
    (просто сервер ничего другого не понимает)
    Это запрос БЕЗ сортировки. Порядок записей при таком запросе ВОБЩЕ непредсказуем, потому что случаен. То, что он повторяется - частный случай.
  • Sergey13 © (15.05.08 15:07) [9]
    > [7] grav   (15.05.08 15:03)
    > Лениво как то

    Это серьезный аргумент. Только обычно, если самому что-то делать ЛЕНИВО, надо другим за выполняемую за тебя работу ПЛАТИТЬ.
  • Sergey13 © (15.05.08 15:09) [10]
    > [7] grav   (15.05.08 15:03)
    > Но надо еще и на вставку, обновление и удаление.

    Это опять же говорит о нелюбви к чтению. Эти запросы генерируются автоматически с минимальным участием программиста (на уровне 2-3 кликов мышкой).
  • grav (15.05.08 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 © (15.05.08 16:30) [12]
    > [11] grav   (15.05.08 15:14)
    > И 5 никак не может попасть вперед 2 или 3.

    Ну если там всего 5 записей, то может и так - они все будут лежать на одной странице (вроде так это называется - что-то запамятовал) файла БД. Как только этих страниц станет больше - уже не так все очевидно. А если с таблицей идет интенсивная работа с удалением/вставкой - шансы еще более уменьшаются.
  • grav (15.05.08 16:52) [13]
    Вообщем нашел компромис. У меня было 8 IBTable для трех гридов и кучи DBEdit'ов в двух группах. Три IBTable заменил на IBDataSet, три IBTable стали  не нужны (были поля lookup, стали JOIN). Два IBTable осталось.
    В итоге один грид и DBEdit'ы можно редактировать, еще с двумя завтра разберусь :)
    Спасибо
  • antoxa2005 (15.05.08 18:07) [14]
    ЕСЛИ БУДЕШЬ ИСПОЛЬЗОВАТЬ IBTABLE, ТО КОНЕЦ ТВОИМ РАЗРАБОТКАМ!!!

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

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

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

    мастер-детайл - пожалуйста, order by - пожалуйста и запросы Insert? UpDate, Delete формируются автоматически и генераторы ID опрашиваются автоматически... Что же тебе еще надо???
  • MsGuns © (16.05.08 08:15) [15]
    >grav

    Надо еще в бубен побить,- тогда точно заработает
  • grav (16.05.08 14:33) [16]
    простенький запрос в InsertSQL
    insert into tbl1 (ID_ORG,KOD,NAME) values (:ID_ORG,:KOD,:NAME)


    В таблице есть еще поле ID, но оно гнератор, с ним все ок.
    Поле ID_ORG - это поле по которому идет связь мастер-детайл. Откуда его брать для вставки записей? Что поменять в запросе?
  • Sergey13 © (16.05.08 14:41) [17]
    > [16] grav   (16.05.08 14:33)
    > Откуда его брать для вставки записей?

    Из того датасета, на который ссылаешься естественно.
  • grav (16.05.08 14:53) [18]

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

    Это понятно, а как его вписать (если пользоваться встроенным в компонент редактором)? Или в какое место, если через параметры?
  • grav (16.05.08 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 © (16.05.08 16:22) [20]
    > [19] grav   (16.05.08 16:14)

    Давай нормальный код. Что за кусочки! Давай всю процедуру.
  • grav (16.05.08 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 © (16.05.08 16:39) [22]
    > [21] grav   (16.05.08 16:31)

    Я тебе говорю код настоящий давай, а не его описание.
  • grav (16.05.08 16:47) [23]
    Это и есть настоящий. Нет там ничего больше.
  • Виталий Панасенко(дом) (16.05.08 19:32) [24]
    понтов то....
  • grav (16.05.08 20:16) [25]

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

    Это вы к чему?
  • Виталий Панасенко(дом) (16.05.08 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 © (18.05.08 00:45) [27]

    > grav   (16.05.08 20:16) [25]

    Мать-перемать! Тебе уже все разжевали и в рот положили, дубина (да простят меня модераторы!), в
    > antoxa2005   (15.05.08 18:07) [14]
  • Mery (19.05.08 08:30) [28]
    >grav
    Про организацию  мастер-деталь связей в IBDataSet очень доступно изложено на Ibase.ru
  • grav (19.05.08 15:00) [29]

    > Mery   (19.05.08 08:30) [28]

    Читал уже. Там и вычитал, что параметры в insertSQL ссылаются на поля в selectSQL.
    Как мне при вставке вставить в SQL запрос (insertSQL) поле ID из мастер таблицы?
  • grav (19.05.08 15:02) [30]

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

    Где уж разжевали то?
    Ну напишите для примера запрос для InsertSQL в котом показана вставка значения из другого IBDataSet
  • Sergey13 © (20.05.08 08:04) [31]
    > [30] grav   (19.05.08 15:02)
    > Ну напишите для примера запрос для InsertSQL в котом показана
    > вставка значения из другого IBDataSet

    Для запроса в InsertSQL абсолютно фиолетово откуда берутся вставляемые данные. Ты должен работать методами ДАТАСЕТА INSERT, DELETE, EDIT и POST. А датасет САМ подставит все что нужно куда надо.
  • grav (20.05.08 09:32) [32]
    Я другую тему заведу. Эту ветку закроем. Спасибо всем.
  • Виталий Панасенко (20.05.08 21:57) [33]

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

    А смысл ? заводить...если все равно, окромя понту....
 
Конференция "Базы" » Упорядочение по возрастанию в IBTable [D7, IB6.x, FireBird 1.5]
Есть новые Нет новых   [134434   +28][b:0][p:0.001]