Перейти к содержанию

Delphi>DBGrid


Рекомендуемые сообщения

А сам как думаешь? Могут ли атрибуты,например, одной из таблиц реляционной базы данных стать записями этой таблицы? Вся суть этой модели данных тогда меняется...это уже не реляционная модель данных, а нечто новое.

Ссылка на комментарий

можно, только тебе придётся свой компонент создать или поискать, может уже кто написал такой.

а я в StringGrid выводил, если очень надо было, допустим, дохрена колонок, а записей только пара-тройка, тоже думал, как бы этот DBGrid повернуть набок, а новый компонент писать неохота, вывернулся так, думал временно, потом переделаю, но так и осталось до сих пор в StringGrid`е

Ссылка на комментарий
А реализовать всю эту кухню с помощью DBGrid просто так невозможно, если конечно не лазить в исходники VCL, менять их или наследовать этот класс. Легче ИМХО занести результат запроса TQuery в массив, и вывести его наоборот в TStringGrid. Можно конечно обойтись и без массива, а напрямую сортировать записи.

http://www.progz.ru/forum/index.php?showtopic=26943

Ссылка на комментарий

а я в StringGrid выводил, если очень надо было, допустим, дохрена колонок, а записей только пара-тройка, тоже думал, как бы этот DBGrid повернуть набок, а новый компонент писать неохота, вывернулся так, думал временно, потом переделаю, но так и осталось до сих пор в StringGrid`е

другой Grid бы какой-нибудь крутой

Ссылка на комментарий

Lexp1, ты выполняешь проект СУБД или просто у тебя в проекте одна таблица? В теории реляционных баз данных есть чёткие определения элементов таблицы реляционной БД - атрибута, записи. В частности, указывается, что запись - это строка таблицы базы данных, а атрибут - это столбец базы данных, другого не дано. Для чего менять местами эти определения, если всё это уже постулировано?

Ссылка на комментарий

Мда, отоброзить данные с малым количеством записей и огромным количеством полей с помощью StringGrida себя мучить, рядом с DBGrid-ом выстраивать в столбцы с Edit-ми тоже как-то не хочется...

NextDBInspector в NextSuit-е пакете вроде норм отображает в столбец, но только одну запись, хотелось бы есчё какой-нибудь вариант... :yes:

Ссылка на комментарий
рядом с DBGrid-ом выстраивать в столбцы с Edit-ми тоже как-то не хочется...

У тебя же полей записи мало (там кстати не Edit'ы должны быть, а DBEdit'ы).

Можно ещё сделать ещё одну форму для ввода данных в поля очередной записи, на ней и разместить все DBEdit'ы? Поместить на первую форму DBNavigator и обрабатывать нажатия кнопок DBNavigator'а, например, по нажатию кнопки "+" в DBNavigator'e, добавлять новую запись, открывать форму для заполнения полей новой записи, затем по нажатию кнопки "Сохранить" на форме ввода, сохранять изменения, закрывать 2-ю форму и показывать 1-ю, главную форму.

Ссылка на комментарий
рядом с DBGrid-ом выстраивать в столбцы с Edit-ми тоже как-то не хочется...

У тебя же полей записи мало (там кстати не Edit'ы должны быть, а DBEdit'ы).

Можно ещё сделать ещё одну форму для ввода данных в поля очередной записи, на ней и разместить все DBEdit'ы? Поместить на первую форму DBNavigator и обрабатывать нажатия кнопок DBNavigator'а, например, по нажатию кнопки "+" в DBNavigator'e, добавлять новую запись, открывать форму для заполнения полей новой записи, затем по нажатию кнопки "Сохранить" на форме ввода, сохранять изменения, закрывать 2-ю форму и показывать 1-ю, главную форму.

Я так и делал, но мне нужно отоброзить сразу все записи...

Ещё раз, полей много, записей мало...

Ссылка на комментарий

я тут пошарил у себя, не нашёл, но помню, что было предельно просто, примерно так:

  StringGrid1.RowCount := DataModule1.Table1.FieldCount+1;
StringGrid1.ColCount := 2; //вместо 2 надо DataModule1.Table1.RecCount+1 и соответственно ниже доработать
StringGrid1.ColWidths[0] := 80;
StringGrid1.ColWidths[1] := 200;
for i:=0 to DataModule1.Table1.FieldCount-1 do
begin
StringGrid1.Cols[0].Strings[i+1] := DataModule1.Table1.Fields[i].FullName;
StringGrid1.Cols[1].Strings[i+1] := DataModule1.Table1.Fields[i].AsString;
end;

Ссылка на комментарий

Спасибо.

Доработал:


AdvStringGrid1.RowCount:=datamodule1.Qu_Otchet.FieldCount+1;
AdvStringGrid1.ColCount:=datamodule1.Qu_Otchet.RecordCount+1;
AdvStringGrid1.ColWidths[0]:=80;
datamodule1.Qu_Otchet.First;
for J := 1 to datamodule1.Qu_Otchet.RecordCount do
begin
for I := 0 to datamodule1.Qu_Otchet.FieldCount-1 do
begin
AdvStringGrid1.Cols[0].Strings[i+1]:=datamodule1.Qu_Otchet.Fields[i].FullName;
AdvStringGrid1.Cols[j].Strings[i+1]:=datamodule1.Qu_Otchet.Fields[i].AsString;
end;
datamodule1.Qu_Otchet.Next;
end;

работает

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...