|
|
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Добрый день! Возможно ли выгрузить данные из DBGrida без визуализации перехода по строкам. Делаю вот так: Код: pascal 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. Может есть другой способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:33 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666...выгрузить данные из DBGrida без визуализации перехода по строкам... Схема: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:44 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666Возможно ли выгрузить данные из DBGrida без визуализации перехода по строкам. Можно: DisableControls, EnableControls. Либо отвязать datasource.dataset и затем вернуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:45 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666, DataSource.enabled:=false; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:45 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
чччДВалерий666...выгрузить данные из DBGrida без визуализации перехода по строкам... Схема: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Access violation.... Очевидно процедуре First;(Next,Last и пр.) не нравится отключение контролов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:49 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
DesWindВалерий666, DataSource.enabled:=false;Спасибо, помогло! К вечеру уже мозг не соображает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:51 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666Очевидно процедуре First;(Next,Last и пр.) не нравится отключение контролов... Не очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:52 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
wadmanВалерий666Очевидно процедуре First;(Next,Last и пр.) не нравится отключение контролов... Не очевидно. Почему тогда именно на этом моменте вылазит критическая ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 16:56 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666wadmanпропущено... Не очевидно. Почему тогда именно на этом моменте вылазит критическая ошибка? Очевидно идёт обращение к не тому участку памяти или к не инициализированному объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:11 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666wadmanпропущено... Не очевидно. Почему тогда именно на этом моменте вылазит критическая ошибка? Не вылазит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:20 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
обращаться в методе класса к экземпляру класса - моветонВалерий666 Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 17:42 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666Почему тогда именно на этом моменте вылазит критическая ошибка? Пока переделанный указанным образом код не приведешь, гадать представляется бессмысленным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 19:50 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Валерий666, Я так делаю: Код: pascal 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. Ничего не мигает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 22:34 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, забыл про BookMark: Код: pascal 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. Единственное что после GotoBookmark, выделенная строка встает посередине таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 02:11 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Единственное что после GotoBookmark, выделенная строка встает посередине таблицы.[/quot] А оно тебе надо? DBGridRowPos:=TGridCracker(DBGrid1).Row; ... if DBGridRowPos>0 then ScrollActiveToRow(DBGrid1,DBGridRowPos); ... procedure TForm.ScrollActiveToRow(Grid : TDBGrid; ARow : Integer); var FTitleOffset, SDistance : Integer; NewRect : TRect; RowHeight : Integer; NewRow : Integer; begin with TGridCracker(Grid) do begin NewRow:= Row; FTitleOffset:= 0; if dgTitles in Options then inc(FTitleOffset); if ARow = NewRow then Exit; with DataLink, DataSet do try BeginUpdate; Scroll(NewRow - ARow); if (NewRow - ARow) < 0 then ActiveRecord:= 0 else ActiveRecord:= VisibleRowCount - 1; SDistance:= MoveBy(NewRow - ARow); NewRow:= NewRow - SDistance; MoveBy(ARow - ActiveRecord - FTitleOffset); RowHeight:= DefaultRowHeight; NewRect:= BoxRect(0, FTitleOffset, ColCount - 1, 1000); ScrollWindowEx(Handle, 0, - RowHeight * SDistance, @NewRect, @NewRect, 0, nil, SW_Invalidate); MoveColRow(Col, NewRow, False, False); finally EndUpdate; end; end; end; У меня по одному проекту тоже так хотели, а потом пришли у выводу, что стандартное поведение лучше... Это проявляется при появлении в наборе новых записей, которые остаются вне отображаемой части таблицы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 09:37 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
Вот из-за таких выеживаний с датасетом, на ровном месте, забил на идеологию DB-Aware полностью. Сделал себе некий аналог датасета, который больше напоминает динамический массив записей. Поначалу вообще так и было, но оказалось неудобным подгонять методы по разные имена полей. В итоге поля создаются динамически. Для визуализации данных использую VirtualTreeView в режиме грида. Связывает грид и мой датасет некое подобие DS, но понятие "текущей записи" есть только для самого грида. Все что ниже никакой такой ограниченности не имеет. Соответственно бегать по этому "датасету" легко и просто. В данном случае вместо Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Было бы нечто вроде Код: pascal 1. 2. 3. 4. 5. 6. Заполняется данными этот буфер вот таким кодом: Код: pascal 1. 2. 3. 4. 5. 6. QSel - это компонент выполняющий запрос но имеющий буфер только на одну запись. В FibPlus это TpFIBQuery CDV.Sync в частности синхронизирует поля грида с датасетом, приводит количество записей в дереве к количеству записей в CDS и дергает перерисовку у дерева. После чего дерево, если ему нужно отрисовать ячейку, просто запрашивает ее значение в CDS. Так же через CDV привязан StatusBar - после выполнения запроса в него автоматом пишется количество записей в CDS и время выполнения запроса. Из удобных моментов - эти компоненты по сути не имеют никакой прривязки к базам. Есть например такой метод CDS.DirList('c:\DATA\*.txt'); Получит список файлов по маске и создаст на каждый файл по записи в CDS. Какую информацию при этом он запишет - зависит от наличия в CDS полей. Предопределенные имена FILE_NAME FILE_SIZE FILE_DATE есть поле - соответственная инфа запишется. Нет поля - не запишется. Или, создаем поле CHECK_BOX - в первой колонке появляется галка чекбокса. Установка\снятие меняет значение в поле CHECK_BOX которое Integer. Потом легко пробегаемся по буферу выбирая записи с чеком или без. Поле ROW_FONTSTYLE отвечает за стиль шрифта в соответствующей строке. Поле ROW_FONTSTYLE - цвет шрифта в строке. Пишем туда например "RED" - и строка красная. В контекстное меню грида автоматически привязываются пункты меню "поиск по подстроке" и "сохранить в файл", сделано несколько форматов сохранения - XLS, CSV, TXT, INI, DBF - и они автоматические есть в любом гриде который прицеплен к этой системе. Ну и т.д. Конечно, это один из колхозных велосипедов, и он не допилен в должной степени что бы его можно было без стестения показывать другим :) но вот уже более 10 лет я радуюсь что теперь не связан с парадигмой DB-Aware, в том виде какой заложен в Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:31 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
fraks, Так в гриде тоже можно определенные строки выбрать. У меня приблизительно так: Код: pascal 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. Правда грид "слегка" подпилен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 11:30 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
BaliТак в гриде тоже можно определенные строки выбрать. Да я собственно не про строки, а про то что в наше время работать с буфером лежащим в ОЗУ как с магнитной лентой споследовательным доступом - это мягко говоря писец... И отвязка датасета от контролов ассоциируется со снятием ленты с одного магнитофона и перестановкой на другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 11:37 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
fraksДа я собственно не про строки, а про то что в наше время работать с буфером лежащим в ОЗУ как с магнитной лентой споследовательным доступом - это мягко говоря писец... И отвязка датасета от контролов ассоциируется со снятием ленты с одного магнитофона и перестановкой на другой. Никакого писца, сколько лет, никаких проблем. От контролов ничего не отвязывается, или Disablecontrols не фэншую. Что теперь, если нужно выбранные строки, в excel или в csv выгрузить еще один Dataset для экспорта создавать - вот это да, писец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 14:50 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
fraksBaliТак в гриде тоже можно определенные строки выбрать. Да я собственно не про строки, а про то что в наше время работать с буфером лежащим в ОЗУ как с магнитной лентой споследовательным доступом - это мягко говоря писец... И отвязка датасета от контролов ассоциируется со снятием ленты с одного магнитофона и перестановкой на другой. Если в наше время буфер превышает размеры доступной памяти, то только последовательно. И печально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 15:10 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
andreymxобращаться в методе класса к экземпляру класса - моветон Так, да, согласен, но есть же Self. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2018, 01:50 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
schifraksпропущено... Да я собственно не про строки, а про то что в наше время работать с буфером лежащим в ОЗУ как с магнитной лентой споследовательным доступом - это мягко говоря писец... И отвязка датасета от контролов ассоциируется со снятием ленты с одного магнитофона и перестановкой на другой. Если в наше время буфер превышает размеры доступной памяти, то только последовательно. И печально. Если запрос, даже случайно, может вернуть массив данных превышающий "размеры доступной памяти" - то конечно, это повод работать с результатами построчно, последовательно. И тут нужно вообще забыть про какие-то датасеты и буферизацию. И для этого есть соответствующие компоненты, правда не во всех библиотеках доступа. Но при чем тут рассматриваемая ситуация когда у нас это дело прицеплено к гриду? У нас что там забуферизировано данных больше чем есть памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2018, 20:51 |
|
||
|
Delphi 7. DBGrid экспорт данных
|
|||
|---|---|---|---|
|
#18+
fraks, авторНо при чем тут рассматриваемая ситуация когда у нас это дело прицеплено к гриду? У нас что там забуферизировано данных больше чем есть памяти? Почему это так удивляет? Обычное состояние на больших наборах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2018, 23:58 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=121&tid=2041377]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 408ms |

| 0 / 0 |
