Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi - DBGrid

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте! НЕобходимо сделать сортировку в DBGrid по алфавиту или по возрастанию (по номеру если). Именно сортировка а не фильтровка. Нужно очень. Кто знает, подскажите как сделать.. Можно прямо по нажатию на заголовок стобца или в событии OnClick отдельной кнопки.
 
Добавлено:
если это невозможно сделать в DBGrid'e тогда может на уровне данных в DataSet или Table'e

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 11:08 07-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
Почитай это
_http://delphiworld.narod.ru/base/dbgrid_sort.html

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 14:32 07-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlxMonster
Это немного не то. Ну во первых оно не работает , а можно сделать так что бы сортировка была просто по нажатию кнопки?

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 19:36 07-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
А что конкретно не работает? Я сделал все аккуратно как там написано и все заработало.  
Попробуй сделать точно так как там сказано.
Выслать проект почтой?

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 20:23 07-05-2006 | Исправлено: AlxMonster, 20:24 07-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Выдает ошибку в строке Application.Initializate при попытке скомпилировать. Если можно то да. Заранее спасибо

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 20:24 07-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
какая у тебя БД?
какой доступ к базе?
на счёт сетки, используй EhLib

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 20:41 07-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DroN_S
БД у меня Paradox 7 (*.db)
Доступ через DataSource и Table

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 20:43 07-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
Пример отправил.

Цитата:
Выдает ошибку в строке Application.Initializate при попытке скомпилировать.

Это вряд ли. Ошибка возникает если перед выполнением кусочка кода, добавленного в FormCreate, таблица открыта. Перед этим ее надо закрывать.

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 21:26 07-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
мой тебе совет, переходи как минимум на Access и используй TQuery !!!!!!
и ещё, если ты собираешься работать с БД в дальнейшем, то без знания языка SQL даже не пытайся что то делать...

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 21:29 07-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Во все примерах используется HeaderControl а можно это сделать не используя его? просто указывая например в Edit'e столбец и по нажатию на Button выполнять сортировку?

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 13:35 08-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
На самом деле используй тогда TQuery с запросом типа "select * from mytable order by myfield" или поищи компонент с готовой сортировкой.

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 17:50 08-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
поищи компонент с готовой сортировкой

EhLib

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 20:44 08-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Скачал пакет BvComp (т.е. EhLib) - уда входит bvDbGrid. Но при компиляции выдает ошибку в файле bvDBGrid.pas в строке  OldCOL:=Cell.X, ошибка - [Error] bvDBGrid.pas(1680): Left side cannot be assigned to в чем дело?

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 21:49 08-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
Версия EhLib, Delphi ?
 
Навскидку могу посоветовать поставить опцию {$J+} или что то же самое {$WRITEABLECONST ON}

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 22:00 08-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delphi 7, EhLib (bvComp - версия не написана нигде)

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 07:37 09-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
EhLib он и в африке EhLib!!!!
сходи в варезник и найди нормальную версию библиотеки....
либо скачай с официалке, там до 4-й версии есть бесплатный пакет.... на семёрку подойдёт

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 08:44 09-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может кто знает, где можно почитать про экспорт данных из DBgrid'a в Excel или в Word, если возможно. Заранее спасибо

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 15:02 10-05-2006
AlxMonster



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
Если по-простому (по крайней мере, для меня) юзай сам Excel через Ole.  
Можно еще использовать какой-нибудь компонент для отчетов с возможностью экспорта в Excel. Хоть тот же Fast Report (поищи в варезнике)

Всего записей: 1575 | Зарегистр. 14-02-2006 | Отправлено: 17:26 10-05-2006
fixer84



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vovanzp
Как экспортировать содержимое DBGrid в Excel или ClipBoard.  

Всего записей: 214 | Зарегистр. 30-07-2005 | Отправлено: 19:05 10-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
fixer84
Взял с сайта который ты дал код, переделал его под себя (чтобы сразу в Excel экспорт был). Вот, что получилось. При нажатии на кнопку вылетает сообщение типа "Access vioalation at address ....... in module 'Project 1'. Read of address ....", и одновременно  с этим открывается Excel и туда вставляется все из буфера обмена =-0. В чем дело? Может ошибка в коде. Хелп плиз
 
procedure TForm1.Button1Click(Sender: TObject);
var
  bm: TBookmark;
  col, row: Integer;
  sline: string;
  mem: TMemo;
  ExcelApp: Variant;
begin
 DBGrid1.DataSource.DataSet.DisableControls;
  bm := DBGrid1.DataSource.DataSet.GetBookmark;
  DBGrid1.DataSource.DataSet.First;
 
    ExcelApp := CreateOleObject('Excel.Application');
    ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
    ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Тест';
 
  // Сперва отправляем данные в memo
  // работает быстрее, чем отправлять их напрямую в Excel
  mem := TMemo.Create(Self);
  mem.Visible := false;
  mem.Parent := Form1;
  mem.Clear;
  sline := '';
 
  // добавляем информацию для имён колонок
  for col := 0 to DBGrid1.FieldCount-1 do
    sline := sline + DBGrid1.Fields[col].DisplayLabel + #9;
  mem.Lines.Add(sline);
 
  // получаем данные из memo
  for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
  begin
    sline := '';
    for col := 0 to DBGrid1.FieldCount-1 do
      sline := sline + DBGrid1.Fields[col].AsString + #9;
    mem.Lines.Add(sline);
    DBGrid1.DataSource.DataSet.Next;
  end;
 
    ExcelApp.Workbooks[1].WorkSheets['Тест'].Paste;
    ExcelApp.Visible := true;
 
  FreeAndNil(ExcelApp);
  DBGrid1.DataSource.DataSet.GotoBookmark(bm);
  DBGrid1.DataSource.DataSet.FreeBookmark(bm);
  DBGrid1.DataSource.DataSet.EnableControls;
end;

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 21:23 10-05-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi - DBGrid


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru