Конференция "Базы" » ClientDataSet [D7, FB2.1]
 
  • VikOss © (28.12.12 11:45) [20]

    > > Попробуйте настроить . 1 ClientDataset -мастер, второй,
    >  соответственно - деталь. Связь - по ключу, стандартно.
    > вопрос один: а нафига? оно мне зачем?
    > вопрос два: есть 2 варианта (писал выше) какой из них "стандартно"?
    >

    ??? Не понял немного. Что значит зачем? Что бы не вводить доп. признаков для фильтрации подчинённого, мастер итак знает какие детали нужны, да вот только не работает как надо.
  • sniknik © (28.12.12 11:46) [21]
    > мож кто разобрался.
    с ЧЕМ? проблема возможно у тебя только в голове. где инфа как ТЫ делаешь?
    какой у тебя запрос в "детали"? в мастере?
  • VikOss © (28.12.12 11:48) [22]

    > > вопрос два: есть 2 варианта (писал выше) какой из них
    > "стандартно"?

    Пользуется IB, связка настраивается в самих ClientDataSet.
  • VikOss © (28.12.12 11:49) [23]

    > с ЧЕМ? проблема возможно у тебя только в голове. где инфа
    > как ТЫ делаешь?
    > какой у тебя запрос в "детали"? в мастере?

    Вы невнимательно прочитали?
  • sniknik © (28.12.12 11:49) [24]
    > Что значит зачем?
    зачем, значит, зачем. какой смысл мне делать проект, писать что-то свое чтобы убедится что у не работает у тебя? а если у меня заработает? ну вот давай проверим как будто я сделал, и говорю "все ок сделал стандартно, проблемы нет!". и?
  • sniknik © (28.12.12 11:50) [25]
    > Вы невнимательно прочитали?
    а ты?
  • VikOss © (28.12.12 11:51) [26]

    > с ЧЕМ? проблема возможно у тебя только в голове. где инфа
    > как ТЫ делаешь?
    > какой у тебя запрос в "детали"? в мастере?

    ClientDataset -мастер, второй, соответственно - деталь. Связь - по ключу, стандартно. В мастере сделайте выборку, неважно - селект траляля вере то то. И посмотрите. В мастере как положено ваша выборка, ок. А вот в деталях - ВСЕЕЕЕ! (Разумеется отображаться будут только привязанные к мастеру данные, просто отключите связь, да и по размеру выкачанных данных видно будет сразу)
  • VikOss © (28.12.12 11:55) [27]

    > зачем, значит, зачем. какой смысл мне делать проект, писать
    > что-то свое чтобы убедится что у не работает у тебя? а если
    > у меня заработает? ну вот давай проверим как будто я сделал,
    >  и говорю "все ок сделал стандартно, проблемы нет!". и?

    Согласен, тогда чем же вы помочь хотели? Проблему я уже тут расписал подробнее некуда. Запросы в мастере и деталях не имеют значения, ибо проблема НЕ В НИХ. Проблема, ещё раз, в том, что мастер тянет ВСЕ данные из подчинённой, а не только привязанные по ключу.
  • Сергей М. © (28.12.12 11:58) [28]

    > В мастере сделайте выборку, неважно - селект траляля вере
    > то то


    Какой может быть селект для уже полученных и находящихся в локальном кеше данных ?


    > А вот в деталях - ВСЕЕЕЕ


    Значит по каким-то причинам подчиненный CDS у тебя либо

    - не получает от главного CDS значение вторичного ключа для фильтрации кешированного НД
    - не находит/не использует требуемый для фильтрации индекс
  • MsGuns © (28.12.12 12:01) [29]
    Два вопроса:
    1. Чем вызвано использование именно TClientDataSet, а не, допустим, TADODataSet ? Не есть ли это выдергивание гвоздей из доски сенокосилкой ?
    2. Если "глюк" "фильтрации" мастер-детал в кишках VCL, то что мешает организовать правильную подкачку деталей ручками (по AfterScroll например) вместо того чтобы упорно трясти грушу ?
  • Сергей М. © (28.12.12 12:05) [30]

    > по AfterScroll например


    ..что есть самое простое решение: получил текущее значение мастер-ключа и тут же отфильтровал подчиненный набор по соответствующему вторичному ключу
  • VikOss © (28.12.12 12:06) [31]

    > > В мастере сделайте выборку, неважно - селект траляля вере
    > > то то
    >
    >
    > Какой может быть селект для уже полученных и находящихся
    > в локальном кеше данных ?
    >
    >
    > > А вот в деталях - ВСЕЕЕЕ
    >
    >
    > Значит по каким-то причинам подчиненный CDS у тебя либо
    >
    > - не получает от главного CDS значение вторичного ключа
    > для фильтрации кешированного НД
    > - не находит/не использует требуемый для фильтрации индекс

    1. Селект - это и есть самое первое получение записей в кэш на клиента. С ним проблем нет. Сказал что надо - то и пришло.
    2. тут и есть проблема, что он там не получает и почему... связь мастер-деталь работает правильно, просто набор данных в кэш подчинённого заливается ЦЕЛИКОМ, игнорируя все связи...
  • VikOss © (28.12.12 12:11) [32]

    > Два вопроса:
    > 1. Чем вызвано использование именно TClientDataSet, а не,
    >  допустим, TADODataSet ? Не есть ли это выдергивание гвоздей
    > из доски сенокосилкой ?
    > 2. Если "глюк" "фильтрации" мастер-детал в кишках VCL, то
    > что мешает организовать правильную подкачку деталей ручками
    > (по AfterScroll например) вместо того чтобы упорно трясти
    > грушу ?
    >

    1. Не понял смысла. зачем мне АДО, он что, лучше? Проект на IB + FB, устраивает полностью, без привязки к АДО.
    2. Отключить связку, закачать детали, включить? Возможно, но думал что стандартными методами есть решение.
  • Сергей М. © (28.12.12 12:13) [33]

    > что он там не получает и почему


    Ну так выясни состав индексов и текущий индекс в подчиненном CDS сразу после позиционирования мастер-CDS на записи, например, в событии AfterScroll ..
  • VikOss © (28.12.12 12:14) [34]

    > ..что есть самое простое решение: получил текущее значение
    > мастер-ключа и тут же отфильтровал подчиненный набор по
    > соответствующему вторичному ключу

    А не многовато запросов на сервер будет?
  • VikOss © (28.12.12 12:19) [35]

    > Ну так выясни состав индексов и текущий индекс в подчиненном
    > CDS сразу после позиционирования мастер-CDS на записи, например,
    >  в событии AfterScroll ..

    Вы не поняли - всё он правильно позиционирует. Проблема именно при "закачке" данных с сервера. Если кто не работал с ClientDataSet-ом : Провайдер мастера сам формирует необходимый запрос на получение данных с подчинённого, там и настройки все есть. Только пофигу это всё, работает только на вложенных датасетах :-(
  • MsGuns © (28.12.12 12:25) [36]
    >VikOss ©   (28.12.12 12:11) [32]
    >1. Не понял смысла. зачем мне АДО, он что, лучше? Проект на IB + FB, устраивает полностью, без привязки к АДО.

    Бегло прочитал, не обратил внимание на интербэйз. Ну так замените на TIBDataSet/TFIBPlusDataSet

    >2. Отключить связку, закачать детали, включить? Возможно, но думал что стандартными методами есть решение.

    Оно есть, но у Вас почему-то глючит, очевидно из-за "плавающей" ошибки. Можно долго искать этот глюк, копаясь в особенности реализации связи мастер-детал в VCL например, а можно выкинуть весь этот сбоящий снегоход и просто встать на лыжи.
    Кстати, а почему Вы работая с FB,игнорите фибплас ?
  • sniknik © (28.12.12 12:26) [37]
    > ну вот давай проверим как будто я сделал, и говорю "все ок сделал стандартно, проблемы нет!". и?
    ну все, написал пример, проблемы нет. все как предполагал (или не вижу).

    > Не понял смысла. зачем мне АДО, он что, лучше?
    там точно есть 2 стиля мастер детайл про которые писал. не можешь найти у себя/используемых компонентах переходи. раз нужно, лучше не лучше вопрос лишний. раз надо...

    > Провайдер мастера сам формирует необходимый запрос на получение данных с подчинённого, там и настройки все есть.
    ???
    а зачем я его пишу? (вопрос в стиле ветки, только к автору ;))
  • VikOss © (28.12.12 12:29) [38]

    > Кстати, а почему Вы работая с FB,игнорите фибплас ?

    Дак они ж вроде платные, нет?
  • sniknik © (28.12.12 12:30) [39]
    +
    запрос "мастера"
    SELECT * FROM Reestr WHERE ID < 4726
    запрос "детайля"
    SELECT * FROM ReestrResp WHERE ReestrID = :ReestrID
    связка ReestrID -> ID, усе Ок.
 
Конференция "Базы" » ClientDataSet [D7, FB2.1]
Есть новые Нет новых   [119669   +104][b:0][p:0.001]