|
|
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Люблю TclientDataset, но не могу никак добиться создания поля в открытом наборе (созданном через CreateDataset, например). Как-то ковырялся в коде, пришел к умозаключению, что это в принципе невозможно из-за проверки на активность и выдаче ошибки в этом случае в функциях создания полей. Или ошибся? Кто-нибудь достигал каких-то в этом результатов? Интересует возможность создания хотя бы калькулируемых полей, про ftData уж и не заикаюсь... .. на открытом датасете. .. D7. может что-то в других версиях изменилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:19 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
А в чем смысл данного ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:21 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
А в чём проблема закрыть сначала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:21 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Michael LongneckА в чём проблема закрыть сначала? закрыл - потерял данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:26 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Мне с похожим вопросом помогли тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:28 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: V.Borzov > Здравствуйте! > > Люблю TclientDataset, Напрасно. Есть In-Memory датасеты (если пользуетесь по этой причине). Не забывайте, что приложение, использующее этот компонент, тянет за собой MIDAS.DLL. > но не могу никак добиться создания поля в открытом наборе (созданном через > CreateDataset, например). Задлянафига? Нельзя разве создать вычисляемое поле до открытия датасета? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:28 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
ДжибсА в чем смысл данного ? В том, что нужно для работы пару калькулируемых полей. или даже тройку. а данные получены из другого датасета, копированием, причем не вручную, когда создаешь сам поля + createdataset, а более-менее универсальным типа такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Тут ничего не поделаешь, кроме как создать эти поля после копирования. До копирования создавать структуру тоже бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:31 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Midas.dll можно и не брать - uses MidasLib Другое дело, что все поля можно и заранее создать. Что собственно требуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:33 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: miksoft > Мне с похожим вопросом помогли тут > Автор хочет не просто в рантайме, а на открытом датасете такое проделать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:34 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_L Напрасно. Есть In-Memory датасеты (если пользуетесь по этой причине). Главный ньюанс - скорость копирования из источника в этот датасет. пример привел выше. Пример работает мухой. все остальные, че видел - тупо копируют по полям перебором. Для образования пойдет, но в промышленности - не катит ИМХО. Все остальное и здесь катит прекрасно и быстро, вот только заданный вопрос в subj пока и смущает. Senya_L Не забывайте, что приложение, использующее этот компонент, тянет за собой MIDAS.DLL. uses MidalLib Senya_L Задлянафига? Нельзя разве создать вычисляемое поле до открытия датасета? Чуть выше привел пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:35 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
miksoftМне с похожим вопросом помогли тут Не, нам AdoQuery, совсем другой компонент, к тому же, исходное условие такое, что нет возможности сначала задать структуру, потом скопировать (если только не тупым перебором исходного датасета, что означает потерю скорости в разы или даже десятки раз по сравнению с тем примером, что я написал (readdataset). В FibDataset, к примеру, даже есть CreateCalcField, точное название не помню. напрямую задачу решает, но у себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:40 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: V.Borzov > Главный ньюанс - скорость копирования из источника в этот датасет. > пример привел выше. Пример работает мухой. все остальные, че видел - тупо > копируют по полям перебором. Для образования пойдет, но в промышленности - > не катит ИМХО. Все остальное и здесь катит прекрасно и быстро, вот только > заданный вопрос в subj пока и смущает. > У нас с Вами разные TClientDataSet. Дайте мне свой :) Вообще-то этот компонент прожорливый, зараза. И по использованию пямяти, и по сетевому трафику. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:41 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Заберите данные в один cds. Скопируйте поля (поля а не данные) в другой. Добавьте туда по вкусу вычисляемые. Потом через cds2.Data := cds1.Data передайте. В чём проблема не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:54 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_L > Автор: V.Borzov > Главный ньюанс - скорость копирования из источника в этот датасет. > пример привел выше. Пример работает мухой. все остальные, че видел - тупо > копируют по полям перебором. Для образования пойдет, но в промышленности - > не катит ИМХО. Все остальное и здесь катит прекрасно и быстро, вот только > заданный вопрос в subj пока и смущает. > У нас с Вами разные TClientDataSet. Дайте мне свой :) Я б сделал свой, да не вышло. Иногда выходит патчик залить в какой-нибудь стандартный компонент и исходник программе подсунуть, иногда нет. fib патчики, для FastReport, для quickreport, черт бы его побрал, для Indy и даже для ActnMan и ActnCtrl прокатило. А здесь, точно не помню, но затык случился, вроде бы, как раз в том куске, что прилинковывается через midaslib (или midas.dll). Полностью переписать разве только если в типа TMYClientDataset. Но по этому пути тоже отлуп случился. Кажется, опять же с тем же самым - неполный доступ к исходникам. В итоге пришел к выводу, что НИЗЗЯ. но надежда умирает последней... Senya_L Вообще-то этот компонент прожорливый, зараза. И по использованию пямяти, и по сетевому трафику. ПО памяти - не скажу в сравнении. А по трафику - для этого собираюсь использовать другие компоненты. То есть, руку набил пока в использовании его именно как "датасет в памяти". То есть, взял из TFibDataset тупо, по-быстрому скопировал (см.пример) и пошел работать себе дальше. сам TFibDataset уже не нужен. Причины: а) скопировал, и не паришься, пофиг тебе все коннекты и дисконнекты, б) универсализация какая-никакая кода.. Мало ли, придется когда-нибудь уйти с Fib, к примеру.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:54 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Michael LongneckЗаберите данные в один cds. Скопируйте поля (поля а не данные) в другой. Добавьте туда по вкусу вычисляемые. Потом через cds2.Data := cds1.Data передайте. В чём проблема не вижу. Это было в попытках решить. Проблема в том, что второй датасет потеряет полностью структуру при попытке копирования из первого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 15:56 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Ничего нигде не теряется. Я добавляю любые поля Calc и InternalCalc и всё работает проблем. Никакая структура не теряется. Другое дело если свовсем разная структура, то естественно копировать руками. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 16:07 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_L Вообще-то этот компонент прожорливый, зараза. И по использованию пямяти, и по сетевому трафику. То есть, идея такая: если есть стандартный код/компонент, который принципиально не хуже/особо не хуже, то лучше юзать его. Если нет, то лучше юзать какое-нибудь приемлемое бесплатное с открытыми кодами. Если нет, то что-нибудь за деньги, с открытыми кодами. Если нет, то убиться. Если нет, то писать свое. Пока я на первом "если" в сомнениях мечусь. и только с одним этим вопросом. ну есть еще один обнаруженный мааахонький, некорректная работа с int64, при сортировке кажется. Но обходится, или даже в следующих версиях Delphi, может, пофикшено... Больше проблем не находил. Ну в рамках решаемой задачи "датасет в памяти". Насчет памяти, опять же - взял таблицу DB формата. Начал копирование. Где-то после копирования трети данных встало с ошибкой. После применения патчика к TClientDataset стало копировать где-то половину, потом встает. Памяти расходуется при этом меньше, чем сама таблица DB имеет. засчет обрезания строк. Результ вполне приемлемый для TClientDataset. Сравнивал с Memdata от Jedi, там получше, но непырципиально. C MemTable от EhLib не связывался по причине второго "если". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 16:08 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
[quot Michael Longneck]Ничего нигде не теряется. Я добавляю любые поля Calc и InternalCalc и всё работает проблем. Никакая структура не теряется. Другое дело если свовсем разная структура, то естественно копировать руками. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 16:27 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
AnyDac хорошая библиотека. Но платная. Соответственно при разработках фрилансеру её надо закладывать в стоимость проекта. И прочая. А с глупыми подростками спорить не надо. После подобной аргументации, обычно, можно сразу переходить к кулачному изложению сути вопроса (ибо статусный поединок и есть скрытая цель такой аргументации). Правило - к каждой цели - подходящие средства. :) PS Сорри модераторам, неудержался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 16:49 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_L У нас с Вами разные TClientDataSet. Дайте мне свой :) Вообще-то этот компонент прожорливый, зараза. И по использованию пямяти, и по сетевому трафику. По исползованию памяти и трафику не компонент прожорлив, а ваши запросы, обратно TClientDataSet отправляет лишь дельту изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 18:36 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: Танцор Пасадобля > > По исползованию памяти и трафику не компонент прожорлив, > а ваши запросы, обратно TClientDataSet отправляет лишь дельту > изменений. > Я говорю про обычные селект-запросы "в лоб". Используемый в TClientDataSet механизм передачи и хранения данных неоптимален. В свое время наткнулся на тормоза с получением большого больших рекордсетов (был молод и тянул на клиента много строк, обычное дело). Стал лазить по исходникам, понял, что с большими объемами там лучше не связываться. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 18:47 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_LСтал лазить по исходникам, понял, что с большими объемами там лучше не связываться. Большие объемы - это сколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 18:51 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: Танцор Пасадобля > Большие объемы - это сколько? > "Больше-меньше" - понятие относительное. :) Лучше вообще не связываться. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 19:12 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
Senya_L "Больше-меньше" - понятие относительное. :) Лучше вообще не связываться. Почему так мрачно? Нормально cds работает если грамотно использовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 19:18 |
|
||
|
Создать поле в открытом TClientDataset ?
|
|||
|---|---|---|---|
|
#18+
> Автор: Танцор Пасадобля > Почему так мрачно? Нормально cds работает если грамотно > использовать... > Если грамотно, то все можно к делу приладить. Но создалось в свое время ощущение (возможно, неправильное), что MIDAS вообще сама по себе уж слишком узко заточена была. Эдакая наивная идея, что можно "взять" данные с сервера, изменить/добавить/удалить и отослать дельту. Не все укладывается в эту схему. Считайте это за религию и что не сумел приготовить :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 19:28 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=84&tid=2039907]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 434ms |

| 0 / 0 |
